@shival99/z-ui 2.1.32 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/fesm2022/shival99-z-ui-components-z-accordion.mjs +41 -25
  2. package/fesm2022/shival99-z-ui-components-z-accordion.mjs.map +1 -1
  3. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs +176 -97
  4. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs.map +1 -1
  5. package/fesm2022/shival99-z-ui-components-z-avatar.mjs +71 -40
  6. package/fesm2022/shival99-z-ui-components-z-avatar.mjs.map +1 -1
  7. package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs +26 -15
  8. package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs.map +1 -1
  9. package/fesm2022/shival99-z-ui-components-z-button-group.mjs +33 -21
  10. package/fesm2022/shival99-z-ui-components-z-button-group.mjs.map +1 -1
  11. package/fesm2022/shival99-z-ui-components-z-button.mjs +32 -19
  12. package/fesm2022/shival99-z-ui-components-z-button.mjs.map +1 -1
  13. package/fesm2022/shival99-z-ui-components-z-calendar.mjs +289 -172
  14. package/fesm2022/shival99-z-ui-components-z-calendar.mjs.map +1 -1
  15. package/fesm2022/shival99-z-ui-components-z-card.mjs +34 -24
  16. package/fesm2022/shival99-z-ui-components-z-card.mjs.map +1 -1
  17. package/fesm2022/shival99-z-ui-components-z-chat.mjs +85 -47
  18. package/fesm2022/shival99-z-ui-components-z-chat.mjs.map +1 -1
  19. package/fesm2022/shival99-z-ui-components-z-checkbox.mjs +56 -31
  20. package/fesm2022/shival99-z-ui-components-z-checkbox.mjs.map +1 -1
  21. package/fesm2022/shival99-z-ui-components-z-code.mjs +29 -16
  22. package/fesm2022/shival99-z-ui-components-z-code.mjs.map +1 -1
  23. package/fesm2022/shival99-z-ui-components-z-command.mjs +34 -19
  24. package/fesm2022/shival99-z-ui-components-z-command.mjs.map +1 -1
  25. package/fesm2022/shival99-z-ui-components-z-drawer.mjs +310 -88
  26. package/fesm2022/shival99-z-ui-components-z-drawer.mjs.map +1 -1
  27. package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs +32 -18
  28. package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs.map +1 -1
  29. package/fesm2022/shival99-z-ui-components-z-editor.mjs +118 -62
  30. package/fesm2022/shival99-z-ui-components-z-editor.mjs.map +1 -1
  31. package/fesm2022/shival99-z-ui-components-z-empty.mjs +31 -17
  32. package/fesm2022/shival99-z-ui-components-z-empty.mjs.map +1 -1
  33. package/fesm2022/shival99-z-ui-components-z-filter.mjs +81 -54
  34. package/fesm2022/shival99-z-ui-components-z-filter.mjs.map +1 -1
  35. package/fesm2022/shival99-z-ui-components-z-gallery.mjs +240 -132
  36. package/fesm2022/shival99-z-ui-components-z-gallery.mjs.map +1 -1
  37. package/fesm2022/shival99-z-ui-components-z-icon.mjs +39 -21
  38. package/fesm2022/shival99-z-ui-components-z-icon.mjs.map +1 -1
  39. package/fesm2022/shival99-z-ui-components-z-input.mjs +173 -95
  40. package/fesm2022/shival99-z-ui-components-z-input.mjs.map +1 -1
  41. package/fesm2022/shival99-z-ui-components-z-kanban.mjs +88 -47
  42. package/fesm2022/shival99-z-ui-components-z-kanban.mjs.map +1 -1
  43. package/fesm2022/shival99-z-ui-components-z-loading.mjs +31 -19
  44. package/fesm2022/shival99-z-ui-components-z-loading.mjs.map +1 -1
  45. package/fesm2022/shival99-z-ui-components-z-marquee.mjs +42 -23
  46. package/fesm2022/shival99-z-ui-components-z-marquee.mjs.map +1 -1
  47. package/fesm2022/shival99-z-ui-components-z-media-player.mjs +87 -45
  48. package/fesm2022/shival99-z-ui-components-z-media-player.mjs.map +1 -1
  49. package/fesm2022/shival99-z-ui-components-z-menu.mjs +126 -67
  50. package/fesm2022/shival99-z-ui-components-z-menu.mjs.map +1 -1
  51. package/fesm2022/shival99-z-ui-components-z-metric-card.mjs +42 -23
  52. package/fesm2022/shival99-z-ui-components-z-metric-card.mjs.map +1 -1
  53. package/fesm2022/shival99-z-ui-components-z-modal.mjs +144 -80
  54. package/fesm2022/shival99-z-ui-components-z-modal.mjs.map +1 -1
  55. package/fesm2022/shival99-z-ui-components-z-pagination.mjs +45 -24
  56. package/fesm2022/shival99-z-ui-components-z-pagination.mjs.map +1 -1
  57. package/fesm2022/shival99-z-ui-components-z-popover.mjs +90 -57
  58. package/fesm2022/shival99-z-ui-components-z-popover.mjs.map +1 -1
  59. package/fesm2022/shival99-z-ui-components-z-qrcode.mjs +51 -29
  60. package/fesm2022/shival99-z-ui-components-z-qrcode.mjs.map +1 -1
  61. package/fesm2022/shival99-z-ui-components-z-radio.mjs +36 -20
  62. package/fesm2022/shival99-z-ui-components-z-radio.mjs.map +1 -1
  63. package/fesm2022/shival99-z-ui-components-z-scrollarea.mjs +27 -15
  64. package/fesm2022/shival99-z-ui-components-z-scrollarea.mjs.map +1 -1
  65. package/fesm2022/shival99-z-ui-components-z-select.mjs +239 -138
  66. package/fesm2022/shival99-z-ui-components-z-select.mjs.map +1 -1
  67. package/fesm2022/shival99-z-ui-components-z-show-more.mjs +38 -21
  68. package/fesm2022/shival99-z-ui-components-z-show-more.mjs.map +1 -1
  69. package/fesm2022/shival99-z-ui-components-z-skeleton-auto.mjs +42 -23
  70. package/fesm2022/shival99-z-ui-components-z-skeleton-auto.mjs.map +1 -1
  71. package/fesm2022/shival99-z-ui-components-z-skeleton.mjs +35 -19
  72. package/fesm2022/shival99-z-ui-components-z-skeleton.mjs.map +1 -1
  73. package/fesm2022/shival99-z-ui-components-z-steps.mjs +55 -31
  74. package/fesm2022/shival99-z-ui-components-z-steps.mjs.map +1 -1
  75. package/fesm2022/shival99-z-ui-components-z-switch.mjs +60 -33
  76. package/fesm2022/shival99-z-ui-components-z-switch.mjs.map +1 -1
  77. package/fesm2022/shival99-z-ui-components-z-table.mjs +10875 -0
  78. package/fesm2022/shival99-z-ui-components-z-table.mjs.map +1 -0
  79. package/fesm2022/shival99-z-ui-components-z-tabs.mjs +534 -0
  80. package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +1 -0
  81. package/fesm2022/shival99-z-ui-components-z-tags.mjs +72 -46
  82. package/fesm2022/shival99-z-ui-components-z-tags.mjs.map +1 -1
  83. package/fesm2022/shival99-z-ui-components-z-timeline.mjs +254 -0
  84. package/fesm2022/shival99-z-ui-components-z-timeline.mjs.map +1 -0
  85. package/fesm2022/shival99-z-ui-components-z-toast.mjs +53 -31
  86. package/fesm2022/shival99-z-ui-components-z-toast.mjs.map +1 -1
  87. package/fesm2022/shival99-z-ui-components-z-tooltip.mjs +133 -56
  88. package/fesm2022/shival99-z-ui-components-z-tooltip.mjs.map +1 -1
  89. package/fesm2022/shival99-z-ui-components-z-upload.mjs +63 -36
  90. package/fesm2022/shival99-z-ui-components-z-upload.mjs.map +1 -1
  91. package/fesm2022/shival99-z-ui-i18n.mjs +2 -0
  92. package/fesm2022/shival99-z-ui-i18n.mjs.map +1 -1
  93. package/fesm2022/shival99-z-ui-pipes.mjs +18 -18
  94. package/fesm2022/shival99-z-ui-services.mjs +35 -31
  95. package/fesm2022/shival99-z-ui-services.mjs.map +1 -1
  96. package/package.json +16 -16
  97. package/types/shival99-z-ui-components-z-autocomplete.d.ts +2 -2
  98. package/types/shival99-z-ui-components-z-card.d.ts +1 -2
  99. package/types/shival99-z-ui-components-z-drawer.d.ts +20 -2
  100. package/types/shival99-z-ui-components-z-gallery.d.ts +1 -2
  101. package/types/shival99-z-ui-components-z-select.d.ts +2 -2
  102. package/types/shival99-z-ui-components-z-table.d.ts +2293 -0
  103. package/types/shival99-z-ui-components-z-tabs.d.ts +92 -0
  104. package/types/shival99-z-ui-components-z-timeline.d.ts +71 -0
@@ -1 +1 @@
1
- {"version":3,"file":"shival99-z-ui-components-z-chat.mjs","sources":["../../../../libs/core-ui/components/z-chat/z-chat.variants.ts","../../../../libs/core-ui/components/z-chat/z-chat.component.ts","../../../../libs/core-ui/components/z-chat/z-chat.component.html","../../../../libs/core-ui/components/z-chat/shival99-z-ui-components-z-chat.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zChatWrapperVariants = cva('z-chat fixed z-[95] pointer-events-none', {\n variants: {\n zPosition: {\n 'bottom-right': '',\n 'bottom-left': '',\n },\n },\n defaultVariants: {\n zPosition: 'bottom-right',\n },\n});\n\nexport const zChatPanelVariants = cva(\n 'absolute bottom-16 flex flex-col overflow-hidden rounded-2xl shadow-2xl transition-all duration-200',\n {\n variants: {\n zPosition: {\n 'bottom-right': 'right-0 origin-bottom-right',\n 'bottom-left': 'left-0 origin-bottom-left',\n },\n zSize: {\n sm: 'h-[28rem] w-[20rem]',\n default: 'h-[35rem] w-[25rem]',\n lg: 'h-[39rem] w-[29rem]',\n },\n zOpen: {\n true: 'pointer-events-auto visible translate-y-0 scale-100 opacity-100',\n false: 'pointer-events-none invisible translate-y-3 scale-95 opacity-0',\n },\n },\n defaultVariants: {\n zPosition: 'bottom-right',\n zSize: 'default',\n zOpen: false,\n },\n }\n);\n\nexport const zChatFabVariants = cva(\n 'relative inline-flex size-14 items-center justify-center rounded-full shadow-lg ring-1 ring-black/5 transition-all duration-200 hover:scale-[1.03] active:scale-95',\n {\n variants: {\n zOpen: {\n true: 'bg-background text-foreground border border-border shadow-xl dark:border-white/15 dark:bg-[#2b2b2b] dark:text-white',\n false: 'from-primary via-primary to-primary/75 bg-gradient-to-br text-white shadow-xl',\n },\n },\n defaultVariants: {\n zOpen: false,\n },\n }\n);\n\nexport type ZChatVariants = VariantProps<typeof zChatPanelVariants>;\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n model,\n OnDestroy,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZIconComponent, type ZIcon } from '@shival99/z-ui/components/z-icon';\nimport { ZModalComponent } from '@shival99/z-ui/components/z-modal';\nimport { zMergeClasses, zTransform, zUuid } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { NgScrollbar } from 'ngx-scrollbar';\nimport type {\n ZChatAttachment,\n ZChatMessage,\n ZChatOffset,\n ZChatPosition,\n ZChatSendEvent,\n ZChatSize,\n ZChatSuggestion,\n} from './z-chat.types';\nimport { zChatFabVariants, zChatPanelVariants, zChatWrapperVariants } from './z-chat.variants';\n\nconst DEFAULT_SUGGESTIONS: ZChatSuggestion[] = [\n {\n label: 'i18n_z_ui_chat_ai_suggestion_1',\n prompt: 'Create release notes from recent commits',\n icon: 'lucideSparkles',\n },\n {\n label: 'i18n_z_ui_chat_ai_suggestion_2',\n prompt: 'Suggest test cases for a new feature',\n icon: 'lucideFlaskConical',\n },\n { label: 'i18n_z_ui_chat_ai_suggestion_3', prompt: 'Generate a concise PR summary', icon: 'lucideGitPullRequest' },\n];\n\n@Component({\n selector: 'z-chat',\n imports: [FormsModule, TranslatePipe, ZIconComponent, ZModalComponent, NgScrollbar],\n standalone: true,\n templateUrl: './z-chat.component.html',\n styleUrl: './z-chat.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'z-chat block',\n '(document:keydown.escape)': 'onEscapeKey()',\n },\n exportAs: 'zChat',\n})\nexport class ZChatComponent implements OnDestroy {\n public readonly class = input<ClassValue>('');\n public readonly zOpen = model(false);\n public readonly zMessages = model<ZChatMessage[]>([]);\n public readonly zTitle = input('i18n_z_ui_chat_ai_title');\n public readonly zSubtitle = input('i18n_z_ui_chat_ai_subtitle');\n public readonly zPlaceholder = input('i18n_z_ui_chat_ai_placeholder');\n public readonly zPosition = input<ZChatPosition>('bottom-right');\n public readonly zOffset = input<ZChatOffset>({});\n public readonly zSize = input<ZChatSize>('default');\n public readonly zSuggestions = input<ZChatSuggestion[]>(DEFAULT_SUGGESTIONS);\n public readonly zShowSuggestions = input(true, { transform: zTransform });\n public readonly zShowPulse = input(true, { transform: zTransform });\n public readonly zDisabled = input(false, { transform: zTransform });\n public readonly zLoading = input(false, { transform: zTransform });\n public readonly zAllowAttachments = input(true, { transform: zTransform });\n public readonly zAcceptedFiles = input('image/*,.pdf,.doc,.docx,.txt,.csv,.xlsx');\n public readonly zAutoReply = input(true, { transform: zTransform });\n public readonly zAutoReplyDelay = input(1200);\n public readonly zFabIcon = input<ZIcon>('lucideMessageSquareDot');\n public readonly zBotIcon = input<ZIcon>('lucideBot');\n public readonly zSendIcon = input<ZIcon>('lucideArrowUp');\n\n public readonly zSend = output<ZChatSendEvent>();\n public readonly zResponse = output<ZChatMessage>();\n public readonly zToggle = output<boolean>();\n public readonly zClear = output<void>();\n\n protected readonly draftMessage = signal('');\n protected readonly showRipple = signal(false);\n protected readonly attachments = signal<ZChatAttachment[]>([]);\n protected readonly isComposerExpanded = signal(false);\n protected readonly isComposerOverflowing = signal(false);\n protected readonly isPreviewVisible = signal(false);\n protected readonly previewImage = signal<{ url: string; name: string; size: number } | null>(null);\n\n private readonly _mockTyping = signal(false);\n private readonly _messagesScrollbarRef = viewChild<NgScrollbar>('messagesScrollbar');\n private readonly _chatInputRef = viewChild<ElementRef<HTMLTextAreaElement>>('chatInput');\n private readonly _fileInputRef = viewChild<ElementRef<HTMLInputElement>>('fileInput');\n\n private _mockReplyTimer: ReturnType<typeof setTimeout> | null = null;\n private _rippleTimer: ReturnType<typeof setTimeout> | null = null;\n private _scrollTimer: ReturnType<typeof setTimeout> | null = null;\n\n protected readonly wrapperClasses = computed(() =>\n zMergeClasses(zChatWrapperVariants({ zPosition: this.zPosition() }), this.class())\n );\n\n protected readonly wrapperTop = computed(() => this._resolveOffsetValue('top'));\n protected readonly wrapperRight = computed(() => this._resolveOffsetValue('right'));\n protected readonly wrapperBottom = computed(() => this._resolveOffsetValue('bottom'));\n protected readonly wrapperLeft = computed(() => this._resolveOffsetValue('left'));\n\n protected readonly panelClasses = computed(() =>\n zChatPanelVariants({\n zPosition: this.zPosition(),\n zSize: this.zSize(),\n zOpen: this.zOpen(),\n })\n );\n\n protected readonly fabClasses = computed(() =>\n zChatFabVariants({\n zOpen: this.zOpen(),\n })\n );\n\n protected readonly isTyping = computed(() => this.zLoading() || this._mockTyping());\n protected readonly canSend = computed(\n () => (!!this.draftMessage().trim() || this.attachments().length > 0) && !this.zDisabled() && !this.isTyping()\n );\n\n protected readonly hasMessages = computed(() => this.zMessages().length > 0);\n protected readonly showEmptyState = computed(() => !this.hasMessages() && this.zShowSuggestions());\n protected readonly previewImageSizeLabel = computed(() => {\n const preview = this.previewImage();\n return preview ? this.formatFileSize(preview.size) : '';\n });\n\n public ngOnDestroy(): void {\n if (this._mockReplyTimer) {\n clearTimeout(this._mockReplyTimer);\n }\n if (this._rippleTimer) {\n clearTimeout(this._rippleTimer);\n }\n if (this._scrollTimer) {\n clearTimeout(this._scrollTimer);\n }\n const filesInMessages = this.zMessages().flatMap(item => item.files ?? []);\n this._releaseAttachmentUrls(filesInMessages);\n this._releaseAttachmentUrls(this.attachments());\n }\n\n public open(): void {\n if (this.zOpen()) {\n return;\n }\n this._toggle(true);\n }\n\n public close(): void {\n if (!this.zOpen()) {\n return;\n }\n this._toggle(false);\n }\n\n public clearMessages(): void {\n const filesInMessages = this.zMessages().flatMap(item => item.files ?? []);\n this._releaseAttachmentUrls(filesInMessages);\n this.zMessages.set([]);\n this.zClear.emit();\n }\n\n protected onToggle(): void {\n this._toggle(!this.zOpen());\n }\n\n protected onSuggestionSelect(item: ZChatSuggestion): void {\n this.draftMessage.set((item.prompt ?? item.label).trim());\n this.onSendMessage();\n }\n\n protected onClickAttach(): void {\n this._fileInputRef()?.nativeElement.click();\n }\n\n protected onFileChange(event: Event): void {\n const inputEl = event.target as HTMLInputElement;\n const { files } = inputEl;\n if (!files || files.length === 0) {\n return;\n }\n\n this._appendFiles(Array.from(files));\n inputEl.value = '';\n }\n\n protected onTextareaPaste(event: ClipboardEvent): void {\n if (!this.zAllowAttachments()) {\n return;\n }\n const items = event.clipboardData?.items;\n if (!items || items.length === 0) {\n return;\n }\n\n const files: File[] = [];\n Array.from(items).forEach(item => {\n if (item.kind === 'file') {\n const file = item.getAsFile();\n if (file) {\n files.push(file);\n }\n }\n });\n\n if (files.length > 0) {\n event.preventDefault();\n this._appendFiles(files);\n }\n }\n\n protected removeAttachment(id: string): void {\n const target = this.attachments().find(item => item.id === id);\n if (target?.previewUrl) {\n URL.revokeObjectURL(target.previewUrl);\n }\n this.attachments.update(files => files.filter(item => item.id !== id));\n }\n\n protected formatFileSize(size: number): string {\n if (size < 1024) {\n return `${size} B`;\n }\n if (size < 1024 * 1024) {\n return `${(size / 1024).toFixed(1)} KB`;\n }\n if (size < 1024 * 1024 * 1024) {\n return `${(size / (1024 * 1024)).toFixed(1)} MB`;\n }\n return `${(size / (1024 * 1024 * 1024)).toFixed(1)} GB`;\n }\n\n protected isImageAttachment(file: ZChatAttachment): boolean {\n return file.type.startsWith('image/');\n }\n\n protected openImagePreview(file: ZChatAttachment): void {\n if (!file.previewUrl || !this.isImageAttachment(file)) {\n return;\n }\n this.previewImage.set({\n url: file.previewUrl,\n name: file.name,\n size: file.size,\n });\n this.isPreviewVisible.set(true);\n }\n\n protected closeImagePreview(): void {\n setTimeout(() => {\n this.isPreviewVisible.set(false);\n this.previewImage.set(null);\n }, 300);\n }\n\n protected onInputKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n this.onSendMessage();\n }\n }\n\n protected onTextareaInput(event: Event): void {\n const textarea = event.target as HTMLTextAreaElement;\n textarea.style.height = 'auto';\n const nextHeight = Math.min(textarea.scrollHeight, 66);\n textarea.style.height = `${nextHeight}px`;\n textarea.style.overflowY = textarea.scrollHeight > 66 ? 'auto' : 'hidden';\n this.isComposerExpanded.set(nextHeight > 44 || textarea.value.includes('\\n'));\n this.isComposerOverflowing.set(textarea.scrollHeight > nextHeight + 1);\n }\n\n protected onSendMessage(): void {\n const message = this.draftMessage().trim();\n if (!message && this.attachments().length === 0) {\n return;\n }\n if (!this.canSend()) {\n return;\n }\n\n const attachedFiles = this.attachments().map(file => ({\n ...file,\n // Keep message preview URLs alive after composer files are cleared.\n previewUrl: this._createMessagePreviewUrl(file),\n file: undefined,\n }));\n const messageContent = message || `Attached ${attachedFiles.length} file(s).`;\n const userMessage = this._createMessage('user', messageContent, attachedFiles);\n const nextMessages = [...this.zMessages(), userMessage];\n this.zMessages.set(nextMessages);\n this._ensureBottomVisible();\n this.draftMessage.set('');\n this._releaseAttachmentUrls(this.attachments());\n this.attachments.set([]);\n const inputEl = this._chatInputRef()?.nativeElement;\n if (inputEl) {\n inputEl.style.height = '66px';\n inputEl.style.overflowY = 'hidden';\n }\n this.isComposerExpanded.set(false);\n this.isComposerOverflowing.set(false);\n this.zSend.emit({ message: messageContent, files: attachedFiles, messages: nextMessages });\n\n if (this.zAutoReply()) {\n this._simulateReply(messageContent, attachedFiles.length);\n }\n\n this._focusInputSoon();\n }\n\n private _toggle(isOpen: boolean): void {\n this.zOpen.set(isOpen);\n this.zToggle.emit(isOpen);\n this._triggerRipple();\n\n if (isOpen) {\n this._focusInputSoon();\n requestAnimationFrame(() => {\n this._scheduleScrollToBottom(250);\n });\n }\n }\n\n private _createMessage(role: ZChatMessage['role'], content: string, files?: ZChatAttachment[]): ZChatMessage {\n return {\n id: zUuid(),\n role,\n content,\n files,\n createdAt: Date.now(),\n };\n }\n\n private _simulateReply(userMessage: string, fileCount: number): void {\n if (this._mockReplyTimer) {\n clearTimeout(this._mockReplyTimer);\n }\n this._mockTyping.set(true);\n const delay = Math.max(200, this.zAutoReplyDelay());\n\n this._mockReplyTimer = setTimeout(() => {\n this._mockTyping.set(false);\n const botMessage = this._createMessage('assistant', this._buildMockReply(userMessage, fileCount));\n this.zMessages.update(messages => [...messages, botMessage]);\n this.zResponse.emit(botMessage);\n this._ensureBottomVisible();\n }, delay);\n }\n\n private _buildMockReply(message: string, fileCount: number): string {\n const normalized = message.toLowerCase();\n\n if (fileCount > 0) {\n return `Received ${fileCount} attachment(s). I can summarize, extract key points, or draft a reply from these files.`;\n }\n if (normalized.includes('deploy') || normalized.includes('release')) {\n return 'Deployment checklist: run lint, build artifact, smoke test staging, then promote to production.';\n }\n if (normalized.includes('bug') || normalized.includes('error')) {\n return 'Please share logs, repro steps, expected behavior, and current environment so I can triage precisely.';\n }\n if (normalized.includes('test')) {\n return 'I suggest coverage for happy path, validation failures, edge cases, and retry/error handling.';\n }\n return 'Got it. I can help you break this task into actionable steps and propose code changes.';\n }\n\n private _triggerRipple(): void {\n this.showRipple.set(true);\n if (this._rippleTimer) {\n clearTimeout(this._rippleTimer);\n }\n this._rippleTimer = setTimeout(() => this.showRipple.set(false), 350);\n }\n\n protected onMessagesScrollbarInit(): void {\n this._ensureBottomVisible();\n }\n\n protected onEscapeKey(): void {\n if (this.previewImage()) {\n this.closeImagePreview();\n }\n }\n\n private _scheduleScrollToBottom(delay = 0, duration = 300): void {\n if (this._scrollTimer) {\n clearTimeout(this._scrollTimer);\n }\n this._scrollTimer = setTimeout(() => {\n this._scrollToBottom(duration);\n }, delay);\n }\n\n private _ensureBottomVisible(): void {\n this._scrollToBottom(0);\n requestAnimationFrame(() => {\n this._scrollToBottom(0);\n this._scheduleScrollToBottom(90, 0);\n });\n }\n\n private _scrollToBottom(duration = 300): void {\n const scrollbar = this._messagesScrollbarRef();\n if (!scrollbar) {\n return;\n }\n void scrollbar.scrollTo({\n bottom: 0,\n duration,\n easing: { x1: 0.25, y1: 0.1, x2: 0.25, y2: 1 },\n });\n }\n\n private _focusInputSoon(): void {\n setTimeout(() => this._chatInputRef()?.nativeElement.focus(), 50);\n }\n\n private _releaseAttachmentUrls(files: ZChatAttachment[]): void {\n files.forEach(file => {\n if (file.previewUrl) {\n URL.revokeObjectURL(file.previewUrl);\n }\n });\n }\n\n private _appendFiles(files: File[]): void {\n const nextFiles: ZChatAttachment[] = files.map(file => ({\n id: zUuid(),\n name: file.name,\n size: file.size,\n type: file.type,\n previewUrl: file.type.startsWith('image/') ? URL.createObjectURL(file) : undefined,\n file,\n }));\n\n this.attachments.update(current => [...current, ...nextFiles]);\n }\n\n private _createMessagePreviewUrl(file: ZChatAttachment): string | undefined {\n if (!this.isImageAttachment(file)) {\n return undefined;\n }\n if (file.file) {\n return URL.createObjectURL(file.file);\n }\n return file.previewUrl;\n }\n\n private _resolveOffsetValue(side: keyof ZChatOffset): string | null {\n const override = this.zOffset()[side];\n if (override !== undefined && override !== null && override !== '') {\n return typeof override === 'number' ? `${override}px` : String(override);\n }\n\n const defaults =\n this.zPosition() === 'bottom-left'\n ? { top: null, right: null, bottom: '1.25rem', left: '1.5rem' }\n : { top: null, right: '1.5rem', bottom: '1.25rem', left: null };\n\n return defaults[side];\n }\n}\n","<div\n [class]=\"wrapperClasses()\"\n [style.top]=\"wrapperTop()\"\n [style.right]=\"wrapperRight()\"\n [style.bottom]=\"wrapperBottom()\"\n [style.left]=\"wrapperLeft()\">\n <div class=\"relative\">\n <section class=\"z-chat-panel-shell\" [class]=\"panelClasses()\">\n <header class=\"from-primary/95 to-primary/75 text-primary-foreground bg-gradient-to-r px-4 py-3.5\">\n <div class=\"flex items-start justify-between gap-3\">\n <div class=\"min-w-0\">\n <div class=\"flex items-center gap-2\">\n <span\n class=\"bg-primary-foreground/15 relative inline-flex size-8 shrink-0 items-center justify-center rounded-full\">\n <z-icon [zType]=\"zBotIcon()\" zSize=\"16\" class=\"text-primary-foreground\" />\n <span\n class=\"ring-primary inline-block size-2.5 rounded-full bg-emerald-300 ring-2\"\n style=\"position: absolute; right: -0.0625rem; bottom: -0.0625rem\"></span>\n </span>\n <h3 class=\"truncate text-sm font-semibold\">{{ zTitle() | translate }}</h3>\n </div>\n </div>\n <div class=\"flex items-center gap-1\">\n <button\n type=\"button\"\n class=\"text-primary-foreground/90 hover:bg-primary-foreground/15 inline-flex size-8 cursor-pointer items-center justify-center rounded-md transition\"\n (click)=\"clearMessages()\"\n title=\"{{ 'i18n_z_ui_chat_ai_new_chat' | translate }}\">\n <z-icon zType=\"lucideRefreshCcw\" zSize=\"17\" />\n </button>\n <button\n type=\"button\"\n class=\"text-primary-foreground/90 hover:bg-primary-foreground/15 inline-flex size-8 cursor-pointer items-center justify-center rounded-md transition\"\n (click)=\"close()\"\n title=\"{{ 'i18n_z_ui_chat_ai_close' | translate }}\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"18\" />\n </button>\n </div>\n </div>\n </header>\n\n <div class=\"z-chat-lower-shell\">\n <ng-scrollbar\n #messagesScrollbar\n (afterInit)=\"onMessagesScrollbarInit()\"\n class=\"z-chat-scrollbar z-chat-content-surface flex-1 overflow-x-hidden\"\n track=\"vertical\"\n orientation=\"vertical\"\n appearance=\"compact\"\n visibility=\"hover\">\n <div class=\"z-chat-messages\">\n @if (hasMessages()) {\n @for (item of zMessages(); track item.id) {\n <div\n class=\"z-chat-message z-chat-message--enter\"\n [class.justify-end]=\"item.role === 'user'\"\n [class.justify-start]=\"item.role === 'assistant'\">\n <div\n class=\"z-chat-message-bubble max-w-[88%] min-w-0 rounded-2xl px-3 py-2.5 text-sm leading-5 [overflow-wrap:anywhere] break-all shadow-xs\"\n [class.bg-primary]=\"item.role === 'user'\"\n [class.text-primary-foreground]=\"item.role === 'user'\"\n [class.rounded-br-md]=\"item.role === 'user'\"\n [class.bg-background]=\"item.role === 'assistant'\"\n [class.border-border/60]=\"item.role === 'assistant'\"\n [class.text-foreground]=\"item.role === 'assistant'\"\n [class.rounded-bl-md]=\"item.role === 'assistant'\"\n [class.border]=\"item.role === 'assistant'\">\n @if (item.files && item.files.length > 0) {\n <div class=\"mb-2 flex flex-col gap-1.5\">\n @for (file of item.files; track file.id) {\n <div\n class=\"flex items-center gap-2 rounded-[0.5rem] px-2 py-1.5 text-xs\"\n [class.bg-white/15]=\"item.role === 'user'\"\n [class.bg-muted/40]=\"item.role === 'assistant'\">\n @if (isImageAttachment(file) && file.previewUrl) {\n <img\n [src]=\"file.previewUrl\"\n [alt]=\"file.name\"\n class=\"size-8 cursor-pointer rounded-[0.5rem] object-cover\"\n (click)=\"openImagePreview(file)\"\n title=\"Click to preview\" />\n } @else {\n <span\n class=\"bg-background/80 text-muted-foreground inline-flex size-8 items-center justify-center rounded-[0.5rem]\"\n [class.bg-white/20]=\"item.role === 'user'\"\n [class.text-white]=\"item.role === 'user'\">\n <z-icon zType=\"lucideFileText\" zSize=\"14\" />\n </span>\n }\n <div class=\"min-w-0 flex-1\">\n <p class=\"truncate text-[0.6875rem] font-medium\">{{ file.name }}</p>\n <p class=\"truncate text-[0.625rem] opacity-80\">{{ formatFileSize(file.size) }}</p>\n </div>\n </div>\n }\n </div>\n }\n {{ item.content }}\n </div>\n </div>\n }\n } @else if (showEmptyState()) {\n <div class=\"flex h-full min-h-60 flex-col items-center justify-center px-2 text-center\">\n <div\n class=\"from-primary/20 to-primary/5 mb-3 inline-flex size-14 items-center justify-center rounded-full bg-gradient-to-br\">\n <z-icon zType=\"lucideBot\" zSize=\"28\" class=\"text-primary\" />\n </div>\n <h4 class=\"text-foreground text-sm font-semibold\">{{ 'i18n_z_ui_chat_ai_empty_title' | translate }}</h4>\n <p class=\"text-muted-foreground mt-1 text-xs\">{{ 'i18n_z_ui_chat_ai_empty_desc' | translate }}</p>\n\n @if (zSuggestions().length > 0) {\n <div class=\"mt-4 flex w-full flex-col gap-2\">\n @for (item of zSuggestions(); track item.label) {\n <button\n type=\"button\"\n class=\"z-chat-suggestion-item bg-background/95 hover:bg-background border-border/60 text-foreground flex w-full cursor-pointer items-center gap-2 rounded-xl border px-3 py-2 text-left text-xs transition hover:shadow-sm\"\n [style.animation-delay.ms]=\"$index * 70\"\n (click)=\"onSuggestionSelect(item)\">\n @if (item.icon) {\n <z-icon [zType]=\"item.icon!\" zSize=\"14\" class=\"text-primary shrink-0\" />\n }\n <span class=\"line-clamp-2\">{{ item.label | translate }}</span>\n </button>\n }\n </div>\n }\n </div>\n }\n\n @if (isTyping()) {\n <div class=\"z-chat-message z-chat-message--enter justify-start\">\n <div class=\"bg-background border-border/60 rounded-2xl rounded-bl-md border px-3 py-2\">\n <div class=\"flex items-center gap-1\">\n <span class=\"bg-muted-foreground/60 inline-block size-1.5 animate-bounce rounded-full\"></span>\n <span\n class=\"bg-muted-foreground/60 inline-block size-1.5 animate-bounce rounded-full\"\n style=\"animation-delay: 0.15s\"></span>\n <span\n class=\"bg-muted-foreground/60 inline-block size-1.5 animate-bounce rounded-full\"\n style=\"animation-delay: 0.3s\"></span>\n </div>\n </div>\n </div>\n }\n </div>\n </ng-scrollbar>\n\n <footer class=\"z-chat-footer-surface p-3\">\n @if (attachments().length > 0) {\n <div class=\"mb-2 flex max-h-32 flex-col gap-2 overflow-y-auto pr-1\">\n @for (file of attachments(); track file.id) {\n <div\n class=\"bg-muted/45 border-border/55 relative flex w-full items-center gap-2 rounded-[0.5rem] border px-2 py-1.5\">\n @if (isImageAttachment(file) && file.previewUrl) {\n <img\n [src]=\"file.previewUrl\"\n [alt]=\"file.name\"\n class=\"size-8 shrink-0 cursor-pointer rounded-[0.5rem] object-cover\"\n (click)=\"openImagePreview(file)\"\n title=\"Click to preview\" />\n } @else {\n <span\n class=\"bg-background text-muted-foreground inline-flex size-8 shrink-0 items-center justify-center rounded-[0.5rem]\">\n <z-icon zType=\"lucideFileText\" zSize=\"14\" />\n </span>\n }\n <div class=\"min-w-0 flex-1\">\n <p class=\"truncate text-[0.6875rem] font-medium\">{{ file.name }}</p>\n <p class=\"text-muted-foreground truncate text-[0.625rem]\">{{ formatFileSize(file.size) }}</p>\n </div>\n <button\n type=\"button\"\n class=\"bg-background/80 hover:bg-background text-muted-foreground inline-flex size-5 cursor-pointer items-center justify-center rounded-full transition\"\n (click)=\"removeAttachment(file.id)\">\n <z-icon zType=\"lucideX\" zSize=\"12\" />\n </button>\n </div>\n }\n </div>\n }\n\n <div class=\"z-chat-composer-shell\">\n <div class=\"z-chat-composer-main\" [class.z-chat-composer__field--overflow]=\"isComposerOverflowing()\">\n <textarea\n #chatInput\n class=\"z-chat-composer-textarea\"\n [placeholder]=\"zPlaceholder() | translate\"\n [disabled]=\"zDisabled()\"\n [ngModel]=\"draftMessage()\"\n (ngModelChange)=\"draftMessage.set($event)\"\n (input)=\"onTextareaInput($event)\"\n (paste)=\"onTextareaPaste($event)\"\n (keydown)=\"onInputKeydown($event)\"\n rows=\"3\"></textarea>\n </div>\n\n <div class=\"z-chat-composer-toolbar\">\n <div class=\"z-chat-composer-toolbar-left\">\n @if (zAllowAttachments()) {\n <input\n #fileInput\n type=\"file\"\n class=\"hidden\"\n [attr.accept]=\"zAcceptedFiles()\"\n multiple\n (change)=\"onFileChange($event)\" />\n <button\n type=\"button\"\n class=\"z-chat-composer-tool-btn\"\n [disabled]=\"zDisabled()\"\n (click)=\"onClickAttach()\"\n title=\"{{ 'i18n_z_ui_chat_ai_attach' | translate }}\">\n <z-icon zType=\"lucidePlus\" zSize=\"18\" />\n </button>\n }\n </div>\n\n <div class=\"z-chat-composer-toolbar-right\">\n <button\n type=\"button\"\n class=\"z-chat-composer-send-btn\"\n [disabled]=\"!canSend()\"\n (click)=\"onSendMessage()\"\n title=\"{{ 'i18n_z_ui_chat_ai_send' | translate }}\">\n <z-icon\n [zType]=\"isTyping() ? 'lucideLoaderCircle' : zSendIcon()\"\n zSize=\"16\"\n [class]=\"isTyping() ? 'animate-spin' : ''\" />\n </button>\n </div>\n </div>\n </div>\n </footer>\n </div>\n\n <z-modal\n [zVisible]=\"isPreviewVisible()\"\n [zTitle]=\"previewImage()?.name\"\n [zDescription]=\"previewImageSizeLabel()\"\n zWidth=\"min(92vw, 720px)\"\n [zHideFooter]=\"true\"\n [zMaskClosable]=\"true\"\n zOverlay=\"blur\"\n (zCancel)=\"closeImagePreview()\">\n <div class=\"z-chat-preview-modal-body\">\n <img [src]=\"previewImage()?.url\" [alt]=\"previewImage()?.name\" class=\"z-chat-preview-image\" />\n </div>\n </z-modal>\n </section>\n\n <button\n type=\"button\"\n class=\"pointer-events-auto cursor-pointer\"\n [class]=\"fabClasses()\"\n (click)=\"onToggle()\"\n [attr.aria-expanded]=\"zOpen()\"\n [attr.aria-label]=\"'i18n_z_ui_chat_ai_toggle' | translate\"\n title=\"{{ 'i18n_z_ui_chat_ai_toggle' | translate }}\">\n @if (zShowPulse() && !zOpen()) {\n <span class=\"bg-primary/30 absolute inset-0 animate-ping rounded-full\"></span>\n }\n\n @if (showRipple()) {\n <span class=\"bg-primary-foreground/30 absolute inset-0 animate-ping rounded-full\"></span>\n }\n\n <z-icon\n [zType]=\"zOpen() ? 'lucideX' : zFabIcon()\"\n zSize=\"24\"\n class=\"relative z-1 transition-transform duration-200\"\n [class.rotate-180]=\"zOpen()\" />\n </button>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shival99-z-ui-components-z-chat.mjs","sources":["../../../../libs/core-ui/components/z-chat/z-chat.variants.ts","../../../../libs/core-ui/components/z-chat/z-chat.component.ts","../../../../libs/core-ui/components/z-chat/z-chat.component.html","../../../../libs/core-ui/components/z-chat/shival99-z-ui-components-z-chat.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zChatWrapperVariants = cva('z-chat fixed z-[95] pointer-events-none', {\n variants: {\n zPosition: {\n 'bottom-right': '',\n 'bottom-left': '',\n },\n },\n defaultVariants: {\n zPosition: 'bottom-right',\n },\n});\n\nexport const zChatPanelVariants = cva(\n 'absolute bottom-16 flex flex-col overflow-hidden rounded-2xl shadow-2xl transition-all duration-200',\n {\n variants: {\n zPosition: {\n 'bottom-right': 'right-0 origin-bottom-right',\n 'bottom-left': 'left-0 origin-bottom-left',\n },\n zSize: {\n sm: 'h-[28rem] w-[20rem]',\n default: 'h-[35rem] w-[25rem]',\n lg: 'h-[39rem] w-[29rem]',\n },\n zOpen: {\n true: 'pointer-events-auto visible translate-y-0 scale-100 opacity-100',\n false: 'pointer-events-none invisible translate-y-3 scale-95 opacity-0',\n },\n },\n defaultVariants: {\n zPosition: 'bottom-right',\n zSize: 'default',\n zOpen: false,\n },\n }\n);\n\nexport const zChatFabVariants = cva(\n 'relative inline-flex size-14 items-center justify-center rounded-full shadow-lg ring-1 ring-black/5 transition-all duration-200 hover:scale-[1.03] active:scale-95',\n {\n variants: {\n zOpen: {\n true: 'bg-background text-foreground border border-border shadow-xl dark:border-white/15 dark:bg-[#2b2b2b] dark:text-white',\n false: 'from-primary via-primary to-primary/75 bg-gradient-to-br text-white shadow-xl',\n },\n },\n defaultVariants: {\n zOpen: false,\n },\n }\n);\n\nexport type ZChatVariants = VariantProps<typeof zChatPanelVariants>;\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n model,\n OnDestroy,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZIconComponent, type ZIcon } from '@shival99/z-ui/components/z-icon';\nimport { ZModalComponent } from '@shival99/z-ui/components/z-modal';\nimport { zMergeClasses, zTransform, zUuid } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { NgScrollbar } from 'ngx-scrollbar';\nimport type {\n ZChatAttachment,\n ZChatMessage,\n ZChatOffset,\n ZChatPosition,\n ZChatSendEvent,\n ZChatSize,\n ZChatSuggestion,\n} from './z-chat.types';\nimport { zChatFabVariants, zChatPanelVariants, zChatWrapperVariants } from './z-chat.variants';\n\nconst DEFAULT_SUGGESTIONS: ZChatSuggestion[] = [\n {\n label: 'i18n_z_ui_chat_ai_suggestion_1',\n prompt: 'Create release notes from recent commits',\n icon: 'lucideSparkles',\n },\n {\n label: 'i18n_z_ui_chat_ai_suggestion_2',\n prompt: 'Suggest test cases for a new feature',\n icon: 'lucideFlaskConical',\n },\n { label: 'i18n_z_ui_chat_ai_suggestion_3', prompt: 'Generate a concise PR summary', icon: 'lucideGitPullRequest' },\n];\n\n@Component({\n selector: 'z-chat',\n imports: [FormsModule, TranslatePipe, ZIconComponent, ZModalComponent, NgScrollbar],\n standalone: true,\n templateUrl: './z-chat.component.html',\n styleUrl: './z-chat.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'z-chat block',\n '(document:keydown.escape)': 'onEscapeKey()',\n },\n exportAs: 'zChat',\n})\nexport class ZChatComponent implements OnDestroy {\n public readonly class = input<ClassValue>('');\n public readonly zOpen = model(false);\n public readonly zMessages = model<ZChatMessage[]>([]);\n public readonly zTitle = input('i18n_z_ui_chat_ai_title');\n public readonly zSubtitle = input('i18n_z_ui_chat_ai_subtitle');\n public readonly zPlaceholder = input('i18n_z_ui_chat_ai_placeholder');\n public readonly zPosition = input<ZChatPosition>('bottom-right');\n public readonly zOffset = input<ZChatOffset>({});\n public readonly zSize = input<ZChatSize>('default');\n public readonly zSuggestions = input<ZChatSuggestion[]>(DEFAULT_SUGGESTIONS);\n public readonly zShowSuggestions = input(true, { transform: zTransform });\n public readonly zShowPulse = input(true, { transform: zTransform });\n public readonly zDisabled = input(false, { transform: zTransform });\n public readonly zLoading = input(false, { transform: zTransform });\n public readonly zAllowAttachments = input(true, { transform: zTransform });\n public readonly zAcceptedFiles = input('image/*,.pdf,.doc,.docx,.txt,.csv,.xlsx');\n public readonly zAutoReply = input(true, { transform: zTransform });\n public readonly zAutoReplyDelay = input(1200);\n public readonly zFabIcon = input<ZIcon>('lucideMessageSquareDot');\n public readonly zBotIcon = input<ZIcon>('lucideBot');\n public readonly zSendIcon = input<ZIcon>('lucideArrowUp');\n\n public readonly zSend = output<ZChatSendEvent>();\n public readonly zResponse = output<ZChatMessage>();\n public readonly zToggle = output<boolean>();\n public readonly zClear = output<void>();\n\n protected readonly draftMessage = signal('');\n protected readonly showRipple = signal(false);\n protected readonly attachments = signal<ZChatAttachment[]>([]);\n protected readonly isComposerExpanded = signal(false);\n protected readonly isComposerOverflowing = signal(false);\n protected readonly isPreviewVisible = signal(false);\n protected readonly previewImage = signal<{ url: string; name: string; size: number } | null>(null);\n\n private readonly _mockTyping = signal(false);\n private readonly _messagesScrollbarRef = viewChild<NgScrollbar>('messagesScrollbar');\n private readonly _chatInputRef = viewChild<ElementRef<HTMLTextAreaElement>>('chatInput');\n private readonly _fileInputRef = viewChild<ElementRef<HTMLInputElement>>('fileInput');\n\n private _mockReplyTimer: ReturnType<typeof setTimeout> | null = null;\n private _rippleTimer: ReturnType<typeof setTimeout> | null = null;\n private _scrollTimer: ReturnType<typeof setTimeout> | null = null;\n\n protected readonly wrapperClasses = computed(() =>\n zMergeClasses(zChatWrapperVariants({ zPosition: this.zPosition() }), this.class())\n );\n\n protected readonly wrapperTop = computed(() => this._resolveOffsetValue('top'));\n protected readonly wrapperRight = computed(() => this._resolveOffsetValue('right'));\n protected readonly wrapperBottom = computed(() => this._resolveOffsetValue('bottom'));\n protected readonly wrapperLeft = computed(() => this._resolveOffsetValue('left'));\n\n protected readonly panelClasses = computed(() =>\n zChatPanelVariants({\n zPosition: this.zPosition(),\n zSize: this.zSize(),\n zOpen: this.zOpen(),\n })\n );\n\n protected readonly fabClasses = computed(() =>\n zChatFabVariants({\n zOpen: this.zOpen(),\n })\n );\n\n protected readonly isTyping = computed(() => this.zLoading() || this._mockTyping());\n protected readonly canSend = computed(\n () => (!!this.draftMessage().trim() || this.attachments().length > 0) && !this.zDisabled() && !this.isTyping()\n );\n\n protected readonly hasMessages = computed(() => this.zMessages().length > 0);\n protected readonly showEmptyState = computed(() => !this.hasMessages() && this.zShowSuggestions());\n protected readonly previewImageSizeLabel = computed(() => {\n const preview = this.previewImage();\n return preview ? this.formatFileSize(preview.size) : '';\n });\n\n public ngOnDestroy(): void {\n if (this._mockReplyTimer) {\n clearTimeout(this._mockReplyTimer);\n }\n if (this._rippleTimer) {\n clearTimeout(this._rippleTimer);\n }\n if (this._scrollTimer) {\n clearTimeout(this._scrollTimer);\n }\n const filesInMessages = this.zMessages().flatMap(item => item.files ?? []);\n this._releaseAttachmentUrls(filesInMessages);\n this._releaseAttachmentUrls(this.attachments());\n }\n\n public open(): void {\n if (this.zOpen()) {\n return;\n }\n this._toggle(true);\n }\n\n public close(): void {\n if (!this.zOpen()) {\n return;\n }\n this._toggle(false);\n }\n\n public clearMessages(): void {\n const filesInMessages = this.zMessages().flatMap(item => item.files ?? []);\n this._releaseAttachmentUrls(filesInMessages);\n this.zMessages.set([]);\n this.zClear.emit();\n }\n\n protected onToggle(): void {\n this._toggle(!this.zOpen());\n }\n\n protected onSuggestionSelect(item: ZChatSuggestion): void {\n this.draftMessage.set((item.prompt ?? item.label).trim());\n this.onSendMessage();\n }\n\n protected onClickAttach(): void {\n this._fileInputRef()?.nativeElement.click();\n }\n\n protected onFileChange(event: Event): void {\n const inputEl = event.target as HTMLInputElement;\n const { files } = inputEl;\n if (!files || files.length === 0) {\n return;\n }\n\n this._appendFiles(Array.from(files));\n inputEl.value = '';\n }\n\n protected onTextareaPaste(event: ClipboardEvent): void {\n if (!this.zAllowAttachments()) {\n return;\n }\n const items = event.clipboardData?.items;\n if (!items || items.length === 0) {\n return;\n }\n\n const files: File[] = [];\n Array.from(items).forEach(item => {\n if (item.kind === 'file') {\n const file = item.getAsFile();\n if (file) {\n files.push(file);\n }\n }\n });\n\n if (files.length > 0) {\n event.preventDefault();\n this._appendFiles(files);\n }\n }\n\n protected removeAttachment(id: string): void {\n const target = this.attachments().find(item => item.id === id);\n if (target?.previewUrl) {\n URL.revokeObjectURL(target.previewUrl);\n }\n this.attachments.update(files => files.filter(item => item.id !== id));\n }\n\n protected formatFileSize(size: number): string {\n if (size < 1024) {\n return `${size} B`;\n }\n if (size < 1024 * 1024) {\n return `${(size / 1024).toFixed(1)} KB`;\n }\n if (size < 1024 * 1024 * 1024) {\n return `${(size / (1024 * 1024)).toFixed(1)} MB`;\n }\n return `${(size / (1024 * 1024 * 1024)).toFixed(1)} GB`;\n }\n\n protected isImageAttachment(file: ZChatAttachment): boolean {\n return file.type.startsWith('image/');\n }\n\n protected openImagePreview(file: ZChatAttachment): void {\n if (!file.previewUrl || !this.isImageAttachment(file)) {\n return;\n }\n this.previewImage.set({\n url: file.previewUrl,\n name: file.name,\n size: file.size,\n });\n this.isPreviewVisible.set(true);\n }\n\n protected closeImagePreview(): void {\n setTimeout(() => {\n this.isPreviewVisible.set(false);\n this.previewImage.set(null);\n }, 300);\n }\n\n protected onInputKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n this.onSendMessage();\n }\n }\n\n protected onTextareaInput(event: Event): void {\n const textarea = event.target as HTMLTextAreaElement;\n textarea.style.height = 'auto';\n const nextHeight = Math.min(textarea.scrollHeight, 66);\n textarea.style.height = `${nextHeight}px`;\n textarea.style.overflowY = textarea.scrollHeight > 66 ? 'auto' : 'hidden';\n this.isComposerExpanded.set(nextHeight > 44 || textarea.value.includes('\\n'));\n this.isComposerOverflowing.set(textarea.scrollHeight > nextHeight + 1);\n }\n\n protected onSendMessage(): void {\n const message = this.draftMessage().trim();\n if (!message && this.attachments().length === 0) {\n return;\n }\n if (!this.canSend()) {\n return;\n }\n\n const attachedFiles = this.attachments().map(file => ({\n ...file,\n // Keep message preview URLs alive after composer files are cleared.\n previewUrl: this._createMessagePreviewUrl(file),\n file: undefined,\n }));\n const messageContent = message || `Attached ${attachedFiles.length} file(s).`;\n const userMessage = this._createMessage('user', messageContent, attachedFiles);\n const nextMessages = [...this.zMessages(), userMessage];\n this.zMessages.set(nextMessages);\n this._ensureBottomVisible();\n this.draftMessage.set('');\n this._releaseAttachmentUrls(this.attachments());\n this.attachments.set([]);\n const inputEl = this._chatInputRef()?.nativeElement;\n if (inputEl) {\n inputEl.style.height = '66px';\n inputEl.style.overflowY = 'hidden';\n }\n this.isComposerExpanded.set(false);\n this.isComposerOverflowing.set(false);\n this.zSend.emit({ message: messageContent, files: attachedFiles, messages: nextMessages });\n\n if (this.zAutoReply()) {\n this._simulateReply(messageContent, attachedFiles.length);\n }\n\n this._focusInputSoon();\n }\n\n private _toggle(isOpen: boolean): void {\n this.zOpen.set(isOpen);\n this.zToggle.emit(isOpen);\n this._triggerRipple();\n\n if (isOpen) {\n this._focusInputSoon();\n requestAnimationFrame(() => {\n this._scheduleScrollToBottom(250);\n });\n }\n }\n\n private _createMessage(role: ZChatMessage['role'], content: string, files?: ZChatAttachment[]): ZChatMessage {\n return {\n id: zUuid(),\n role,\n content,\n files,\n createdAt: Date.now(),\n };\n }\n\n private _simulateReply(userMessage: string, fileCount: number): void {\n if (this._mockReplyTimer) {\n clearTimeout(this._mockReplyTimer);\n }\n this._mockTyping.set(true);\n const delay = Math.max(200, this.zAutoReplyDelay());\n\n this._mockReplyTimer = setTimeout(() => {\n this._mockTyping.set(false);\n const botMessage = this._createMessage('assistant', this._buildMockReply(userMessage, fileCount));\n this.zMessages.update(messages => [...messages, botMessage]);\n this.zResponse.emit(botMessage);\n this._ensureBottomVisible();\n }, delay);\n }\n\n private _buildMockReply(message: string, fileCount: number): string {\n const normalized = message.toLowerCase();\n\n if (fileCount > 0) {\n return `Received ${fileCount} attachment(s). I can summarize, extract key points, or draft a reply from these files.`;\n }\n if (normalized.includes('deploy') || normalized.includes('release')) {\n return 'Deployment checklist: run lint, build artifact, smoke test staging, then promote to production.';\n }\n if (normalized.includes('bug') || normalized.includes('error')) {\n return 'Please share logs, repro steps, expected behavior, and current environment so I can triage precisely.';\n }\n if (normalized.includes('test')) {\n return 'I suggest coverage for happy path, validation failures, edge cases, and retry/error handling.';\n }\n return 'Got it. I can help you break this task into actionable steps and propose code changes.';\n }\n\n private _triggerRipple(): void {\n this.showRipple.set(true);\n if (this._rippleTimer) {\n clearTimeout(this._rippleTimer);\n }\n this._rippleTimer = setTimeout(() => this.showRipple.set(false), 350);\n }\n\n protected onMessagesScrollbarInit(): void {\n this._ensureBottomVisible();\n }\n\n protected onEscapeKey(): void {\n if (this.previewImage()) {\n this.closeImagePreview();\n }\n }\n\n private _scheduleScrollToBottom(delay = 0, duration = 300): void {\n if (this._scrollTimer) {\n clearTimeout(this._scrollTimer);\n }\n this._scrollTimer = setTimeout(() => {\n this._scrollToBottom(duration);\n }, delay);\n }\n\n private _ensureBottomVisible(): void {\n this._scrollToBottom(0);\n requestAnimationFrame(() => {\n this._scrollToBottom(0);\n this._scheduleScrollToBottom(90, 0);\n });\n }\n\n private _scrollToBottom(duration = 300): void {\n const scrollbar = this._messagesScrollbarRef();\n if (!scrollbar) {\n return;\n }\n void scrollbar.scrollTo({\n bottom: 0,\n duration,\n easing: { x1: 0.25, y1: 0.1, x2: 0.25, y2: 1 },\n });\n }\n\n private _focusInputSoon(): void {\n setTimeout(() => this._chatInputRef()?.nativeElement.focus(), 50);\n }\n\n private _releaseAttachmentUrls(files: ZChatAttachment[]): void {\n files.forEach(file => {\n if (file.previewUrl) {\n URL.revokeObjectURL(file.previewUrl);\n }\n });\n }\n\n private _appendFiles(files: File[]): void {\n const nextFiles: ZChatAttachment[] = files.map(file => ({\n id: zUuid(),\n name: file.name,\n size: file.size,\n type: file.type,\n previewUrl: file.type.startsWith('image/') ? URL.createObjectURL(file) : undefined,\n file,\n }));\n\n this.attachments.update(current => [...current, ...nextFiles]);\n }\n\n private _createMessagePreviewUrl(file: ZChatAttachment): string | undefined {\n if (!this.isImageAttachment(file)) {\n return undefined;\n }\n if (file.file) {\n return URL.createObjectURL(file.file);\n }\n return file.previewUrl;\n }\n\n private _resolveOffsetValue(side: keyof ZChatOffset): string | null {\n const override = this.zOffset()[side];\n if (override !== undefined && override !== null && override !== '') {\n return typeof override === 'number' ? `${override}px` : String(override);\n }\n\n const defaults =\n this.zPosition() === 'bottom-left'\n ? { top: null, right: null, bottom: '1.25rem', left: '1.5rem' }\n : { top: null, right: '1.5rem', bottom: '1.25rem', left: null };\n\n return defaults[side];\n }\n}\n","<div\n [class]=\"wrapperClasses()\"\n [style.top]=\"wrapperTop()\"\n [style.right]=\"wrapperRight()\"\n [style.bottom]=\"wrapperBottom()\"\n [style.left]=\"wrapperLeft()\">\n <div class=\"relative\">\n <section class=\"z-chat-panel-shell\" [class]=\"panelClasses()\">\n <header class=\"from-primary/95 to-primary/75 text-primary-foreground bg-gradient-to-r px-4 py-3.5\">\n <div class=\"flex items-start justify-between gap-3\">\n <div class=\"min-w-0\">\n <div class=\"flex items-center gap-2\">\n <span\n class=\"bg-primary-foreground/15 relative inline-flex size-8 shrink-0 items-center justify-center rounded-full\">\n <z-icon [zType]=\"zBotIcon()\" zSize=\"16\" class=\"text-primary-foreground\" />\n <span\n class=\"ring-primary inline-block size-2.5 rounded-full bg-emerald-300 ring-2\"\n style=\"position: absolute; right: -0.0625rem; bottom: -0.0625rem\"></span>\n </span>\n <h3 class=\"truncate text-sm font-semibold\">{{ zTitle() | translate }}</h3>\n </div>\n </div>\n <div class=\"flex items-center gap-1\">\n <button\n type=\"button\"\n class=\"text-primary-foreground/90 hover:bg-primary-foreground/15 inline-flex size-8 cursor-pointer items-center justify-center rounded-md transition\"\n (click)=\"clearMessages()\"\n title=\"{{ 'i18n_z_ui_chat_ai_new_chat' | translate }}\">\n <z-icon zType=\"lucideRefreshCcw\" zSize=\"17\" />\n </button>\n <button\n type=\"button\"\n class=\"text-primary-foreground/90 hover:bg-primary-foreground/15 inline-flex size-8 cursor-pointer items-center justify-center rounded-md transition\"\n (click)=\"close()\"\n title=\"{{ 'i18n_z_ui_chat_ai_close' | translate }}\">\n <z-icon zType=\"lucideChevronDown\" zSize=\"18\" />\n </button>\n </div>\n </div>\n </header>\n\n <div class=\"z-chat-lower-shell\">\n <ng-scrollbar\n #messagesScrollbar\n (afterInit)=\"onMessagesScrollbarInit()\"\n class=\"z-chat-scrollbar z-chat-content-surface flex-1 overflow-x-hidden\"\n track=\"vertical\"\n orientation=\"vertical\"\n appearance=\"compact\"\n visibility=\"hover\">\n <div class=\"z-chat-messages\">\n @if (hasMessages()) {\n @for (item of zMessages(); track item.id) {\n <div\n class=\"z-chat-message z-chat-message--enter\"\n [class.justify-end]=\"item.role === 'user'\"\n [class.justify-start]=\"item.role === 'assistant'\">\n <div\n class=\"z-chat-message-bubble max-w-[88%] min-w-0 rounded-2xl px-3 py-2.5 text-sm leading-5 [overflow-wrap:anywhere] break-all shadow-xs\"\n [class.bg-primary]=\"item.role === 'user'\"\n [class.text-primary-foreground]=\"item.role === 'user'\"\n [class.rounded-br-md]=\"item.role === 'user'\"\n [class.bg-background]=\"item.role === 'assistant'\"\n [class.border-border/60]=\"item.role === 'assistant'\"\n [class.text-foreground]=\"item.role === 'assistant'\"\n [class.rounded-bl-md]=\"item.role === 'assistant'\"\n [class.border]=\"item.role === 'assistant'\">\n @if (item.files && item.files.length > 0) {\n <div class=\"mb-2 flex flex-col gap-1.5\">\n @for (file of item.files; track file.id) {\n <div\n class=\"flex items-center gap-2 rounded-[0.5rem] px-2 py-1.5 text-xs\"\n [class.bg-white/15]=\"item.role === 'user'\"\n [class.bg-muted/40]=\"item.role === 'assistant'\">\n @if (isImageAttachment(file) && file.previewUrl) {\n <img\n [src]=\"file.previewUrl\"\n [alt]=\"file.name\"\n class=\"size-8 cursor-pointer rounded-[0.5rem] object-cover\"\n (click)=\"openImagePreview(file)\"\n title=\"Click to preview\" />\n } @else {\n <span\n class=\"bg-background/80 text-muted-foreground inline-flex size-8 items-center justify-center rounded-[0.5rem]\"\n [class.bg-white/20]=\"item.role === 'user'\"\n [class.text-white]=\"item.role === 'user'\">\n <z-icon zType=\"lucideFileText\" zSize=\"14\" />\n </span>\n }\n <div class=\"min-w-0 flex-1\">\n <p class=\"truncate text-[0.6875rem] font-medium\">{{ file.name }}</p>\n <p class=\"truncate text-[0.625rem] opacity-80\">{{ formatFileSize(file.size) }}</p>\n </div>\n </div>\n }\n </div>\n }\n {{ item.content }}\n </div>\n </div>\n }\n } @else if (showEmptyState()) {\n <div class=\"flex h-full min-h-60 flex-col items-center justify-center px-2 text-center\">\n <div\n class=\"from-primary/20 to-primary/5 mb-3 inline-flex size-14 items-center justify-center rounded-full bg-gradient-to-br\">\n <z-icon zType=\"lucideBot\" zSize=\"28\" class=\"text-primary\" />\n </div>\n <h4 class=\"text-foreground text-sm font-semibold\">{{ 'i18n_z_ui_chat_ai_empty_title' | translate }}</h4>\n <p class=\"text-muted-foreground mt-1 text-xs\">{{ 'i18n_z_ui_chat_ai_empty_desc' | translate }}</p>\n\n @if (zSuggestions().length > 0) {\n <div class=\"mt-4 flex w-full flex-col gap-2\">\n @for (item of zSuggestions(); track item.label) {\n <button\n type=\"button\"\n class=\"z-chat-suggestion-item bg-background/95 hover:bg-background border-border/60 text-foreground flex w-full cursor-pointer items-center gap-2 rounded-xl border px-3 py-2 text-left text-xs transition hover:shadow-sm\"\n [style.animation-delay.ms]=\"$index * 70\"\n (click)=\"onSuggestionSelect(item)\">\n @if (item.icon) {\n <z-icon [zType]=\"item.icon!\" zSize=\"14\" class=\"text-primary shrink-0\" />\n }\n <span class=\"line-clamp-2\">{{ item.label | translate }}</span>\n </button>\n }\n </div>\n }\n </div>\n }\n\n @if (isTyping()) {\n <div class=\"z-chat-message z-chat-message--enter justify-start\">\n <div class=\"bg-background border-border/60 rounded-2xl rounded-bl-md border px-3 py-2\">\n <div class=\"flex items-center gap-1\">\n <span class=\"bg-muted-foreground/60 inline-block size-1.5 animate-bounce rounded-full\"></span>\n <span\n class=\"bg-muted-foreground/60 inline-block size-1.5 animate-bounce rounded-full\"\n style=\"animation-delay: 0.15s\"></span>\n <span\n class=\"bg-muted-foreground/60 inline-block size-1.5 animate-bounce rounded-full\"\n style=\"animation-delay: 0.3s\"></span>\n </div>\n </div>\n </div>\n }\n </div>\n </ng-scrollbar>\n\n <footer class=\"z-chat-footer-surface p-3\">\n @if (attachments().length > 0) {\n <div class=\"mb-2 flex max-h-32 flex-col gap-2 overflow-y-auto pr-1\">\n @for (file of attachments(); track file.id) {\n <div\n class=\"bg-muted/45 border-border/55 relative flex w-full items-center gap-2 rounded-[0.5rem] border px-2 py-1.5\">\n @if (isImageAttachment(file) && file.previewUrl) {\n <img\n [src]=\"file.previewUrl\"\n [alt]=\"file.name\"\n class=\"size-8 shrink-0 cursor-pointer rounded-[0.5rem] object-cover\"\n (click)=\"openImagePreview(file)\"\n title=\"Click to preview\" />\n } @else {\n <span\n class=\"bg-background text-muted-foreground inline-flex size-8 shrink-0 items-center justify-center rounded-[0.5rem]\">\n <z-icon zType=\"lucideFileText\" zSize=\"14\" />\n </span>\n }\n <div class=\"min-w-0 flex-1\">\n <p class=\"truncate text-[0.6875rem] font-medium\">{{ file.name }}</p>\n <p class=\"text-muted-foreground truncate text-[0.625rem]\">{{ formatFileSize(file.size) }}</p>\n </div>\n <button\n type=\"button\"\n class=\"bg-background/80 hover:bg-background text-muted-foreground inline-flex size-5 cursor-pointer items-center justify-center rounded-full transition\"\n (click)=\"removeAttachment(file.id)\">\n <z-icon zType=\"lucideX\" zSize=\"12\" />\n </button>\n </div>\n }\n </div>\n }\n\n <div class=\"z-chat-composer-shell\">\n <div class=\"z-chat-composer-main\" [class.z-chat-composer__field--overflow]=\"isComposerOverflowing()\">\n <textarea\n #chatInput\n class=\"z-chat-composer-textarea\"\n [placeholder]=\"zPlaceholder() | translate\"\n [disabled]=\"zDisabled()\"\n [ngModel]=\"draftMessage()\"\n (ngModelChange)=\"draftMessage.set($event)\"\n (input)=\"onTextareaInput($event)\"\n (paste)=\"onTextareaPaste($event)\"\n (keydown)=\"onInputKeydown($event)\"\n rows=\"3\"></textarea>\n </div>\n\n <div class=\"z-chat-composer-toolbar\">\n <div class=\"z-chat-composer-toolbar-left\">\n @if (zAllowAttachments()) {\n <input\n #fileInput\n type=\"file\"\n class=\"hidden\"\n [attr.accept]=\"zAcceptedFiles()\"\n multiple\n (change)=\"onFileChange($event)\" />\n <button\n type=\"button\"\n class=\"z-chat-composer-tool-btn\"\n [disabled]=\"zDisabled()\"\n (click)=\"onClickAttach()\"\n title=\"{{ 'i18n_z_ui_chat_ai_attach' | translate }}\">\n <z-icon zType=\"lucidePlus\" zSize=\"18\" />\n </button>\n }\n </div>\n\n <div class=\"z-chat-composer-toolbar-right\">\n <button\n type=\"button\"\n class=\"z-chat-composer-send-btn\"\n [disabled]=\"!canSend()\"\n (click)=\"onSendMessage()\"\n title=\"{{ 'i18n_z_ui_chat_ai_send' | translate }}\">\n <z-icon\n [zType]=\"isTyping() ? 'lucideLoaderCircle' : zSendIcon()\"\n zSize=\"16\"\n [class]=\"isTyping() ? 'animate-spin' : ''\" />\n </button>\n </div>\n </div>\n </div>\n </footer>\n </div>\n\n <z-modal\n [zVisible]=\"isPreviewVisible()\"\n [zTitle]=\"previewImage()?.name\"\n [zDescription]=\"previewImageSizeLabel()\"\n zWidth=\"min(92vw, 720px)\"\n [zHideFooter]=\"true\"\n [zMaskClosable]=\"true\"\n zOverlay=\"blur\"\n (zCancel)=\"closeImagePreview()\">\n <div class=\"z-chat-preview-modal-body\">\n <img [src]=\"previewImage()?.url\" [alt]=\"previewImage()?.name\" class=\"z-chat-preview-image\" />\n </div>\n </z-modal>\n </section>\n\n <button\n type=\"button\"\n class=\"pointer-events-auto cursor-pointer\"\n [class]=\"fabClasses()\"\n (click)=\"onToggle()\"\n [attr.aria-expanded]=\"zOpen()\"\n [attr.aria-label]=\"'i18n_z_ui_chat_ai_toggle' | translate\"\n title=\"{{ 'i18n_z_ui_chat_ai_toggle' | translate }}\">\n @if (zShowPulse() && !zOpen()) {\n <span class=\"bg-primary/30 absolute inset-0 animate-ping rounded-full\"></span>\n }\n\n @if (showRipple()) {\n <span class=\"bg-primary-foreground/30 absolute inset-0 animate-ping rounded-full\"></span>\n }\n\n <z-icon\n [zType]=\"zOpen() ? 'lucideX' : zFabIcon()\"\n zSize=\"24\"\n class=\"relative z-1 transition-transform duration-200\"\n [class.rotate-180]=\"zOpen()\" />\n </button>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -42,46 +42,65 @@ const zCheckboxLabelVariants = cva('select-none cursor-pointer leading-none peer
42
42
 
43
43
  class ZCheckboxComponent {
44
44
  _zTranslate = inject(ZTranslateService);
45
- _checkboxRef = viewChild('checkboxBtn', ...(ngDevMode ? [{ debugName: "_checkboxRef" }] : []));
45
+ _checkboxRef = viewChild('checkboxBtn', /* @ts-ignore */
46
+ ...(ngDevMode ? [{ debugName: "_checkboxRef" }] : /* istanbul ignore next */ []));
46
47
  zChange = output();
47
48
  zGroupChange = output();
48
49
  zOnBlur = output();
49
50
  zOnFocus = output();
50
51
  zControl = output();
51
52
  zEvent = output();
52
- class = input('', ...(ngDevMode ? [{ debugName: "class" }] : []));
53
- zType = input('default', ...(ngDevMode ? [{ debugName: "zType" }] : []));
54
- zSize = input('default', ...(ngDevMode ? [{ debugName: "zSize" }] : []));
55
- zLabel = input('', ...(ngDevMode ? [{ debugName: "zLabel" }] : []));
56
- zText = input('', ...(ngDevMode ? [{ debugName: "zText" }] : []));
57
- zDisabled = input(false, { ...(ngDevMode ? { debugName: "zDisabled" } : {}), transform: zTransform });
58
- zIndeterminate = input(false, { ...(ngDevMode ? { debugName: "zIndeterminate" } : {}), transform: zTransform });
59
- zValue = input('', ...(ngDevMode ? [{ debugName: "zValue" }] : []));
60
- zOptions = input([], ...(ngDevMode ? [{ debugName: "zOptions" }] : []));
61
- zOrientation = input('vertical', ...(ngDevMode ? [{ debugName: "zOrientation" }] : []));
62
- zCheckAll = input(false, { ...(ngDevMode ? { debugName: "zCheckAll" } : {}), transform: zTransform });
63
- zCheckAllText = input('', ...(ngDevMode ? [{ debugName: "zCheckAllText" }] : []));
64
- zChecked = model(false, ...(ngDevMode ? [{ debugName: "zChecked" }] : []));
65
- zGroupValue = model([], ...(ngDevMode ? [{ debugName: "zGroupValue" }] : []));
66
- _disabled = signal(false, ...(ngDevMode ? [{ debugName: "_disabled" }] : []));
67
- isDisabled = computed(() => this.zDisabled() || this._disabled(), ...(ngDevMode ? [{ debugName: "isDisabled" }] : []));
53
+ class = input('', /* @ts-ignore */
54
+ ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
55
+ zType = input('default', /* @ts-ignore */
56
+ ...(ngDevMode ? [{ debugName: "zType" }] : /* istanbul ignore next */ []));
57
+ zSize = input('default', /* @ts-ignore */
58
+ ...(ngDevMode ? [{ debugName: "zSize" }] : /* istanbul ignore next */ []));
59
+ zLabel = input('', /* @ts-ignore */
60
+ ...(ngDevMode ? [{ debugName: "zLabel" }] : /* istanbul ignore next */ []));
61
+ zText = input('', /* @ts-ignore */
62
+ ...(ngDevMode ? [{ debugName: "zText" }] : /* istanbul ignore next */ []));
63
+ zDisabled = input(false, { ...(ngDevMode ? { debugName: "zDisabled" } : /* istanbul ignore next */ {}), transform: zTransform });
64
+ zIndeterminate = input(false, { ...(ngDevMode ? { debugName: "zIndeterminate" } : /* istanbul ignore next */ {}), transform: zTransform });
65
+ zValue = input('', /* @ts-ignore */
66
+ ...(ngDevMode ? [{ debugName: "zValue" }] : /* istanbul ignore next */ []));
67
+ zOptions = input([], /* @ts-ignore */
68
+ ...(ngDevMode ? [{ debugName: "zOptions" }] : /* istanbul ignore next */ []));
69
+ zOrientation = input('vertical', /* @ts-ignore */
70
+ ...(ngDevMode ? [{ debugName: "zOrientation" }] : /* istanbul ignore next */ []));
71
+ zCheckAll = input(false, { ...(ngDevMode ? { debugName: "zCheckAll" } : /* istanbul ignore next */ {}), transform: zTransform });
72
+ zCheckAllText = input('', /* @ts-ignore */
73
+ ...(ngDevMode ? [{ debugName: "zCheckAllText" }] : /* istanbul ignore next */ []));
74
+ zChecked = model(false, /* @ts-ignore */
75
+ ...(ngDevMode ? [{ debugName: "zChecked" }] : /* istanbul ignore next */ []));
76
+ zGroupValue = model([], /* @ts-ignore */
77
+ ...(ngDevMode ? [{ debugName: "zGroupValue" }] : /* istanbul ignore next */ []));
78
+ _disabled = signal(false, /* @ts-ignore */
79
+ ...(ngDevMode ? [{ debugName: "_disabled" }] : /* istanbul ignore next */ []));
80
+ isDisabled = computed(() => this.zDisabled() || this._disabled(), /* @ts-ignore */
81
+ ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
68
82
  effectiveCheckAllText = computed(() => {
69
83
  this._zTranslate.currentLang();
70
84
  return this.zCheckAllText() || this._zTranslate.instant('i18n_z_ui_checkbox_check_all');
71
- }, ...(ngDevMode ? [{ debugName: "effectiveCheckAllText" }] : []));
72
- enabledOptions = computed(() => this.zOptions().filter(opt => !opt.disabled), ...(ngDevMode ? [{ debugName: "enabledOptions" }] : []));
85
+ }, /* @ts-ignore */
86
+ ...(ngDevMode ? [{ debugName: "effectiveCheckAllText" }] : /* istanbul ignore next */ []));
87
+ enabledOptions = computed(() => this.zOptions().filter(opt => !opt.disabled), /* @ts-ignore */
88
+ ...(ngDevMode ? [{ debugName: "enabledOptions" }] : /* istanbul ignore next */ []));
73
89
  isAllChecked = computed(() => {
74
90
  const enabledOpts = this.enabledOptions();
75
91
  if (enabledOpts.length === 0) {
76
92
  return false;
77
93
  }
78
94
  return enabledOpts.every(opt => this.zGroupValue().includes(opt.value));
79
- }, ...(ngDevMode ? [{ debugName: "isAllChecked" }] : []));
95
+ }, /* @ts-ignore */
96
+ ...(ngDevMode ? [{ debugName: "isAllChecked" }] : /* istanbul ignore next */ []));
80
97
  isNoneChecked = computed(() => {
81
98
  const enabledOpts = this.enabledOptions();
82
99
  return enabledOpts.every(opt => !this.zGroupValue().includes(opt.value));
83
- }, ...(ngDevMode ? [{ debugName: "isNoneChecked" }] : []));
84
- isIndeterminateState = computed(() => !this.isAllChecked() && !this.isNoneChecked(), ...(ngDevMode ? [{ debugName: "isIndeterminateState" }] : []));
100
+ }, /* @ts-ignore */
101
+ ...(ngDevMode ? [{ debugName: "isNoneChecked" }] : /* istanbul ignore next */ []));
102
+ isIndeterminateState = computed(() => !this.isAllChecked() && !this.isNoneChecked(), /* @ts-ignore */
103
+ ...(ngDevMode ? [{ debugName: "isIndeterminateState" }] : /* istanbul ignore next */ []));
85
104
  hostClasses = computed(() => {
86
105
  const hasLabel = !!this.zLabel();
87
106
  if (this.zType() === 'group') {
@@ -91,13 +110,17 @@ class ZCheckboxComponent {
91
110
  return zMergeClasses('flex flex-col gap-2', this.class());
92
111
  }
93
112
  return zMergeClasses('inline-flex items-center gap-2', this.class());
94
- }, ...(ngDevMode ? [{ debugName: "hostClasses" }] : []));
113
+ }, /* @ts-ignore */
114
+ ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
95
115
  groupClasses = computed(() => {
96
116
  const orientation = this.zOrientation() === 'horizontal' ? 'flex-row flex-wrap' : 'flex-col';
97
117
  return `flex ${orientation} gap-2`;
98
- }, ...(ngDevMode ? [{ debugName: "groupClasses" }] : []));
99
- checkboxClasses = computed(() => zCheckboxVariants({ zSize: this.zSize() }), ...(ngDevMode ? [{ debugName: "checkboxClasses" }] : []));
100
- labelClasses = computed(() => zCheckboxLabelVariants({ zSize: this.zSize() }), ...(ngDevMode ? [{ debugName: "labelClasses" }] : []));
118
+ }, /* @ts-ignore */
119
+ ...(ngDevMode ? [{ debugName: "groupClasses" }] : /* istanbul ignore next */ []));
120
+ checkboxClasses = computed(() => zCheckboxVariants({ zSize: this.zSize() }), /* @ts-ignore */
121
+ ...(ngDevMode ? [{ debugName: "checkboxClasses" }] : /* istanbul ignore next */ []));
122
+ labelClasses = computed(() => zCheckboxLabelVariants({ zSize: this.zSize() }), /* @ts-ignore */
123
+ ...(ngDevMode ? [{ debugName: "labelClasses" }] : /* istanbul ignore next */ []));
101
124
  checkboxState = computed(() => {
102
125
  if (this.zIndeterminate()) {
103
126
  return 'indeterminate';
@@ -106,7 +129,8 @@ class ZCheckboxComponent {
106
129
  return 'checked';
107
130
  }
108
131
  return 'unchecked';
109
- }, ...(ngDevMode ? [{ debugName: "checkboxState" }] : []));
132
+ }, /* @ts-ignore */
133
+ ...(ngDevMode ? [{ debugName: "checkboxState" }] : /* istanbul ignore next */ []));
110
134
  iconSize = computed(() => {
111
135
  const sizeMap = {
112
136
  sm: '12',
@@ -114,7 +138,8 @@ class ZCheckboxComponent {
114
138
  lg: '16',
115
139
  };
116
140
  return sizeMap[this.zSize()];
117
- }, ...(ngDevMode ? [{ debugName: "iconSize" }] : []));
141
+ }, /* @ts-ignore */
142
+ ...(ngDevMode ? [{ debugName: "iconSize" }] : /* istanbul ignore next */ []));
118
143
  _onChange = () => { };
119
144
  _onTouched = () => { };
120
145
  ngAfterViewInit() {
@@ -235,8 +260,8 @@ class ZCheckboxComponent {
235
260
  }
236
261
  this._checkAllOptions();
237
262
  }
238
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: ZCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
239
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: ZCheckboxComponent, isStandalone: true, selector: "z-checkbox", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, zType: { classPropertyName: "zType", publicName: "zType", isSignal: true, isRequired: false, transformFunction: null }, zSize: { classPropertyName: "zSize", publicName: "zSize", isSignal: true, isRequired: false, transformFunction: null }, zLabel: { classPropertyName: "zLabel", publicName: "zLabel", isSignal: true, isRequired: false, transformFunction: null }, zText: { classPropertyName: "zText", publicName: "zText", isSignal: true, isRequired: false, transformFunction: null }, zDisabled: { classPropertyName: "zDisabled", publicName: "zDisabled", isSignal: true, isRequired: false, transformFunction: null }, zIndeterminate: { classPropertyName: "zIndeterminate", publicName: "zIndeterminate", isSignal: true, isRequired: false, transformFunction: null }, zValue: { classPropertyName: "zValue", publicName: "zValue", isSignal: true, isRequired: false, transformFunction: null }, zOptions: { classPropertyName: "zOptions", publicName: "zOptions", isSignal: true, isRequired: false, transformFunction: null }, zOrientation: { classPropertyName: "zOrientation", publicName: "zOrientation", isSignal: true, isRequired: false, transformFunction: null }, zCheckAll: { classPropertyName: "zCheckAll", publicName: "zCheckAll", isSignal: true, isRequired: false, transformFunction: null }, zCheckAllText: { classPropertyName: "zCheckAllText", publicName: "zCheckAllText", isSignal: true, isRequired: false, transformFunction: null }, zChecked: { classPropertyName: "zChecked", publicName: "zChecked", isSignal: true, isRequired: false, transformFunction: null }, zGroupValue: { classPropertyName: "zGroupValue", publicName: "zGroupValue", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { zChange: "zChange", zGroupChange: "zGroupChange", zOnBlur: "zOnBlur", zOnFocus: "zOnFocus", zControl: "zControl", zEvent: "zEvent", zChecked: "zCheckedChange", zGroupValue: "zGroupValueChange" }, host: { properties: { "class": "hostClasses()" } }, providers: [
263
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: ZCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
264
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.2", type: ZCheckboxComponent, isStandalone: true, selector: "z-checkbox", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, zType: { classPropertyName: "zType", publicName: "zType", isSignal: true, isRequired: false, transformFunction: null }, zSize: { classPropertyName: "zSize", publicName: "zSize", isSignal: true, isRequired: false, transformFunction: null }, zLabel: { classPropertyName: "zLabel", publicName: "zLabel", isSignal: true, isRequired: false, transformFunction: null }, zText: { classPropertyName: "zText", publicName: "zText", isSignal: true, isRequired: false, transformFunction: null }, zDisabled: { classPropertyName: "zDisabled", publicName: "zDisabled", isSignal: true, isRequired: false, transformFunction: null }, zIndeterminate: { classPropertyName: "zIndeterminate", publicName: "zIndeterminate", isSignal: true, isRequired: false, transformFunction: null }, zValue: { classPropertyName: "zValue", publicName: "zValue", isSignal: true, isRequired: false, transformFunction: null }, zOptions: { classPropertyName: "zOptions", publicName: "zOptions", isSignal: true, isRequired: false, transformFunction: null }, zOrientation: { classPropertyName: "zOrientation", publicName: "zOrientation", isSignal: true, isRequired: false, transformFunction: null }, zCheckAll: { classPropertyName: "zCheckAll", publicName: "zCheckAll", isSignal: true, isRequired: false, transformFunction: null }, zCheckAllText: { classPropertyName: "zCheckAllText", publicName: "zCheckAllText", isSignal: true, isRequired: false, transformFunction: null }, zChecked: { classPropertyName: "zChecked", publicName: "zChecked", isSignal: true, isRequired: false, transformFunction: null }, zGroupValue: { classPropertyName: "zGroupValue", publicName: "zGroupValue", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { zChange: "zChange", zGroupChange: "zGroupChange", zOnBlur: "zOnBlur", zOnFocus: "zOnFocus", zControl: "zControl", zEvent: "zEvent", zChecked: "zCheckedChange", zGroupValue: "zGroupValueChange" }, host: { properties: { "class": "hostClasses()" } }, providers: [
240
265
  {
241
266
  provide: NG_VALUE_ACCESSOR,
242
267
  useExisting: forwardRef(() => ZCheckboxComponent),
@@ -244,7 +269,7 @@ class ZCheckboxComponent {
244
269
  },
245
270
  ], viewQueries: [{ propertyName: "_checkboxRef", first: true, predicate: ["checkboxBtn"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Group Mode -->\n@if (zType() === 'group') {\n <!-- Label above group -->\n @if (zLabel()) {\n <label class=\"text-xs leading-none font-medium\">{{ zLabel() }}</label>\n }\n\n <div [class]=\"groupClasses()\">\n <!-- Check All option -->\n @if (zCheckAll()) {\n <label\n class=\"inline-flex cursor-pointer items-center gap-2 align-middle\"\n [class.opacity-50]=\"isDisabled()\"\n [class.cursor-not-allowed]=\"isDisabled()\">\n <button\n type=\"button\"\n role=\"checkbox\"\n [class]=\"checkboxClasses()\"\n [attr.aria-checked]=\"isAllChecked()\"\n [attr.data-state]=\"getCheckAllState()\"\n [disabled]=\"isDisabled()\"\n (click)=\"onCheckAllClick()\">\n <span class=\"pointer-events-none absolute inset-0 inline-flex items-center justify-center\">\n <i\n z-icon\n zType=\"lucideMinus\"\n [zSize]=\"iconSize()\"\n [zStrokeWidth]=\"3\"\n class=\"text-current transition-opacity duration-150\"\n [class.opacity-0]=\"!isIndeterminateState()\"></i>\n <i\n z-icon\n zType=\"lucideCheck\"\n [zSize]=\"iconSize()\"\n [zStrokeWidth]=\"3\"\n class=\"absolute text-current transition-opacity duration-150\"\n [class.opacity-0]=\"isIndeterminateState() || !isAllChecked()\"></i>\n </span>\n </button>\n <span [class]=\"labelClasses()\">{{ effectiveCheckAllText() }}</span>\n </label>\n }\n\n <!-- Options -->\n @for (option of zOptions(); track option.value) {\n <label\n class=\"inline-flex cursor-pointer items-center gap-2 align-middle\"\n [class.opacity-40]=\"option.disabled || isDisabled()\"\n [class.dark:opacity-50]=\"option.disabled || isDisabled()\"\n [class.cursor-not-allowed]=\"option.disabled || isDisabled()\">\n <button\n type=\"button\"\n role=\"checkbox\"\n [class]=\"checkboxClasses()\"\n [attr.aria-checked]=\"isOptionChecked(option)\"\n [attr.data-state]=\"getOptionState(option)\"\n [disabled]=\"isDisabled() || option.disabled\"\n (click)=\"onOptionClick(option)\">\n <span class=\"pointer-events-none absolute inset-0 inline-flex items-center justify-center\">\n <i\n z-icon\n zType=\"lucideCheck\"\n [zSize]=\"iconSize()\"\n [zStrokeWidth]=\"3\"\n class=\"text-current transition-opacity duration-150\"\n [class.opacity-0]=\"!isOptionChecked(option)\"></i>\n </span>\n </button>\n <span [class]=\"labelClasses()\" [class.text-muted-foreground]=\"option.disabled\">{{ option.label }}</span>\n </label>\n }\n </div>\n}\n\n<!-- Default Mode (single checkbox) -->\n@if (zType() === 'default') {\n <!-- Label above -->\n @if (zLabel()) {\n <label class=\"text-xs leading-none font-medium\">{{ zLabel() }}</label>\n }\n\n <div class=\"inline-flex items-center gap-2 align-middle\">\n <button\n #checkboxBtn\n type=\"button\"\n role=\"checkbox\"\n [class]=\"checkboxClasses()\"\n [attr.aria-checked]=\"zChecked()\"\n [attr.data-state]=\"checkboxState()\"\n [disabled]=\"isDisabled()\"\n (click)=\"onCheckboxClick()\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n <span class=\"pointer-events-none absolute inset-0 inline-flex items-center justify-center\">\n <i\n z-icon\n zType=\"lucideMinus\"\n [zSize]=\"iconSize()\"\n [zStrokeWidth]=\"3\"\n class=\"text-current transition-opacity duration-150\"\n [class.opacity-0]=\"!zIndeterminate()\"></i>\n <i\n z-icon\n zType=\"lucideCheck\"\n [zSize]=\"iconSize()\"\n [zStrokeWidth]=\"3\"\n class=\"absolute text-current transition-opacity duration-150\"\n [class.opacity-0]=\"zIndeterminate() || !zChecked()\"></i>\n </span>\n </button>\n @if (zText()) {\n <label [class]=\"labelClasses()\" (click)=\"onCheckboxClick()\">{{ zText() }}</label>\n }\n </div>\n}\n", dependencies: [{ kind: "component", type: ZIconComponent, selector: "z-icon, [z-icon]", inputs: ["class", "zType", "zAnimatedType", "zAnimate", "zAnimationTrigger", "zSize", "zStrokeWidth", "zSvg"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
246
271
  }
247
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: ZCheckboxComponent, decorators: [{
272
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: ZCheckboxComponent, decorators: [{
248
273
  type: Component,
249
274
  args: [{ selector: 'z-checkbox', imports: [ZIconComponent], standalone: true, providers: [
250
275
  {
@@ -1 +1 @@
1
- {"version":3,"file":"shival99-z-ui-components-z-checkbox.mjs","sources":["../../../../libs/core-ui/components/z-checkbox/z-checkbox.variants.ts","../../../../libs/core-ui/components/z-checkbox/z-checkbox.component.ts","../../../../libs/core-ui/components/z-checkbox/z-checkbox.component.html","../../../../libs/core-ui/components/z-checkbox/shival99-z-ui-components-z-checkbox.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zCheckboxVariants = cva(\n [\n 'relative inline-flex items-center justify-center shrink-0 cursor-pointer overflow-hidden align-middle leading-none',\n 'rounded-sm border border-input bg-background dark:border-border dark:bg-input/25',\n 'transition-colors duration-150',\n 'hover:border-primary/70 hover:bg-primary/5 dark:hover:bg-primary/15',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:hover:bg-primary/90',\n 'data-[state=indeterminate]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:hover:bg-primary/90',\n ],\n {\n variants: {\n zSize: {\n sm: 'size-4',\n default: 'size-5',\n lg: 'size-6',\n },\n },\n defaultVariants: {\n zSize: 'default',\n },\n }\n);\n\nexport const zCheckboxLabelVariants = cva(\n 'select-none cursor-pointer leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n {\n variants: {\n zSize: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: {\n zSize: 'default',\n },\n }\n);\n\nexport type ZCheckboxVariants = VariantProps<typeof zCheckboxVariants>;\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport { ZTranslateService } from '@shival99/z-ui/services';\nimport { zMergeClasses, zTransform, zCreateEvent, type ZEvent } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport type {\n ZCheckboxControl,\n ZCheckboxOption,\n ZCheckboxOrientation,\n ZCheckboxSize,\n ZCheckboxType,\n} from './z-checkbox.types';\nimport { zCheckboxLabelVariants, zCheckboxVariants } from './z-checkbox.variants';\n\n@Component({\n selector: 'z-checkbox',\n imports: [ZIconComponent],\n standalone: true,\n templateUrl: './z-checkbox.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ZCheckboxComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class ZCheckboxComponent implements ControlValueAccessor, AfterViewInit {\n private readonly _zTranslate = inject(ZTranslateService);\n\n private readonly _checkboxRef = viewChild<ElementRef<HTMLButtonElement>>('checkboxBtn');\n\n public readonly zChange = output<boolean>();\n public readonly zGroupChange = output<(string | number)[]>();\n public readonly zOnBlur = output<FocusEvent>();\n public readonly zOnFocus = output<FocusEvent>();\n public readonly zControl = output<ZCheckboxControl>();\n public readonly zEvent = output<ZEvent>();\n\n public readonly class = input<ClassValue>('');\n public readonly zType = input<ZCheckboxType>('default');\n public readonly zSize = input<ZCheckboxSize>('default');\n public readonly zLabel = input<string>('');\n public readonly zText = input<string>('');\n public readonly zDisabled = input(false, { transform: zTransform });\n public readonly zIndeterminate = input(false, { transform: zTransform });\n public readonly zValue = input<string | number>('');\n public readonly zOptions = input<ZCheckboxOption[]>([]);\n public readonly zOrientation = input<ZCheckboxOrientation>('vertical');\n public readonly zCheckAll = input(false, { transform: zTransform });\n public readonly zCheckAllText = input<string>('');\n\n public readonly zChecked = model<boolean>(false);\n public readonly zGroupValue = model<(string | number)[]>([]);\n\n private readonly _disabled = signal(false);\n\n protected readonly isDisabled = computed(() => this.zDisabled() || this._disabled());\n protected readonly effectiveCheckAllText = computed(() => {\n this._zTranslate.currentLang();\n return this.zCheckAllText() || this._zTranslate.instant('i18n_z_ui_checkbox_check_all');\n });\n\n protected readonly enabledOptions = computed(() => this.zOptions().filter(opt => !opt.disabled));\n\n protected readonly isAllChecked = computed(() => {\n const enabledOpts = this.enabledOptions();\n if (enabledOpts.length === 0) {\n return false;\n }\n return enabledOpts.every(opt => this.zGroupValue().includes(opt.value));\n });\n\n protected readonly isNoneChecked = computed(() => {\n const enabledOpts = this.enabledOptions();\n return enabledOpts.every(opt => !this.zGroupValue().includes(opt.value));\n });\n\n protected readonly isIndeterminateState = computed(() => !this.isAllChecked() && !this.isNoneChecked());\n\n protected readonly hostClasses = computed(() => {\n const hasLabel = !!this.zLabel();\n if (this.zType() === 'group') {\n return zMergeClasses('flex flex-col gap-2', this.class());\n }\n if (hasLabel) {\n return zMergeClasses('flex flex-col gap-2', this.class());\n }\n return zMergeClasses('inline-flex items-center gap-2', this.class());\n });\n\n protected readonly groupClasses = computed(() => {\n const orientation = this.zOrientation() === 'horizontal' ? 'flex-row flex-wrap' : 'flex-col';\n return `flex ${orientation} gap-2`;\n });\n\n protected readonly checkboxClasses = computed(() => zCheckboxVariants({ zSize: this.zSize() }));\n\n protected readonly labelClasses = computed(() => zCheckboxLabelVariants({ zSize: this.zSize() }));\n\n protected readonly checkboxState = computed(() => {\n if (this.zIndeterminate()) {\n return 'indeterminate';\n }\n if (this.zChecked()) {\n return 'checked';\n }\n return 'unchecked';\n });\n\n protected readonly iconSize = computed(() => {\n const sizeMap: Record<ZCheckboxSize, string> = {\n sm: '12',\n default: '14',\n lg: '16',\n };\n return sizeMap[this.zSize()] as '12' | '14' | '16';\n });\n\n private _onChange: (value: boolean | (string | number)[]) => void = () => {};\n private _onTouched: () => void = () => {};\n\n public ngAfterViewInit(): void {\n if (this.zType() === 'group' && this.zCheckAll()) {\n this.zControl.emit({\n checkAll: () => this._checkAllOptions(),\n uncheckAll: () => this._uncheckAllOptions(),\n toggleAll: () => this._toggleAllOptions(),\n isAllChecked: this.isAllChecked,\n isIndeterminate: this.isIndeterminateState,\n });\n }\n }\n\n public writeValue(value: boolean | (string | number)[] | null): void {\n if (this.zType() === 'group') {\n this.zGroupValue.set(Array.isArray(value) ? value : []);\n return;\n }\n this.zChecked.set(!!value);\n }\n\n public registerOnChange(fn: (value: boolean | (string | number)[]) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n }\n\n public focus(): void {\n this._checkboxRef()?.nativeElement.focus();\n }\n\n public blur(): void {\n this._checkboxRef()?.nativeElement.blur();\n }\n\n protected onFocus(event: FocusEvent): void {\n this.zOnFocus.emit(event);\n this.zEvent.emit(zCreateEvent('focus', event));\n }\n\n protected onBlur(event: FocusEvent): void {\n this.zOnBlur.emit(event);\n this.zEvent.emit(zCreateEvent('blur', event));\n this._onTouched();\n }\n\n protected onCheckboxClick(): void {\n if (this.isDisabled()) {\n return;\n }\n\n const newValue = !this.zChecked();\n this.zChecked.set(newValue);\n this.zChange.emit(newValue);\n this._onChange(newValue);\n this._onTouched();\n }\n\n protected onOptionClick(option: ZCheckboxOption): void {\n if (this.isDisabled() || option.disabled) {\n return;\n }\n\n const currentValues = [...this.zGroupValue()];\n const index = currentValues.indexOf(option.value);\n\n if (index === -1) {\n currentValues.push(option.value);\n }\n\n if (index !== -1) {\n currentValues.splice(index, 1);\n }\n\n this.zGroupValue.set(currentValues);\n this.zGroupChange.emit(currentValues);\n this._onChange(currentValues);\n this._onTouched();\n }\n\n protected onCheckAllClick(): void {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.isAllChecked()) {\n this._uncheckAllOptions();\n return;\n }\n\n this._checkAllOptions();\n }\n\n protected isOptionChecked(option: ZCheckboxOption): boolean {\n return this.zGroupValue().includes(option.value);\n }\n\n protected getOptionState(option: ZCheckboxOption): string {\n return this.isOptionChecked(option) ? 'checked' : 'unchecked';\n }\n\n protected getCheckAllState(): string {\n if (this.isAllChecked()) {\n return 'checked';\n }\n if (this.isIndeterminateState()) {\n return 'indeterminate';\n }\n return 'unchecked';\n }\n\n private _checkAllOptions(): void {\n const enabledValues = this.enabledOptions().map(opt => opt.value);\n const currentValues = [...this.zGroupValue()];\n const newValues = [...new Set([...currentValues, ...enabledValues])];\n this.zGroupValue.set(newValues);\n this.zGroupChange.emit(newValues);\n this._onChange(newValues);\n this._onTouched();\n }\n\n private _uncheckAllOptions(): void {\n const enabledValues = this.enabledOptions().map(opt => opt.value);\n const currentValues = this.zGroupValue().filter(v => !enabledValues.includes(v));\n this.zGroupValue.set(currentValues);\n this.zGroupChange.emit(currentValues);\n this._onChange(currentValues);\n this._onTouched();\n }\n\n private _toggleAllOptions(): void {\n if (this.isAllChecked()) {\n this._uncheckAllOptions();\n return;\n }\n\n this._checkAllOptions();\n }\n}\n","<!-- Group Mode -->\n@if (zType() === 'group') {\n <!-- Label above group -->\n @if (zLabel()) {\n <label class=\"text-xs leading-none font-medium\">{{ zLabel() }}</label>\n }\n\n <div [class]=\"groupClasses()\">\n <!-- Check All option -->\n @if (zCheckAll()) {\n <label\n class=\"inline-flex cursor-pointer items-center gap-2 align-middle\"\n [class.opacity-50]=\"isDisabled()\"\n [class.cursor-not-allowed]=\"isDisabled()\">\n <button\n type=\"button\"\n role=\"checkbox\"\n [class]=\"checkboxClasses()\"\n [attr.aria-checked]=\"isAllChecked()\"\n [attr.data-state]=\"getCheckAllState()\"\n [disabled]=\"isDisabled()\"\n (click)=\"onCheckAllClick()\">\n <span class=\"pointer-events-none absolute inset-0 inline-flex items-center justify-center\">\n <i\n z-icon\n zType=\"lucideMinus\"\n [zSize]=\"iconSize()\"\n [zStrokeWidth]=\"3\"\n class=\"text-current transition-opacity duration-150\"\n [class.opacity-0]=\"!isIndeterminateState()\"></i>\n <i\n z-icon\n zType=\"lucideCheck\"\n [zSize]=\"iconSize()\"\n [zStrokeWidth]=\"3\"\n class=\"absolute text-current transition-opacity duration-150\"\n [class.opacity-0]=\"isIndeterminateState() || !isAllChecked()\"></i>\n </span>\n </button>\n <span [class]=\"labelClasses()\">{{ effectiveCheckAllText() }}</span>\n </label>\n }\n\n <!-- Options -->\n @for (option of zOptions(); track option.value) {\n <label\n class=\"inline-flex cursor-pointer items-center gap-2 align-middle\"\n [class.opacity-40]=\"option.disabled || isDisabled()\"\n [class.dark:opacity-50]=\"option.disabled || isDisabled()\"\n [class.cursor-not-allowed]=\"option.disabled || isDisabled()\">\n <button\n type=\"button\"\n role=\"checkbox\"\n [class]=\"checkboxClasses()\"\n [attr.aria-checked]=\"isOptionChecked(option)\"\n [attr.data-state]=\"getOptionState(option)\"\n [disabled]=\"isDisabled() || option.disabled\"\n (click)=\"onOptionClick(option)\">\n <span class=\"pointer-events-none absolute inset-0 inline-flex items-center justify-center\">\n <i\n z-icon\n zType=\"lucideCheck\"\n [zSize]=\"iconSize()\"\n [zStrokeWidth]=\"3\"\n class=\"text-current transition-opacity duration-150\"\n [class.opacity-0]=\"!isOptionChecked(option)\"></i>\n </span>\n </button>\n <span [class]=\"labelClasses()\" [class.text-muted-foreground]=\"option.disabled\">{{ option.label }}</span>\n </label>\n }\n </div>\n}\n\n<!-- Default Mode (single checkbox) -->\n@if (zType() === 'default') {\n <!-- Label above -->\n @if (zLabel()) {\n <label class=\"text-xs leading-none font-medium\">{{ zLabel() }}</label>\n }\n\n <div class=\"inline-flex items-center gap-2 align-middle\">\n <button\n #checkboxBtn\n type=\"button\"\n role=\"checkbox\"\n [class]=\"checkboxClasses()\"\n [attr.aria-checked]=\"zChecked()\"\n [attr.data-state]=\"checkboxState()\"\n [disabled]=\"isDisabled()\"\n (click)=\"onCheckboxClick()\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n <span class=\"pointer-events-none absolute inset-0 inline-flex items-center justify-center\">\n <i\n z-icon\n zType=\"lucideMinus\"\n [zSize]=\"iconSize()\"\n [zStrokeWidth]=\"3\"\n class=\"text-current transition-opacity duration-150\"\n [class.opacity-0]=\"!zIndeterminate()\"></i>\n <i\n z-icon\n zType=\"lucideCheck\"\n [zSize]=\"iconSize()\"\n [zStrokeWidth]=\"3\"\n class=\"absolute text-current transition-opacity duration-150\"\n [class.opacity-0]=\"zIndeterminate() || !zChecked()\"></i>\n </span>\n </button>\n @if (zText()) {\n <label [class]=\"labelClasses()\" (click)=\"onCheckboxClick()\">{{ zText() }}</label>\n }\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shival99-z-ui-components-z-checkbox.mjs","sources":["../../../../libs/core-ui/components/z-checkbox/z-checkbox.variants.ts","../../../../libs/core-ui/components/z-checkbox/z-checkbox.component.ts","../../../../libs/core-ui/components/z-checkbox/z-checkbox.component.html","../../../../libs/core-ui/components/z-checkbox/shival99-z-ui-components-z-checkbox.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zCheckboxVariants = cva(\n [\n 'relative inline-flex items-center justify-center shrink-0 cursor-pointer overflow-hidden align-middle leading-none',\n 'rounded-sm border border-input bg-background dark:border-border dark:bg-input/25',\n 'transition-colors duration-150',\n 'hover:border-primary/70 hover:bg-primary/5 dark:hover:bg-primary/15',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:hover:bg-primary/90',\n 'data-[state=indeterminate]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:hover:bg-primary/90',\n ],\n {\n variants: {\n zSize: {\n sm: 'size-4',\n default: 'size-5',\n lg: 'size-6',\n },\n },\n defaultVariants: {\n zSize: 'default',\n },\n }\n);\n\nexport const zCheckboxLabelVariants = cva(\n 'select-none cursor-pointer leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n {\n variants: {\n zSize: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: {\n zSize: 'default',\n },\n }\n);\n\nexport type ZCheckboxVariants = VariantProps<typeof zCheckboxVariants>;\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport { ZTranslateService } from '@shival99/z-ui/services';\nimport { zMergeClasses, zTransform, zCreateEvent, type ZEvent } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport type {\n ZCheckboxControl,\n ZCheckboxOption,\n ZCheckboxOrientation,\n ZCheckboxSize,\n ZCheckboxType,\n} from './z-checkbox.types';\nimport { zCheckboxLabelVariants, zCheckboxVariants } from './z-checkbox.variants';\n\n@Component({\n selector: 'z-checkbox',\n imports: [ZIconComponent],\n standalone: true,\n templateUrl: './z-checkbox.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ZCheckboxComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class ZCheckboxComponent implements ControlValueAccessor, AfterViewInit {\n private readonly _zTranslate = inject(ZTranslateService);\n\n private readonly _checkboxRef = viewChild<ElementRef<HTMLButtonElement>>('checkboxBtn');\n\n public readonly zChange = output<boolean>();\n public readonly zGroupChange = output<(string | number)[]>();\n public readonly zOnBlur = output<FocusEvent>();\n public readonly zOnFocus = output<FocusEvent>();\n public readonly zControl = output<ZCheckboxControl>();\n public readonly zEvent = output<ZEvent>();\n\n public readonly class = input<ClassValue>('');\n public readonly zType = input<ZCheckboxType>('default');\n public readonly zSize = input<ZCheckboxSize>('default');\n public readonly zLabel = input<string>('');\n public readonly zText = input<string>('');\n public readonly zDisabled = input(false, { transform: zTransform });\n public readonly zIndeterminate = input(false, { transform: zTransform });\n public readonly zValue = input<string | number>('');\n public readonly zOptions = input<ZCheckboxOption[]>([]);\n public readonly zOrientation = input<ZCheckboxOrientation>('vertical');\n public readonly zCheckAll = input(false, { transform: zTransform });\n public readonly zCheckAllText = input<string>('');\n\n public readonly zChecked = model<boolean>(false);\n public readonly zGroupValue = model<(string | number)[]>([]);\n\n private readonly _disabled = signal(false);\n\n protected readonly isDisabled = computed(() => this.zDisabled() || this._disabled());\n protected readonly effectiveCheckAllText = computed(() => {\n this._zTranslate.currentLang();\n return this.zCheckAllText() || this._zTranslate.instant('i18n_z_ui_checkbox_check_all');\n });\n\n protected readonly enabledOptions = computed(() => this.zOptions().filter(opt => !opt.disabled));\n\n protected readonly isAllChecked = computed(() => {\n const enabledOpts = this.enabledOptions();\n if (enabledOpts.length === 0) {\n return false;\n }\n return enabledOpts.every(opt => this.zGroupValue().includes(opt.value));\n });\n\n protected readonly isNoneChecked = computed(() => {\n const enabledOpts = this.enabledOptions();\n return enabledOpts.every(opt => !this.zGroupValue().includes(opt.value));\n });\n\n protected readonly isIndeterminateState = computed(() => !this.isAllChecked() && !this.isNoneChecked());\n\n protected readonly hostClasses = computed(() => {\n const hasLabel = !!this.zLabel();\n if (this.zType() === 'group') {\n return zMergeClasses('flex flex-col gap-2', this.class());\n }\n if (hasLabel) {\n return zMergeClasses('flex flex-col gap-2', this.class());\n }\n return zMergeClasses('inline-flex items-center gap-2', this.class());\n });\n\n protected readonly groupClasses = computed(() => {\n const orientation = this.zOrientation() === 'horizontal' ? 'flex-row flex-wrap' : 'flex-col';\n return `flex ${orientation} gap-2`;\n });\n\n protected readonly checkboxClasses = computed(() => zCheckboxVariants({ zSize: this.zSize() }));\n\n protected readonly labelClasses = computed(() => zCheckboxLabelVariants({ zSize: this.zSize() }));\n\n protected readonly checkboxState = computed(() => {\n if (this.zIndeterminate()) {\n return 'indeterminate';\n }\n if (this.zChecked()) {\n return 'checked';\n }\n return 'unchecked';\n });\n\n protected readonly iconSize = computed(() => {\n const sizeMap: Record<ZCheckboxSize, string> = {\n sm: '12',\n default: '14',\n lg: '16',\n };\n return sizeMap[this.zSize()] as '12' | '14' | '16';\n });\n\n private _onChange: (value: boolean | (string | number)[]) => void = () => {};\n private _onTouched: () => void = () => {};\n\n public ngAfterViewInit(): void {\n if (this.zType() === 'group' && this.zCheckAll()) {\n this.zControl.emit({\n checkAll: () => this._checkAllOptions(),\n uncheckAll: () => this._uncheckAllOptions(),\n toggleAll: () => this._toggleAllOptions(),\n isAllChecked: this.isAllChecked,\n isIndeterminate: this.isIndeterminateState,\n });\n }\n }\n\n public writeValue(value: boolean | (string | number)[] | null): void {\n if (this.zType() === 'group') {\n this.zGroupValue.set(Array.isArray(value) ? value : []);\n return;\n }\n this.zChecked.set(!!value);\n }\n\n public registerOnChange(fn: (value: boolean | (string | number)[]) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n }\n\n public focus(): void {\n this._checkboxRef()?.nativeElement.focus();\n }\n\n public blur(): void {\n this._checkboxRef()?.nativeElement.blur();\n }\n\n protected onFocus(event: FocusEvent): void {\n this.zOnFocus.emit(event);\n this.zEvent.emit(zCreateEvent('focus', event));\n }\n\n protected onBlur(event: FocusEvent): void {\n this.zOnBlur.emit(event);\n this.zEvent.emit(zCreateEvent('blur', event));\n this._onTouched();\n }\n\n protected onCheckboxClick(): void {\n if (this.isDisabled()) {\n return;\n }\n\n const newValue = !this.zChecked();\n this.zChecked.set(newValue);\n this.zChange.emit(newValue);\n this._onChange(newValue);\n this._onTouched();\n }\n\n protected onOptionClick(option: ZCheckboxOption): void {\n if (this.isDisabled() || option.disabled) {\n return;\n }\n\n const currentValues = [...this.zGroupValue()];\n const index = currentValues.indexOf(option.value);\n\n if (index === -1) {\n currentValues.push(option.value);\n }\n\n if (index !== -1) {\n currentValues.splice(index, 1);\n }\n\n this.zGroupValue.set(currentValues);\n this.zGroupChange.emit(currentValues);\n this._onChange(currentValues);\n this._onTouched();\n }\n\n protected onCheckAllClick(): void {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.isAllChecked()) {\n this._uncheckAllOptions();\n return;\n }\n\n this._checkAllOptions();\n }\n\n protected isOptionChecked(option: ZCheckboxOption): boolean {\n return this.zGroupValue().includes(option.value);\n }\n\n protected getOptionState(option: ZCheckboxOption): string {\n return this.isOptionChecked(option) ? 'checked' : 'unchecked';\n }\n\n protected getCheckAllState(): string {\n if (this.isAllChecked()) {\n return 'checked';\n }\n if (this.isIndeterminateState()) {\n return 'indeterminate';\n }\n return 'unchecked';\n }\n\n private _checkAllOptions(): void {\n const enabledValues = this.enabledOptions().map(opt => opt.value);\n const currentValues = [...this.zGroupValue()];\n const newValues = [...new Set([...currentValues, ...enabledValues])];\n this.zGroupValue.set(newValues);\n this.zGroupChange.emit(newValues);\n this._onChange(newValues);\n this._onTouched();\n }\n\n private _uncheckAllOptions(): void {\n const enabledValues = this.enabledOptions().map(opt => opt.value);\n const currentValues = this.zGroupValue().filter(v => !enabledValues.includes(v));\n this.zGroupValue.set(currentValues);\n this.zGroupChange.emit(currentValues);\n this._onChange(currentValues);\n this._onTouched();\n }\n\n private _toggleAllOptions(): void {\n if (this.isAllChecked()) {\n this._uncheckAllOptions();\n return;\n }\n\n this._checkAllOptions();\n }\n}\n","<!-- Group Mode -->\n@if (zType() === 'group') {\n <!-- Label above group -->\n @if (zLabel()) {\n <label class=\"text-xs leading-none font-medium\">{{ zLabel() }}</label>\n }\n\n <div [class]=\"groupClasses()\">\n <!-- Check All option -->\n @if (zCheckAll()) {\n <label\n class=\"inline-flex cursor-pointer items-center gap-2 align-middle\"\n [class.opacity-50]=\"isDisabled()\"\n [class.cursor-not-allowed]=\"isDisabled()\">\n <button\n type=\"button\"\n role=\"checkbox\"\n [class]=\"checkboxClasses()\"\n [attr.aria-checked]=\"isAllChecked()\"\n [attr.data-state]=\"getCheckAllState()\"\n [disabled]=\"isDisabled()\"\n (click)=\"onCheckAllClick()\">\n <span class=\"pointer-events-none absolute inset-0 inline-flex items-center justify-center\">\n <i\n z-icon\n zType=\"lucideMinus\"\n [zSize]=\"iconSize()\"\n [zStrokeWidth]=\"3\"\n class=\"text-current transition-opacity duration-150\"\n [class.opacity-0]=\"!isIndeterminateState()\"></i>\n <i\n z-icon\n zType=\"lucideCheck\"\n [zSize]=\"iconSize()\"\n [zStrokeWidth]=\"3\"\n class=\"absolute text-current transition-opacity duration-150\"\n [class.opacity-0]=\"isIndeterminateState() || !isAllChecked()\"></i>\n </span>\n </button>\n <span [class]=\"labelClasses()\">{{ effectiveCheckAllText() }}</span>\n </label>\n }\n\n <!-- Options -->\n @for (option of zOptions(); track option.value) {\n <label\n class=\"inline-flex cursor-pointer items-center gap-2 align-middle\"\n [class.opacity-40]=\"option.disabled || isDisabled()\"\n [class.dark:opacity-50]=\"option.disabled || isDisabled()\"\n [class.cursor-not-allowed]=\"option.disabled || isDisabled()\">\n <button\n type=\"button\"\n role=\"checkbox\"\n [class]=\"checkboxClasses()\"\n [attr.aria-checked]=\"isOptionChecked(option)\"\n [attr.data-state]=\"getOptionState(option)\"\n [disabled]=\"isDisabled() || option.disabled\"\n (click)=\"onOptionClick(option)\">\n <span class=\"pointer-events-none absolute inset-0 inline-flex items-center justify-center\">\n <i\n z-icon\n zType=\"lucideCheck\"\n [zSize]=\"iconSize()\"\n [zStrokeWidth]=\"3\"\n class=\"text-current transition-opacity duration-150\"\n [class.opacity-0]=\"!isOptionChecked(option)\"></i>\n </span>\n </button>\n <span [class]=\"labelClasses()\" [class.text-muted-foreground]=\"option.disabled\">{{ option.label }}</span>\n </label>\n }\n </div>\n}\n\n<!-- Default Mode (single checkbox) -->\n@if (zType() === 'default') {\n <!-- Label above -->\n @if (zLabel()) {\n <label class=\"text-xs leading-none font-medium\">{{ zLabel() }}</label>\n }\n\n <div class=\"inline-flex items-center gap-2 align-middle\">\n <button\n #checkboxBtn\n type=\"button\"\n role=\"checkbox\"\n [class]=\"checkboxClasses()\"\n [attr.aria-checked]=\"zChecked()\"\n [attr.data-state]=\"checkboxState()\"\n [disabled]=\"isDisabled()\"\n (click)=\"onCheckboxClick()\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n <span class=\"pointer-events-none absolute inset-0 inline-flex items-center justify-center\">\n <i\n z-icon\n zType=\"lucideMinus\"\n [zSize]=\"iconSize()\"\n [zStrokeWidth]=\"3\"\n class=\"text-current transition-opacity duration-150\"\n [class.opacity-0]=\"!zIndeterminate()\"></i>\n <i\n z-icon\n zType=\"lucideCheck\"\n [zSize]=\"iconSize()\"\n [zStrokeWidth]=\"3\"\n class=\"absolute text-current transition-opacity duration-150\"\n [class.opacity-0]=\"zIndeterminate() || !zChecked()\"></i>\n </span>\n </button>\n @if (zText()) {\n <label [class]=\"labelClasses()\" (click)=\"onCheckboxClick()\">{{ zText() }}</label>\n }\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}