@acorex/components 21.0.3-next.8 → 21.1.0-next.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 (212) hide show
  1. package/conversation/README.md +462 -2
  2. package/fesm2022/acorex-components-accordion.mjs +4 -4
  3. package/fesm2022/acorex-components-accordion.mjs.map +1 -1
  4. package/fesm2022/acorex-components-action-sheet.mjs +2 -2
  5. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  6. package/fesm2022/acorex-components-alert.mjs +2 -2
  7. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  8. package/fesm2022/acorex-components-aspect-ratio.mjs +2 -2
  9. package/fesm2022/acorex-components-aspect-ratio.mjs.map +1 -1
  10. package/fesm2022/acorex-components-audio-wave.mjs +2 -2
  11. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  12. package/fesm2022/acorex-components-avatar.mjs +2 -2
  13. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  14. package/fesm2022/acorex-components-badge.mjs +17 -12
  15. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  16. package/fesm2022/acorex-components-bottom-navigation.mjs +2 -2
  17. package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
  18. package/fesm2022/acorex-components-breadcrumbs.mjs +2 -2
  19. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  20. package/fesm2022/acorex-components-button-group.mjs +2 -2
  21. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  22. package/fesm2022/acorex-components-button.mjs +6 -6
  23. package/fesm2022/acorex-components-button.mjs.map +1 -1
  24. package/fesm2022/acorex-components-calendar.mjs +6 -5
  25. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  26. package/fesm2022/acorex-components-check-box.mjs +2 -2
  27. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  28. package/fesm2022/acorex-components-chips.mjs +2 -2
  29. package/fesm2022/acorex-components-chips.mjs.map +1 -1
  30. package/fesm2022/acorex-components-circular-progress.mjs +2 -2
  31. package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
  32. package/fesm2022/acorex-components-color-box.mjs +2 -2
  33. package/fesm2022/acorex-components-color-box.mjs.map +1 -1
  34. package/fesm2022/acorex-components-color-palette.mjs +2 -2
  35. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  36. package/fesm2022/acorex-components-command.mjs +2 -2
  37. package/fesm2022/acorex-components-command.mjs.map +1 -1
  38. package/fesm2022/acorex-components-comment.mjs +6 -6
  39. package/fesm2022/acorex-components-comment.mjs.map +1 -1
  40. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-C28hl7iD.mjs +101 -0
  41. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-C28hl7iD.mjs.map +1 -0
  42. package/fesm2022/acorex-components-conversation-emoji-categories-C7Gm95V0.mjs +1840 -0
  43. package/fesm2022/acorex-components-conversation-emoji-categories-C7Gm95V0.mjs.map +1 -0
  44. package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-Duvap4M4.mjs +223 -0
  45. package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-Duvap4M4.mjs.map +1 -0
  46. package/fesm2022/acorex-components-conversation.mjs +22272 -1218
  47. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  48. package/fesm2022/acorex-components-cron-job.mjs +14 -14
  49. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  50. package/fesm2022/acorex-components-data-list.mjs +2 -2
  51. package/fesm2022/acorex-components-data-list.mjs.map +1 -1
  52. package/fesm2022/acorex-components-data-pager.mjs +2 -2
  53. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  54. package/fesm2022/acorex-components-data-table.mjs +2 -2
  55. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  56. package/fesm2022/acorex-components-datetime-box.mjs +2 -2
  57. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  58. package/fesm2022/acorex-components-datetime-input.mjs +2 -2
  59. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  60. package/fesm2022/acorex-components-datetime-picker.mjs +2 -2
  61. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  62. package/fesm2022/acorex-components-decorators.mjs +11 -18
  63. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  64. package/fesm2022/acorex-components-dialog.mjs +3 -4
  65. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  66. package/fesm2022/acorex-components-drawer.mjs +4 -4
  67. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  68. package/fesm2022/acorex-components-dropdown-button.mjs +2 -2
  69. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  70. package/fesm2022/acorex-components-dropdown.mjs +2 -2
  71. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  72. package/fesm2022/acorex-components-editor.mjs +2 -2
  73. package/fesm2022/acorex-components-editor.mjs.map +1 -1
  74. package/fesm2022/acorex-components-fab.mjs +2 -2
  75. package/fesm2022/acorex-components-fab.mjs.map +1 -1
  76. package/fesm2022/acorex-components-file-viewer.mjs +740 -0
  77. package/fesm2022/acorex-components-file-viewer.mjs.map +1 -0
  78. package/fesm2022/acorex-components-flow-chart.mjs +6 -6
  79. package/fesm2022/acorex-components-flow-chart.mjs.map +1 -1
  80. package/fesm2022/acorex-components-form.mjs +2 -2
  81. package/fesm2022/acorex-components-form.mjs.map +1 -1
  82. package/fesm2022/acorex-components-grid-layout-builder.mjs +2 -2
  83. package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
  84. package/fesm2022/acorex-components-image-editor.mjs +387 -188
  85. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  86. package/fesm2022/acorex-components-image.mjs +2 -2
  87. package/fesm2022/acorex-components-image.mjs.map +1 -1
  88. package/fesm2022/acorex-components-json-viewer.mjs +2 -2
  89. package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
  90. package/fesm2022/acorex-components-kanban.mjs +2 -2
  91. package/fesm2022/acorex-components-kanban.mjs.map +1 -1
  92. package/fesm2022/acorex-components-kbd.mjs +4 -6
  93. package/fesm2022/acorex-components-kbd.mjs.map +1 -1
  94. package/fesm2022/acorex-components-label.mjs +2 -2
  95. package/fesm2022/acorex-components-label.mjs.map +1 -1
  96. package/fesm2022/acorex-components-list.mjs +2 -2
  97. package/fesm2022/acorex-components-list.mjs.map +1 -1
  98. package/fesm2022/acorex-components-loading-dialog.mjs +2 -2
  99. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  100. package/fesm2022/acorex-components-loading.mjs +4 -4
  101. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  102. package/fesm2022/acorex-components-map.mjs +2 -2
  103. package/fesm2022/acorex-components-map.mjs.map +1 -1
  104. package/fesm2022/acorex-components-media-viewer.mjs +10 -10
  105. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  106. package/fesm2022/acorex-components-menu.mjs +4 -4
  107. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  108. package/fesm2022/{acorex-components-modal-acorex-components-modal-lJw2DGSj.mjs → acorex-components-modal-acorex-components-modal-dF5HUEBH.mjs} +4 -4
  109. package/fesm2022/acorex-components-modal-acorex-components-modal-dF5HUEBH.mjs.map +1 -0
  110. package/fesm2022/{acorex-components-modal-modal-content.component-t9kRuhc_.mjs → acorex-components-modal-modal-content.component-BGTYje3j.mjs} +4 -4
  111. package/fesm2022/acorex-components-modal-modal-content.component-BGTYje3j.mjs.map +1 -0
  112. package/fesm2022/acorex-components-modal.mjs +1 -1
  113. package/fesm2022/acorex-components-navbar.mjs +2 -2
  114. package/fesm2022/acorex-components-navbar.mjs.map +1 -1
  115. package/fesm2022/acorex-components-notification.mjs +2 -2
  116. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  117. package/fesm2022/acorex-components-number-box.mjs +2 -2
  118. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  119. package/fesm2022/acorex-components-otp.mjs +2 -2
  120. package/fesm2022/acorex-components-otp.mjs.map +1 -1
  121. package/fesm2022/acorex-components-paint.mjs +4 -4
  122. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  123. package/fesm2022/acorex-components-password-box.mjs +4 -4
  124. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  125. package/fesm2022/acorex-components-pdf-reader.mjs +2 -2
  126. package/fesm2022/acorex-components-pdf-reader.mjs.map +1 -1
  127. package/fesm2022/acorex-components-phone-box.mjs +2 -2
  128. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  129. package/fesm2022/acorex-components-picker.mjs +6 -6
  130. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  131. package/fesm2022/acorex-components-popup.mjs +3 -3
  132. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  133. package/fesm2022/acorex-components-progress-bar.mjs +2 -2
  134. package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
  135. package/fesm2022/acorex-components-qrcode.mjs +2 -2
  136. package/fesm2022/acorex-components-qrcode.mjs.map +1 -1
  137. package/fesm2022/acorex-components-query-builder.mjs +2 -2
  138. package/fesm2022/acorex-components-query-builder.mjs.map +1 -1
  139. package/fesm2022/acorex-components-radio.mjs +2 -2
  140. package/fesm2022/acorex-components-radio.mjs.map +1 -1
  141. package/fesm2022/acorex-components-rail-navigation.mjs +2 -2
  142. package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
  143. package/fesm2022/acorex-components-range-slider.mjs +2 -2
  144. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  145. package/fesm2022/acorex-components-rate-picker.mjs +2 -2
  146. package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
  147. package/fesm2022/acorex-components-rest-api-generator.mjs +10 -10
  148. package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
  149. package/fesm2022/acorex-components-result.mjs +2 -2
  150. package/fesm2022/acorex-components-result.mjs.map +1 -1
  151. package/fesm2022/acorex-components-routing-progress.mjs +2 -2
  152. package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
  153. package/fesm2022/acorex-components-scheduler-picker.mjs +40 -32
  154. package/fesm2022/acorex-components-scheduler-picker.mjs.map +1 -1
  155. package/fesm2022/acorex-components-scheduler.mjs +19 -22
  156. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  157. package/fesm2022/acorex-components-search-box.mjs +4 -2
  158. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  159. package/fesm2022/acorex-components-select-box.mjs +5 -7
  160. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  161. package/fesm2022/acorex-components-selection-list-2.mjs +2 -2
  162. package/fesm2022/acorex-components-selection-list-2.mjs.map +1 -1
  163. package/fesm2022/acorex-components-selection-list.mjs +2 -2
  164. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  165. package/fesm2022/acorex-components-side-menu.mjs +2 -2
  166. package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
  167. package/fesm2022/acorex-components-skeleton.mjs +2 -2
  168. package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
  169. package/fesm2022/acorex-components-sliding-item.mjs +2 -2
  170. package/fesm2022/acorex-components-sliding-item.mjs.map +1 -1
  171. package/fesm2022/acorex-components-step-wizard.mjs +2 -2
  172. package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
  173. package/fesm2022/acorex-components-switch.mjs +2 -2
  174. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  175. package/fesm2022/acorex-components-tabs.mjs +2 -2
  176. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  177. package/fesm2022/acorex-components-tag-box.mjs +2 -2
  178. package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
  179. package/fesm2022/acorex-components-tag.mjs +2 -2
  180. package/fesm2022/acorex-components-tag.mjs.map +1 -1
  181. package/fesm2022/acorex-components-text-area.mjs +2 -2
  182. package/fesm2022/acorex-components-text-area.mjs.map +1 -1
  183. package/fesm2022/acorex-components-text-box.mjs +2 -2
  184. package/fesm2022/acorex-components-text-box.mjs.map +1 -1
  185. package/fesm2022/acorex-components-time-line.mjs +4 -4
  186. package/fesm2022/acorex-components-time-line.mjs.map +1 -1
  187. package/fesm2022/acorex-components-toast.mjs +2 -2
  188. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  189. package/fesm2022/acorex-components-toolbar.mjs +2 -2
  190. package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
  191. package/fesm2022/acorex-components-tooltip.mjs +2 -2
  192. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  193. package/fesm2022/acorex-components-tree-view.mjs +2 -2
  194. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  195. package/fesm2022/acorex-components-uploader.mjs +6 -6
  196. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  197. package/fesm2022/acorex-components-wysiwyg.mjs +6 -6
  198. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  199. package/package.json +12 -10
  200. package/types/acorex-components-badge.d.ts +2 -4
  201. package/types/acorex-components-conversation.d.ts +6574 -479
  202. package/types/acorex-components-file-viewer.d.ts +180 -0
  203. package/types/acorex-components-image-editor.d.ts +74 -47
  204. package/types/acorex-components-kbd.d.ts +2 -2
  205. package/types/acorex-components-scheduler-picker.d.ts +2 -0
  206. package/types/acorex-components-scheduler.d.ts +1 -3
  207. package/conversation2/README.md +0 -463
  208. package/fesm2022/acorex-components-conversation2.mjs +0 -22194
  209. package/fesm2022/acorex-components-conversation2.mjs.map +0 -1
  210. package/fesm2022/acorex-components-modal-acorex-components-modal-lJw2DGSj.mjs.map +0 -1
  211. package/fesm2022/acorex-components-modal-modal-content.component-t9kRuhc_.mjs.map +0 -1
  212. package/types/acorex-components-conversation2.d.ts +0 -6365
@@ -1,3 +1,463 @@
1
- # @acorex/components/chat
1
+ # @acorex/components/conversation
2
2
 
3
- Secondary entry point of `@acorex/components`. It can be used by importing from `@acorex/components/chat`.
3
+ A modern, fully-featured conversation/chat component for Angular 18+. Built with signals, standalone components, and extensibility in mind.
4
+
5
+ ## 🚀 Features
6
+
7
+ - **Real-time Messaging** - Live message updates with WebSocket support
8
+ - **Multiple Message Types** - Text, images, videos, audio, voice, files, locations, stickers, contacts
9
+ - **Rich Interactions** - Reactions, replies, message editing, deletion, forwarding
10
+ - **Group & Private Chats** - Support for 1-on-1 and group conversations
11
+ - **Typing Indicators** - Real-time typing status
12
+ - **Read Receipts** - Message delivery and read status
13
+ - **Infinite Scroll** - Efficient pagination for message history
14
+ - **Search** - Search within conversations and messages
15
+ - **Extensible** - Plugin system for custom message renderers and actions
16
+ - **Responsive** - Mobile-friendly design
17
+ - **Accessibility** - ARIA labels and keyboard navigation
18
+
19
+ ## 📦 Installation
20
+
21
+ ```bash
22
+ npm install @acorex/components/conversation
23
+ ```
24
+
25
+ ## 🔧 Peer Dependencies
26
+
27
+ This package requires the following peer dependencies:
28
+
29
+ ### Required Angular Dependencies
30
+
31
+ ```json
32
+ {
33
+ "@angular/common": "^18.0.0",
34
+ "@angular/core": "^18.0.0",
35
+ "@angular/forms": "^18.0.0",
36
+ "rxjs": "^7.8.0"
37
+ }
38
+ ```
39
+
40
+ ### Required Acorex Dependencies
41
+
42
+ #### Core Packages
43
+
44
+ - `@acorex/cdk/common` - Common utilities and directives
45
+ - `@acorex/core/date-time` - Date and time formatting
46
+ - `@acorex/core/format` - General formatting utilities
47
+
48
+ #### Component Packages
49
+
50
+ - `@acorex/components/avatar` - User avatars
51
+ - `@acorex/components/badge` - Notification badges
52
+ - `@acorex/components/button` - Button components
53
+ - `@acorex/components/decorators` - Decorative elements
54
+ - `@acorex/components/dialog` - Dialog service
55
+ - `@acorex/components/dropdown` - Dropdown panels
56
+ - `@acorex/components/image` - Image components
57
+ - `@acorex/components/label` - Label components
58
+ - `@acorex/components/loading` - Loading indicators
59
+ - `@acorex/components/menu` - Context menus
60
+ - `@acorex/components/popover` - Popover components
61
+ - `@acorex/components/popup` - Popup service
62
+ - `@acorex/components/search-box` - Search functionality
63
+ - `@acorex/components/select-box` - Select dropdowns
64
+ - `@acorex/components/tabs` - Tab components
65
+ - `@acorex/components/text-area` - Text input areas
66
+ - `@acorex/components/text-box` - Text input boxes
67
+ - `@acorex/components/toast` - Toast notifications
68
+ - `@acorex/components/tooltip` - Tooltips
69
+ - `@acorex/components/uploader` - File upload functionality
70
+
71
+ ## 🎯 Quick Start
72
+
73
+ > **New to conversation?** Check out our [5-Minute Quick Start Guide](./docs/QUICK-START.md) for the fastest way to get started!
74
+
75
+ ### Detailed Setup
76
+
77
+ ### 1. Standalone Application (Recommended)
78
+
79
+ ```typescript
80
+ import { ApplicationConfig } from '@angular/core';
81
+ import {
82
+ provideConversation,
83
+ AXIndexedDBUserApi,
84
+ AXIndexedDBConversationApi,
85
+ AXIndexedDBMessageApi,
86
+ AXIndexedDBRealtimeApi,
87
+ } from '@acorex/components/conversation';
88
+
89
+ export const appConfig: ApplicationConfig = {
90
+ providers: [
91
+ MyAppUploaderService,
92
+ provideConversation({
93
+ userApi: AXIndexedDBUserApi,
94
+ conversationApi: AXIndexedDBConversationApi,
95
+ messageApi: AXIndexedDBMessageApi,
96
+ realtimeApi: AXIndexedDBRealtimeApi, // optional
97
+ config: {
98
+ messagePageSize: 50,
99
+ conversationPageSize: 30,
100
+ },
101
+ registry: {
102
+ // Optional: Register custom message renderers, actions, etc.
103
+ },
104
+ }),
105
+ ],
106
+ };
107
+ ```
108
+
109
+ ### 2. NgModule Application (Legacy)
110
+
111
+ ```typescript
112
+ import { NgModule } from '@angular/core';
113
+ import {
114
+ AXConversationModule,
115
+ AXIndexedDBUserApi,
116
+ AXIndexedDBConversationApi,
117
+ AXIndexedDBMessageApi,
118
+ AXIndexedDBRealtimeApi,
119
+ } from '@acorex/components/conversation';
120
+
121
+ @NgModule({
122
+ imports: [
123
+ AXConversationModule.forRoot({
124
+ userApi: AXIndexedDBUserApi,
125
+ conversationApi: AXIndexedDBConversationApi,
126
+ messageApi: AXIndexedDBMessageApi,
127
+ realtimeApi: AXIndexedDBRealtimeApi,
128
+ config: { /* ... */ },
129
+ }),
130
+ ],
131
+ })
132
+ export class AppModule {}
133
+ ```
134
+
135
+ ### 3. Use in Template
136
+
137
+ ```html
138
+ <ax-conversation-container></ax-conversation-container>
139
+ ```
140
+
141
+ ## 🔌 API Implementation
142
+
143
+ You must provide an API implementation that extends `AXConversationApi`:
144
+
145
+ ```typescript
146
+ import { Injectable } from '@angular/core';
147
+ import { HttpClient } from '@angular/common/http';
148
+ import { AXConversationApi, AXConversationPagination, AXConversationPaginatedResult } from '@acorex/components/conversation';
149
+
150
+ @Injectable()
151
+ export class MyConversationApi extends AXConversationApi {
152
+ constructor(private http: HttpClient) {
153
+ super();
154
+ }
155
+
156
+ async connect(): Promise<void> {
157
+ // Initialize WebSocket connection
158
+ }
159
+
160
+ async fetchConversations(pagination: AXConversationPagination): Promise<AXConversationPaginatedResult<AXConversation>> {
161
+ const response = await this.http.get('/api/conversations', {
162
+ params: { page: pagination.page, pageSize: pagination.pageSize }
163
+ }).toPromise();
164
+ return response;
165
+ }
166
+
167
+ // Implement other required methods...
168
+ }
169
+ ```
170
+
171
+ ### Built-in API Implementations
172
+
173
+ #### IndexedDB API (Development/Demo)
174
+
175
+ ```typescript
176
+ import {
177
+ provideConversation,
178
+ AXIndexedDBUserApi,
179
+ AXIndexedDBConversationApi,
180
+ AXIndexedDBMessageApi,
181
+ AXIndexedDBRealtimeApi,
182
+ } from '@acorex/components/conversation';
183
+
184
+ // Provides in-memory storage with sample data
185
+ // Perfect for development and demos
186
+ provideConversation({
187
+ userApi: AXIndexedDBUserApi,
188
+ conversationApi: AXIndexedDBConversationApi,
189
+ messageApi: AXIndexedDBMessageApi,
190
+ realtimeApi: AXIndexedDBRealtimeApi,
191
+ });
192
+ ```
193
+
194
+ Register a service that subscribes to `AXUploaderService.onUpload`, `onResolveUrl`, and `onDeleteMedia` (see showcase `AXShowcaseConversationIndexedDbUploaderService`).
195
+
196
+ #### IndexedDB with AI API (AI-Powered Demo)
197
+
198
+ ```typescript
199
+ import {
200
+ provideConversation,
201
+ AXIndexedDBUserApi,
202
+ AXIndexedDBConversationApi,
203
+ AXIndexedDBMessageAIApi,
204
+ AXIndexedDBRealtimeApi,
205
+ } from '@acorex/components/conversation';
206
+
207
+ // Includes AI-powered auto-responses via message API
208
+ provideConversation({
209
+ userApi: AXIndexedDBUserApi,
210
+ conversationApi: AXIndexedDBConversationApi,
211
+ messageApi: AXIndexedDBMessageAIApi,
212
+ realtimeApi: AXIndexedDBRealtimeApi,
213
+ });
214
+ ```
215
+
216
+ ## ⚙️ Configuration
217
+
218
+ ### Conversation Config
219
+
220
+ ```typescript
221
+ interface AXConversationConfig {
222
+ // Pagination
223
+ messagePageSize?: number; // Default: 50
224
+ conversationPageSize?: number; // Default: 30
225
+ infiniteScrollThreshold?: number; // Default: 200px
226
+ scrollThreshold?: number; // Default: 100px
227
+
228
+ // UI Behavior
229
+ messageHighlightDuration?: number; // Default: 2000ms
230
+ typingIndicatorTimeout?: number; // Default: 3000ms
231
+ }
232
+ ```
233
+
234
+ ### Registry Configuration
235
+
236
+ ```typescript
237
+ interface AXConversationRegistryConfiguration {
238
+ messageRenderers?: AXConversationMessageRenderer[];
239
+ messageActions?: AXConversationMessageAction[];
240
+ composerActions?: AXConversationComposerAction[];
241
+ composerTabs?: AXConversationComposerTab[];
242
+ conversationTabs?: AXConversationTab[];
243
+ infoBarActions?: AXConversationInfoBarAction[];
244
+ conversationItemActions?: AXConversationItemAction[];
245
+ }
246
+ ```
247
+
248
+ ## 🎨 Customization
249
+
250
+ ### Custom Message Renderer
251
+
252
+ ```typescript
253
+ import { Component, input } from '@angular/core';
254
+ import { AXConversationMessageRenderer } from '@acorex/components/conversation';
255
+
256
+ @Component({
257
+ selector: 'my-custom-renderer',
258
+ template: `<div>{{ message().payload.customData }}</div>`
259
+ })
260
+ export class MyCustomRendererComponent {
261
+ message = input.required<AXConversationMessage>();
262
+ }
263
+
264
+ const myRenderer: AXConversationMessageRenderer = {
265
+ type: 'custom',
266
+ component: MyCustomRendererComponent,
267
+ priority: 100
268
+ };
269
+
270
+ // Register in config
271
+ provideConversation({
272
+ api: MyApi,
273
+ registry: {
274
+ messageRenderers: [myRenderer]
275
+ }
276
+ });
277
+ ```
278
+
279
+ ### Custom Message Action
280
+
281
+ ```typescript
282
+ const forwardAction: AXConversationMessageAction = {
283
+ id: 'forward',
284
+ label: 'Forward',
285
+ icon: 'forward',
286
+ shortcut: 'Ctrl+F',
287
+ enabled: (message, user) => message.senderId === user.id,
288
+ execute: async (message, service) => {
289
+ // Forward logic
290
+ }
291
+ };
292
+
293
+ provideConversation({
294
+ api: MyApi,
295
+ registry: {
296
+ messageActions: [forwardAction]
297
+ }
298
+ });
299
+ ```
300
+
301
+ ## 📱 Components
302
+
303
+ ### Main Components
304
+
305
+ - `<ax-conversation-container>` - Full conversation UI with sidebar, messages, and composer
306
+ - `<ax-conversation-sidebar>` - Conversation list sidebar
307
+ - `<ax-conversation-message-list>` - Message list with virtual scrolling
308
+ - `<ax-conversation-composer>` - Message input area
309
+ - `<ax-conversation-info-bar>` - Conversation header with actions
310
+
311
+ ### Usage Examples
312
+
313
+ ```html
314
+ <!-- Full conversation UI -->
315
+ <ax-conversation-container></ax-conversation-container>
316
+
317
+ <!-- Custom layout -->
318
+ <div class="my-chat-layout">
319
+ <ax-conversation-sidebar></ax-conversation-sidebar>
320
+ <div class="chat-main">
321
+ <ax-conversation-info-bar></ax-conversation-info-bar>
322
+ <ax-conversation-message-list></ax-conversation-message-list>
323
+ <ax-conversation-composer></ax-conversation-composer>
324
+ </div>
325
+ </div>
326
+ ```
327
+
328
+ ## 🎭 Services
329
+
330
+ ### AXConversationService
331
+
332
+ Main service for conversation operations:
333
+
334
+ ```typescript
335
+ import { inject } from '@angular/core';
336
+ import { AXConversationService } from '@acorex/components/conversation';
337
+
338
+ export class MyComponent {
339
+ private conversationService = inject(AXConversationService);
340
+
341
+ async sendMessage() {
342
+ await this.conversationService.sendMessage({
343
+ conversationId: 'conv-123',
344
+ type: 'text',
345
+ payload: { text: 'Hello!' }
346
+ });
347
+ }
348
+
349
+ async createConversation() {
350
+ const conv = await this.conversationService.createConversation(
351
+ ['user-1', 'user-2'],
352
+ 'private'
353
+ );
354
+ }
355
+ }
356
+ ```
357
+
358
+ ## 🧪 Testing
359
+
360
+ ```typescript
361
+ import { TestBed } from '@angular/core/testing';
362
+ import { provideConversation, AXConversationService } from '@acorex/components/conversation';
363
+ import { MockUserApi, MockConversationApi, MockMessageApi } from './mocks/mock-apis';
364
+
365
+ describe('MyComponent', () => {
366
+ beforeEach(() => {
367
+ TestBed.configureTestingModule({
368
+ providers: [
369
+ provideConversation({
370
+ userApi: MockUserApi,
371
+ conversationApi: MockConversationApi,
372
+ messageApi: MockMessageApi,
373
+ }),
374
+ ],
375
+ });
376
+ });
377
+
378
+ it('should send message', async () => {
379
+ const service = TestBed.inject(AXConversationService);
380
+ const message = await service.sendMessage({
381
+ conversationId: 'test',
382
+ type: 'text',
383
+ payload: { text: 'Test' },
384
+ });
385
+ expect(message).toBeDefined();
386
+ });
387
+ });
388
+ ```
389
+
390
+ ## 🎯 Message Types
391
+
392
+ Supported message types out of the box:
393
+
394
+ - **text** - Plain text messages
395
+ - **image** - Image messages with thumbnails
396
+ - **video** - Video messages with playback
397
+ - **audio** - Audio file messages
398
+ - **voice** - Voice recordings
399
+ - **file** - Generic file attachments
400
+ - **location** - Location sharing
401
+ - **sticker** - Sticker messages
402
+ - **contact** - Contact card sharing
403
+ - **system** - System notifications
404
+
405
+ ## 🔒 Security Considerations
406
+
407
+ - **API Keys**: Never hardcode API keys in source code. Use environment variables or injection tokens.
408
+ - **File Upload**: Validate file types and sizes on both client and server.
409
+ - **XSS Protection**: All user content is sanitized by default.
410
+ - **Authentication**: Implement proper authentication in your API layer.
411
+
412
+ ## 📊 Performance Tips
413
+
414
+ 1. **Virtual Scrolling**: Enabled by default for large message lists
415
+ 2. **Lazy Loading**: Images and media are loaded on demand
416
+ 3. **Pagination**: Messages are loaded in pages to reduce initial load
417
+ 4. **Debouncing**: Typing indicators are debounced to reduce network traffic
418
+ 5. **Memoization**: Use computed signals for expensive calculations
419
+
420
+ ## 🐛 Troubleshooting
421
+
422
+ ### Common Issues
423
+
424
+ **Issue**: Messages not appearing
425
+
426
+ - Check if API is connected: `conversationService.connectionStatus$()`
427
+ - Verify API implementation returns correct data structure
428
+
429
+ **Issue**: File upload fails
430
+
431
+ - Check composer file-type catalogs and per-action `uploadConstraints` (`allowedMimeTypes`, `minSize`, `maxSize`)
432
+ - Register a handler service subscribed to `AXUploaderService.onUpload` (and resolve/delete events) with progress and `AbortSignal` support
433
+
434
+ **Issue**: Styling issues
435
+
436
+ - Ensure all Acorex component styles are imported
437
+ - Check for CSS conflicts with global styles
438
+
439
+ ## 📚 Additional Resources
440
+
441
+ - [Quick Start Guide](./docs/QUICK-START.md) - Get started in 5 minutes
442
+ - [Architecture Overview](./docs/ARCHITECTURE-OVERVIEW.md) - Understand the module structure
443
+ - [API Documentation](./docs/ARCHITECTURE-APIS.md) - Implement custom backends
444
+ - [Component Guide](./docs/ARCHITECTURE-COMPONENTS.md) - Learn about components
445
+ - [Plugin System](./docs/ARCHITECTURE-PLUGINS.md) - Extend functionality
446
+ - [Usage Guide](./docs/USAGE-GUIDE.md) - Advanced usage patterns
447
+
448
+ ## 🤝 Contributing
449
+
450
+ Contributions are welcome! Please read our [Contributing Guide](./CONTRIBUTING.md) for details.
451
+
452
+ ## 📄 License
453
+
454
+ MIT License - see LICENSE file for details
455
+
456
+ ## 🔄 Changelog
457
+
458
+ See [CHANGELOG.md](./CHANGELOG.md) for version history and updates.
459
+
460
+ ## 💬 Support
461
+
462
+ - GitHub Issues: [Report a bug](https://github.com/acorexui/acorex-ui/issues)
463
+ - Discussions: [Ask questions](https://github.com/acorexui/acorex-ui/discussions)
@@ -45,7 +45,7 @@ class AXAccordionItemComponent {
45
45
  this.isCollapsed.update((prev) => !prev);
46
46
  }
47
47
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXAccordionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
48
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXAccordionItemComponent, isStandalone: true, selector: "ax-accordion-item", inputs: { isCollapsed: { classPropertyName: "isCollapsed", publicName: "isCollapsed", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, textdecoration: { classPropertyName: "textdecoration", publicName: "textdecoration", isSignal: true, isRequired: false, transformFunction: null }, caption: { classPropertyName: "caption", publicName: "caption", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, headerTemplate: { classPropertyName: "headerTemplate", publicName: "headerTemplate", isSignal: true, isRequired: false, transformFunction: null }, look: { classPropertyName: "look", publicName: "look", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isCollapsed: "isCollapsedChange", isLoading: "isLoadingChange", onClick: "onClick" }, host: { properties: { "class": "this.__hostClass" } }, viewQueries: [{ propertyName: "accordionItem", first: true, predicate: AXAccordionItemDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<div [(isCollapsed)]=\"isCollapsed\" axAccordionItem>\n <div axAccordionItemHeader class=\"ax-accordion-header\">\n @if (headerTemplate()) {\n <div class=\"ax-accordion-custom-header-container\">\n <ng-container\n [ngTemplateOutlet]=\"headerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: { caption: caption(), isCollapsed: isCollapsed() } }\"\n ></ng-container>\n </div>\n } @else {\n <div class=\"ax-accordion-header-container\" tabindex=\"0\">\n <div class=\"ax-accordion-header-start\">\n <span class=\"ax-accordion-header-icon\" [class]=\"icon()\"> </span>\n <span>\n {{ caption() }}\n </span>\n </div>\n <div class=\"ax-accordion-header-end\">\n @if (isLoading()) {\n <ax-loading></ax-loading>\n } @else {\n <span\n class=\"ax-icon ax-icon-chevron-left ax-accordion-arrow\"\n [ngClass]=\"{ '-rotate-90': isCollapsed(), 'rotate-90': !isCollapsed() }\"\n ></span>\n }\n </div>\n </div>\n }\n </div>\n\n <div axAccordionItemContent class=\"ax-accordion-body\">\n <div class=\"ax-accordion-body-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: ["@layer components{.dark ax-accordion-item.ax-card :hover{background-color:rgb(var(--ax-sys-color-dark-surface))}ax-accordion-item{width:100%;font-size:var(--text-base,1rem);line-height:var(--tw-leading,var(--text-base--line-height, 1.5 ));line-height:1.5rem;display:block;overflow:hidden}ax-accordion-item.ax-solid{border-radius:var(--ax-sys-border-radius);border-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-item.ax-solid .ax-accordion-header{background-color:rgba(var(--ax-comp-accordion-bg-color))}ax-accordion-item.ax-fill .ax-accordion-header{border-radius:var(--ax-sys-border-radius);background-color:rgba(var(--ax-comp-accordion-bg-color));transition:background-color .3s,color .3s}ax-accordion-item.ax-fill .ax-accordion-header:hover{background-color:rgba(var(--ax-sys-color-light-surface))}ax-accordion-item.ax-outline{border-radius:var(--ax-sys-border-radius);border-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-item.ax-outline .ax-accordion-header{background-color:#0000}ax-accordion-item.ax-flat{border-bottom-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-item.ax-flat .ax-accordion-header{background-color:#0000}ax-accordion-item.ax-card{border-bottom-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-item.ax-card :hover{background-color:rgb(var(--ax-sys-color-lighter-surface));transition:background-color .3s,color .3s}ax-accordion-item.ax-card:last-child{border-bottom-width:0}ax-accordion-item.ax-card .ax-accordion-header{background-color:#0000}ax-accordion-item.ax-card .ax-test-border{border:1px solid}ax-accordion-item.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-accordion-item .ax-accordion-header,ax-accordion-item .ax-accordion-body{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));line-height:1.25rem;color:rgba(var(--ax-sys-color-on-surface-high))!important}ax-accordion-item .ax-accordion-header{cursor:pointer;padding:calc(var(--spacing,.25rem) * 3);-webkit-user-select:none;user-select:none;font-weight:500}ax-accordion-item .ax-accordion-header .ax-accordion-header-container{justify-content:space-between;display:flex}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-start{align-items:center;display:flex}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-start:not(:empty) .ax-accordion-header-icon{padding-inline-end:calc(var(--spacing,.25rem) * 2)}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-end{height:calc(var(--spacing,.25rem) * 6);width:calc(var(--spacing,.25rem) * 6);justify-content:center;align-items:center;display:flex}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-end .ax-accordion-arrow{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));transition-duration:var(--ax-sys-transition-duration);transition-timing-function:var(--ax-sys-transition-timing-function);display:block}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-end .ax-accordion-arrow.-rotation-90{transform:rotate(-90deg)}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-end .ax-accordion-arrow.rotation-90{transform:rotate(90deg)}ax-accordion-item .ax-accordion-header-container:focus-visible{outline-color:rgba(var(--ax-comp-accordion-border-color));border-radius:var(--ax-sys-border-radius);padding:10px 0}ax-accordion-item .ax-accordion-body .ax-accordion-body-content{padding:calc(var(--spacing,.25rem) * 4);padding-inline-start:1.25rem;padding-inline-end:calc(var(--spacing,.25rem) * 4);font-weight:400}ax-accordion-item.ax-text-decorator .ax-accordion-header:hover .ax-accordion-header-start{text-decoration:underline}}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i1.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: AXAccordionItemHeaderDirective, selector: "[axAccordionItemHeader]", exportAs: ["axAccordionItemHeader"] }, { kind: "directive", type: AXAccordionItemDirective, selector: "[axAccordionItem]", inputs: ["isCollapsed"], outputs: ["isCollapsedChange", "onClick"], exportAs: ["axAccordionItem"] }, { kind: "directive", type: AXAccordionItemContentDirective, selector: "[axAccordionItemContent]", inputs: ["transition"], exportAs: ["axAccordionItemContent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXAccordionItemComponent, isStandalone: true, selector: "ax-accordion-item", inputs: { isCollapsed: { classPropertyName: "isCollapsed", publicName: "isCollapsed", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, textdecoration: { classPropertyName: "textdecoration", publicName: "textdecoration", isSignal: true, isRequired: false, transformFunction: null }, caption: { classPropertyName: "caption", publicName: "caption", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, headerTemplate: { classPropertyName: "headerTemplate", publicName: "headerTemplate", isSignal: true, isRequired: false, transformFunction: null }, look: { classPropertyName: "look", publicName: "look", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isCollapsed: "isCollapsedChange", isLoading: "isLoadingChange", onClick: "onClick" }, host: { properties: { "class": "this.__hostClass" } }, viewQueries: [{ propertyName: "accordionItem", first: true, predicate: AXAccordionItemDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<div [(isCollapsed)]=\"isCollapsed\" axAccordionItem>\n <div axAccordionItemHeader class=\"ax-accordion-header\">\n @if (headerTemplate()) {\n <div class=\"ax-accordion-custom-header-container\">\n <ng-container\n [ngTemplateOutlet]=\"headerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: { caption: caption(), isCollapsed: isCollapsed() } }\"\n ></ng-container>\n </div>\n } @else {\n <div class=\"ax-accordion-header-container\" tabindex=\"0\">\n <div class=\"ax-accordion-header-start\">\n <span class=\"ax-accordion-header-icon\" [class]=\"icon()\"> </span>\n <span>\n {{ caption() }}\n </span>\n </div>\n <div class=\"ax-accordion-header-end\">\n @if (isLoading()) {\n <ax-loading></ax-loading>\n } @else {\n <span\n class=\"ax-icon ax-icon-chevron-left ax-accordion-arrow\"\n [ngClass]=\"{ '-rotate-90': isCollapsed(), 'rotate-90': !isCollapsed() }\"\n ></span>\n }\n </div>\n </div>\n }\n </div>\n\n <div axAccordionItemContent class=\"ax-accordion-body\">\n <div class=\"ax-accordion-body-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: ["@layer components{.dark ax-accordion-item.ax-card :hover{background-color:rgb(var(--ax-sys-color-dark-surface))}ax-accordion-item{display:block;width:100%;overflow:hidden;font-size:var(--text-base, 1rem);line-height:var(--tw-leading, var(--text-base--line-height, 1.5 ));line-height:1.5rem}ax-accordion-item.ax-solid{border-radius:var(--ax-sys-border-radius);border-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-item.ax-solid .ax-accordion-header{background-color:rgba(var(--ax-comp-accordion-bg-color))}ax-accordion-item.ax-fill .ax-accordion-header{border-radius:var(--ax-sys-border-radius);background-color:rgba(var(--ax-comp-accordion-bg-color));transition:background-color .3s ease,color .3s ease}ax-accordion-item.ax-fill .ax-accordion-header:hover{background-color:rgba(var(--ax-sys-color-light-surface))}ax-accordion-item.ax-outline{border-radius:var(--ax-sys-border-radius);border-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-item.ax-outline .ax-accordion-header{background-color:transparent}ax-accordion-item.ax-flat{border-bottom-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-item.ax-flat .ax-accordion-header{background-color:transparent}ax-accordion-item.ax-card{border-bottom-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-item.ax-card :hover{background-color:rgb(var(--ax-sys-color-lighter-surface));transition:background-color .3s ease,color .3s ease}ax-accordion-item.ax-card:last-child{border-bottom-width:0}ax-accordion-item.ax-card .ax-accordion-header{background-color:transparent}ax-accordion-item.ax-card .ax-test-border{border:1px solid}ax-accordion-item.ax-state-disabled{cursor:not-allowed;opacity:50%}ax-accordion-item .ax-accordion-header,ax-accordion-item .ax-accordion-body{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));line-height:1.25rem;color:rgba(var(--ax-sys-color-on-surface-high))!important}ax-accordion-item .ax-accordion-header{cursor:pointer;padding:calc(var(--spacing, .25rem) * 3);-webkit-user-select:none;user-select:none;font-weight:500}ax-accordion-item .ax-accordion-header .ax-accordion-header-container{display:flex;justify-content:space-between}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-start{display:flex;align-items:center}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-start:not(:empty) .ax-accordion-header-icon{padding-inline-end:calc(var(--spacing, .25rem) * 2)}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-end{display:flex;height:calc(var(--spacing, .25rem) * 6);width:calc(var(--spacing, .25rem) * 6);align-items:center;justify-content:center}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-end .ax-accordion-arrow{display:block;transition-property:all;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration, var(--default-transition-duration, .15s));transition-duration:var(--ax-sys-transition-duration);transition-timing-function:var(--ax-sys-transition-timing-function)}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-end .ax-accordion-arrow.-rotation-90{transform:rotate(-90deg)}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-end .ax-accordion-arrow.rotation-90{transform:rotate(90deg)}ax-accordion-item .ax-accordion-header-container:focus-visible{outline-color:rgba(var(--ax-comp-accordion-border-color));border-radius:var(--ax-sys-border-radius);padding:10px 0}ax-accordion-item .ax-accordion-body .ax-accordion-body-content{padding:calc(var(--spacing, .25rem) * 4);padding-inline-end:calc(var(--spacing, .25rem) * 4);padding-inline-start:1.25rem;font-weight:400}ax-accordion-item.ax-text-decorator .ax-accordion-header:hover .ax-accordion-header-start{text-decoration:underline}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i1.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: AXAccordionItemHeaderDirective, selector: "[axAccordionItemHeader]", exportAs: ["axAccordionItemHeader"] }, { kind: "directive", type: AXAccordionItemDirective, selector: "[axAccordionItem]", inputs: ["isCollapsed"], outputs: ["isCollapsedChange", "onClick"], exportAs: ["axAccordionItem"] }, { kind: "directive", type: AXAccordionItemContentDirective, selector: "[axAccordionItemContent]", inputs: ["transition"], exportAs: ["axAccordionItemContent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
49
49
  }
50
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXAccordionItemComponent, decorators: [{
51
51
  type: Component,
@@ -55,7 +55,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
55
55
  AXAccordionItemHeaderDirective,
56
56
  AXAccordionItemDirective,
57
57
  AXAccordionItemContentDirective,
58
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div [(isCollapsed)]=\"isCollapsed\" axAccordionItem>\n <div axAccordionItemHeader class=\"ax-accordion-header\">\n @if (headerTemplate()) {\n <div class=\"ax-accordion-custom-header-container\">\n <ng-container\n [ngTemplateOutlet]=\"headerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: { caption: caption(), isCollapsed: isCollapsed() } }\"\n ></ng-container>\n </div>\n } @else {\n <div class=\"ax-accordion-header-container\" tabindex=\"0\">\n <div class=\"ax-accordion-header-start\">\n <span class=\"ax-accordion-header-icon\" [class]=\"icon()\"> </span>\n <span>\n {{ caption() }}\n </span>\n </div>\n <div class=\"ax-accordion-header-end\">\n @if (isLoading()) {\n <ax-loading></ax-loading>\n } @else {\n <span\n class=\"ax-icon ax-icon-chevron-left ax-accordion-arrow\"\n [ngClass]=\"{ '-rotate-90': isCollapsed(), 'rotate-90': !isCollapsed() }\"\n ></span>\n }\n </div>\n </div>\n }\n </div>\n\n <div axAccordionItemContent class=\"ax-accordion-body\">\n <div class=\"ax-accordion-body-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: ["@layer components{.dark ax-accordion-item.ax-card :hover{background-color:rgb(var(--ax-sys-color-dark-surface))}ax-accordion-item{width:100%;font-size:var(--text-base,1rem);line-height:var(--tw-leading,var(--text-base--line-height, 1.5 ));line-height:1.5rem;display:block;overflow:hidden}ax-accordion-item.ax-solid{border-radius:var(--ax-sys-border-radius);border-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-item.ax-solid .ax-accordion-header{background-color:rgba(var(--ax-comp-accordion-bg-color))}ax-accordion-item.ax-fill .ax-accordion-header{border-radius:var(--ax-sys-border-radius);background-color:rgba(var(--ax-comp-accordion-bg-color));transition:background-color .3s,color .3s}ax-accordion-item.ax-fill .ax-accordion-header:hover{background-color:rgba(var(--ax-sys-color-light-surface))}ax-accordion-item.ax-outline{border-radius:var(--ax-sys-border-radius);border-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-item.ax-outline .ax-accordion-header{background-color:#0000}ax-accordion-item.ax-flat{border-bottom-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-item.ax-flat .ax-accordion-header{background-color:#0000}ax-accordion-item.ax-card{border-bottom-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-item.ax-card :hover{background-color:rgb(var(--ax-sys-color-lighter-surface));transition:background-color .3s,color .3s}ax-accordion-item.ax-card:last-child{border-bottom-width:0}ax-accordion-item.ax-card .ax-accordion-header{background-color:#0000}ax-accordion-item.ax-card .ax-test-border{border:1px solid}ax-accordion-item.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-accordion-item .ax-accordion-header,ax-accordion-item .ax-accordion-body{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));line-height:1.25rem;color:rgba(var(--ax-sys-color-on-surface-high))!important}ax-accordion-item .ax-accordion-header{cursor:pointer;padding:calc(var(--spacing,.25rem) * 3);-webkit-user-select:none;user-select:none;font-weight:500}ax-accordion-item .ax-accordion-header .ax-accordion-header-container{justify-content:space-between;display:flex}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-start{align-items:center;display:flex}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-start:not(:empty) .ax-accordion-header-icon{padding-inline-end:calc(var(--spacing,.25rem) * 2)}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-end{height:calc(var(--spacing,.25rem) * 6);width:calc(var(--spacing,.25rem) * 6);justify-content:center;align-items:center;display:flex}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-end .ax-accordion-arrow{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));transition-duration:var(--ax-sys-transition-duration);transition-timing-function:var(--ax-sys-transition-timing-function);display:block}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-end .ax-accordion-arrow.-rotation-90{transform:rotate(-90deg)}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-end .ax-accordion-arrow.rotation-90{transform:rotate(90deg)}ax-accordion-item .ax-accordion-header-container:focus-visible{outline-color:rgba(var(--ax-comp-accordion-border-color));border-radius:var(--ax-sys-border-radius);padding:10px 0}ax-accordion-item .ax-accordion-body .ax-accordion-body-content{padding:calc(var(--spacing,.25rem) * 4);padding-inline-start:1.25rem;padding-inline-end:calc(var(--spacing,.25rem) * 4);font-weight:400}ax-accordion-item.ax-text-decorator .ax-accordion-header:hover .ax-accordion-header-start{text-decoration:underline}}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] }]
58
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div [(isCollapsed)]=\"isCollapsed\" axAccordionItem>\n <div axAccordionItemHeader class=\"ax-accordion-header\">\n @if (headerTemplate()) {\n <div class=\"ax-accordion-custom-header-container\">\n <ng-container\n [ngTemplateOutlet]=\"headerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: { caption: caption(), isCollapsed: isCollapsed() } }\"\n ></ng-container>\n </div>\n } @else {\n <div class=\"ax-accordion-header-container\" tabindex=\"0\">\n <div class=\"ax-accordion-header-start\">\n <span class=\"ax-accordion-header-icon\" [class]=\"icon()\"> </span>\n <span>\n {{ caption() }}\n </span>\n </div>\n <div class=\"ax-accordion-header-end\">\n @if (isLoading()) {\n <ax-loading></ax-loading>\n } @else {\n <span\n class=\"ax-icon ax-icon-chevron-left ax-accordion-arrow\"\n [ngClass]=\"{ '-rotate-90': isCollapsed(), 'rotate-90': !isCollapsed() }\"\n ></span>\n }\n </div>\n </div>\n }\n </div>\n\n <div axAccordionItemContent class=\"ax-accordion-body\">\n <div class=\"ax-accordion-body-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: ["@layer components{.dark ax-accordion-item.ax-card :hover{background-color:rgb(var(--ax-sys-color-dark-surface))}ax-accordion-item{display:block;width:100%;overflow:hidden;font-size:var(--text-base, 1rem);line-height:var(--tw-leading, var(--text-base--line-height, 1.5 ));line-height:1.5rem}ax-accordion-item.ax-solid{border-radius:var(--ax-sys-border-radius);border-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-item.ax-solid .ax-accordion-header{background-color:rgba(var(--ax-comp-accordion-bg-color))}ax-accordion-item.ax-fill .ax-accordion-header{border-radius:var(--ax-sys-border-radius);background-color:rgba(var(--ax-comp-accordion-bg-color));transition:background-color .3s ease,color .3s ease}ax-accordion-item.ax-fill .ax-accordion-header:hover{background-color:rgba(var(--ax-sys-color-light-surface))}ax-accordion-item.ax-outline{border-radius:var(--ax-sys-border-radius);border-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-item.ax-outline .ax-accordion-header{background-color:transparent}ax-accordion-item.ax-flat{border-bottom-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-item.ax-flat .ax-accordion-header{background-color:transparent}ax-accordion-item.ax-card{border-bottom-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-item.ax-card :hover{background-color:rgb(var(--ax-sys-color-lighter-surface));transition:background-color .3s ease,color .3s ease}ax-accordion-item.ax-card:last-child{border-bottom-width:0}ax-accordion-item.ax-card .ax-accordion-header{background-color:transparent}ax-accordion-item.ax-card .ax-test-border{border:1px solid}ax-accordion-item.ax-state-disabled{cursor:not-allowed;opacity:50%}ax-accordion-item .ax-accordion-header,ax-accordion-item .ax-accordion-body{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));line-height:1.25rem;color:rgba(var(--ax-sys-color-on-surface-high))!important}ax-accordion-item .ax-accordion-header{cursor:pointer;padding:calc(var(--spacing, .25rem) * 3);-webkit-user-select:none;user-select:none;font-weight:500}ax-accordion-item .ax-accordion-header .ax-accordion-header-container{display:flex;justify-content:space-between}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-start{display:flex;align-items:center}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-start:not(:empty) .ax-accordion-header-icon{padding-inline-end:calc(var(--spacing, .25rem) * 2)}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-end{display:flex;height:calc(var(--spacing, .25rem) * 6);width:calc(var(--spacing, .25rem) * 6);align-items:center;justify-content:center}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-end .ax-accordion-arrow{display:block;transition-property:all;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration, var(--default-transition-duration, .15s));transition-duration:var(--ax-sys-transition-duration);transition-timing-function:var(--ax-sys-transition-timing-function)}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-end .ax-accordion-arrow.-rotation-90{transform:rotate(-90deg)}ax-accordion-item .ax-accordion-header .ax-accordion-header-container .ax-accordion-header-end .ax-accordion-arrow.rotation-90{transform:rotate(90deg)}ax-accordion-item .ax-accordion-header-container:focus-visible{outline-color:rgba(var(--ax-comp-accordion-border-color));border-radius:var(--ax-sys-border-radius);padding:10px 0}ax-accordion-item .ax-accordion-body .ax-accordion-body-content{padding:calc(var(--spacing, .25rem) * 4);padding-inline-end:calc(var(--spacing, .25rem) * 4);padding-inline-start:1.25rem;font-weight:400}ax-accordion-item.ax-text-decorator .ax-accordion-header:hover .ax-accordion-header-start{text-decoration:underline}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
59
59
  }], propDecorators: { isCollapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "isCollapsed", required: false }] }, { type: i0.Output, args: ["isCollapsedChange"] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], textdecoration: [{ type: i0.Input, args: [{ isSignal: true, alias: "textdecoration", required: false }] }], caption: [{ type: i0.Input, args: [{ isSignal: true, alias: "caption", required: false }] }], isLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLoading", required: false }] }, { type: i0.Output, args: ["isLoadingChange"] }], headerTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerTemplate", required: false }] }], look: [{ type: i0.Input, args: [{ isSignal: true, alias: "look", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], accordionItem: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXAccordionItemDirective), { isSignal: true }] }], onClick: [{ type: i0.Output, args: ["onClick"] }], __hostClass: [{
60
60
  type: HostBinding,
61
61
  args: ['class']
@@ -94,7 +94,7 @@ class AXAccordionGroupComponent {
94
94
  >
95
95
  <ng-content select="ax-accordion-item"></ng-content>
96
96
  </div>
97
- `, isInline: true, styles: ["@layer components{ax-accordion-group{width:100%;font-size:var(--text-base,1rem);line-height:var(--tw-leading,var(--text-base--line-height, 1.5 ));line-height:1.5rem;display:block;overflow:hidden}ax-accordion-group.ax-card{border-radius:var(--ax-sys-border-radius);border-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-group.ax-card ax-accordion-item{margin-bottom:0}ax-accordion-group ax-accordion-item{margin-bottom:var(--ax-comp-accordion-margin)}ax-accordion-group ax-accordion-item.ax-solid{border-radius:var(--ax-sys-border-radius);border-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-group ax-accordion-item.ax-solid .ax-accordion-header{background-color:rgba(var(--ax-comp-accordion-bg-color))}ax-accordion-group ax-accordion-item.ax-fill .ax-accordion-header{border-radius:var(--ax-sys-border-radius);background-color:rgba(var(--ax-comp-accordion-bg-color))}ax-accordion-group ax-accordion-item.ax-outline{border-radius:var(--ax-sys-border-radius);border-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-group ax-accordion-item.ax-outline .ax-accordion-header{background-color:#0000}ax-accordion-group ax-accordion-item.ax-flat{border-bottom-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-group ax-accordion-item.ax-flat .ax-accordion-header{background-color:#0000}ax-accordion-group ax-accordion-item.ax-card{border-bottom-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-group ax-accordion-item.ax-card .ax-accordion-header{background-color:#0000}}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXLoadingModule }, { kind: "directive", type: AXAccordionGroupDirective, selector: "[axAccordionGroup]", inputs: ["accordion", "activeIndex", "collapsedOnItemClick"], exportAs: ["axAccordionGroup"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
97
+ `, isInline: true, styles: ["@layer components{ax-accordion-group{display:block;width:100%;overflow:hidden;font-size:var(--text-base, 1rem);line-height:var(--tw-leading, var(--text-base--line-height, 1.5 ));line-height:1.5rem}ax-accordion-group.ax-card{border-radius:var(--ax-sys-border-radius);border-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-group.ax-card ax-accordion-item{margin-bottom:0}ax-accordion-group ax-accordion-item{margin-bottom:var(--ax-comp-accordion-margin)}ax-accordion-group ax-accordion-item.ax-solid{border-radius:var(--ax-sys-border-radius);border-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-group ax-accordion-item.ax-solid .ax-accordion-header{background-color:rgba(var(--ax-comp-accordion-bg-color))}ax-accordion-group ax-accordion-item.ax-fill .ax-accordion-header{border-radius:var(--ax-sys-border-radius);background-color:rgba(var(--ax-comp-accordion-bg-color))}ax-accordion-group ax-accordion-item.ax-outline{border-radius:var(--ax-sys-border-radius);border-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-group ax-accordion-item.ax-outline .ax-accordion-header{background-color:transparent}ax-accordion-group ax-accordion-item.ax-flat{border-bottom-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-group ax-accordion-item.ax-flat .ax-accordion-header{background-color:transparent}ax-accordion-group ax-accordion-item.ax-card{border-bottom-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-group ax-accordion-item.ax-card .ax-accordion-header{background-color:transparent}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXLoadingModule }, { kind: "directive", type: AXAccordionGroupDirective, selector: "[axAccordionGroup]", inputs: ["accordion", "activeIndex", "collapsedOnItemClick"], exportAs: ["axAccordionGroup"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
98
98
  }
99
99
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXAccordionGroupComponent, decorators: [{
100
100
  type: Component,
@@ -113,7 +113,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
113
113
  useExisting: AXAccordionGroupComponent,
114
114
  },
115
115
  { provide: AXComponent, useExisting: AXAccordionGroupComponent },
116
- ], styles: ["@layer components{ax-accordion-group{width:100%;font-size:var(--text-base,1rem);line-height:var(--tw-leading,var(--text-base--line-height, 1.5 ));line-height:1.5rem;display:block;overflow:hidden}ax-accordion-group.ax-card{border-radius:var(--ax-sys-border-radius);border-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-group.ax-card ax-accordion-item{margin-bottom:0}ax-accordion-group ax-accordion-item{margin-bottom:var(--ax-comp-accordion-margin)}ax-accordion-group ax-accordion-item.ax-solid{border-radius:var(--ax-sys-border-radius);border-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-group ax-accordion-item.ax-solid .ax-accordion-header{background-color:rgba(var(--ax-comp-accordion-bg-color))}ax-accordion-group ax-accordion-item.ax-fill .ax-accordion-header{border-radius:var(--ax-sys-border-radius);background-color:rgba(var(--ax-comp-accordion-bg-color))}ax-accordion-group ax-accordion-item.ax-outline{border-radius:var(--ax-sys-border-radius);border-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-group ax-accordion-item.ax-outline .ax-accordion-header{background-color:#0000}ax-accordion-group ax-accordion-item.ax-flat{border-bottom-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-group ax-accordion-item.ax-flat .ax-accordion-header{background-color:#0000}ax-accordion-group ax-accordion-item.ax-card{border-bottom-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-group ax-accordion-item.ax-card .ax-accordion-header{background-color:#0000}}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] }]
116
+ ], styles: ["@layer components{ax-accordion-group{display:block;width:100%;overflow:hidden;font-size:var(--text-base, 1rem);line-height:var(--tw-leading, var(--text-base--line-height, 1.5 ));line-height:1.5rem}ax-accordion-group.ax-card{border-radius:var(--ax-sys-border-radius);border-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-group.ax-card ax-accordion-item{margin-bottom:0}ax-accordion-group ax-accordion-item{margin-bottom:var(--ax-comp-accordion-margin)}ax-accordion-group ax-accordion-item.ax-solid{border-radius:var(--ax-sys-border-radius);border-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-group ax-accordion-item.ax-solid .ax-accordion-header{background-color:rgba(var(--ax-comp-accordion-bg-color))}ax-accordion-group ax-accordion-item.ax-fill .ax-accordion-header{border-radius:var(--ax-sys-border-radius);background-color:rgba(var(--ax-comp-accordion-bg-color))}ax-accordion-group ax-accordion-item.ax-outline{border-radius:var(--ax-sys-border-radius);border-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-group ax-accordion-item.ax-outline .ax-accordion-header{background-color:transparent}ax-accordion-group ax-accordion-item.ax-flat{border-bottom-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-group ax-accordion-item.ax-flat .ax-accordion-header{background-color:transparent}ax-accordion-group ax-accordion-item.ax-card{border-bottom-width:var(--ax-comp-accordion-border-width);border-color:rgba(var(--ax-comp-accordion-border-color))}ax-accordion-group ax-accordion-item.ax-card .ax-accordion-header{background-color:transparent}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
117
117
  }], propDecorators: { accordionGroup: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXAccordionGroupDirective), { isSignal: true }] }], content: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => AXAccordionItemComponent), { ...{ descendants: true }, isSignal: true }] }], accordion: [{ type: i0.Input, args: [{ isSignal: true, alias: "accordion", required: false }] }], activeIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeIndex", required: false }] }, { type: i0.Output, args: ["activeIndexChange"] }], look: [{ type: i0.Input, args: [{ isSignal: true, alias: "look", required: false }] }], collapsedOnItemClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsedOnItemClick", required: false }] }] } });
118
118
 
119
119
  class AXAccordionModule {
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-accordion.mjs","sources":["../../../../packages/components/accordion/src/lib/accordion-item/accordion-item.component.ts","../../../../packages/components/accordion/src/lib/accordion-item/accordion-item.component.html","../../../../packages/components/accordion/src/lib/accordion-group/accordion-group.component.ts","../../../../packages/components/accordion/src/lib/accordion.module.ts","../../../../packages/components/accordion/src/acorex-components-accordion.ts"],"sourcesContent":["import {\n AXAccordionItemContentDirective,\n AXAccordionItemDirective,\n AXAccordionItemHeaderDirective,\n} from '@acorex/cdk/accordion';\nimport { AXClickEvent } from '@acorex/cdk/common';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { CommonModule } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n inject,\n input,\n model,\n output,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXAccordionGroupComponent } from '../accordion-group/accordion-group.component';\nimport { AXAccordionLook } from '../accordion.type';\n\n@Component({\n selector: 'ax-accordion-item',\n templateUrl: './accordion-item.component.html',\n styleUrl: './accordion-item.component.compiled.css',\n imports: [\n AXLoadingModule,\n CommonModule,\n AXAccordionItemHeaderDirective,\n AXAccordionItemDirective,\n AXAccordionItemContentDirective,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXAccordionItemComponent {\n isCollapsed = model(true);\n icon = input('');\n textdecoration = input(false);\n caption = input('');\n isLoading = model(false);\n headerTemplate = input(null);\n look = input<AXAccordionLook>('solid');\n disabled = input(false);\n\n accordionItem = viewChild(AXAccordionItemDirective);\n private parent = inject(AXAccordionGroupComponent, { optional: true });\n\n onClick = output<AXClickEvent>();\n\n #init = afterNextRender(() => {\n this.accordionItem()?.onClick.subscribe((e) => {\n this.onClick.emit({ component: this, nativeEvent: e });\n });\n });\n\n @HostBinding('class')\n get __hostClass(): string[] {\n return [\n `${this.disabled() ? 'ax-state-disabled' : ''}`,\n `${this.textdecoration() ? 'ax-text-decorator' : ''}`,\n `ax-${this.parent?.look() ? this.parent.look() : this.look()}`,\n 'ax-default',\n ];\n }\n\n public open() {\n this.isCollapsed.set(false);\n }\n\n public close() {\n this.isCollapsed.set(true);\n }\n\n public toggle() {\n this.isCollapsed.update((prev) => !prev);\n }\n}\n","<div [(isCollapsed)]=\"isCollapsed\" axAccordionItem>\n <div axAccordionItemHeader class=\"ax-accordion-header\">\n @if (headerTemplate()) {\n <div class=\"ax-accordion-custom-header-container\">\n <ng-container\n [ngTemplateOutlet]=\"headerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: { caption: caption(), isCollapsed: isCollapsed() } }\"\n ></ng-container>\n </div>\n } @else {\n <div class=\"ax-accordion-header-container\" tabindex=\"0\">\n <div class=\"ax-accordion-header-start\">\n <span class=\"ax-accordion-header-icon\" [class]=\"icon()\"> </span>\n <span>\n {{ caption() }}\n </span>\n </div>\n <div class=\"ax-accordion-header-end\">\n @if (isLoading()) {\n <ax-loading></ax-loading>\n } @else {\n <span\n class=\"ax-icon ax-icon-chevron-left ax-accordion-arrow\"\n [ngClass]=\"{ '-rotate-90': isCollapsed(), 'rotate-90': !isCollapsed() }\"\n ></span>\n }\n </div>\n </div>\n }\n </div>\n\n <div axAccordionItemContent class=\"ax-accordion-body\">\n <div class=\"ax-accordion-body-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import { AXAccordionGroupDirective, AXAccordionItemDirective } from '@acorex/cdk/accordion';\nimport { AXComponent, MXLookableComponent } from '@acorex/cdk/common';\nimport { AXLoadingModule } from '@acorex/components/loading';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n effect,\n input,\n model,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXAccordionItemComponent } from '../accordion-item/accordion-item.component';\nimport { AXAccordionLook } from '../accordion.type';\n\n@Component({\n selector: 'ax-accordion-group',\n styleUrl: './accordion-group.component.compiled.css',\n imports: [AXLoadingModule, AXAccordionGroupDirective],\n template: `\n <div\n [activeIndex]=\"activeIndex()\"\n [collapsedOnItemClick]=\"collapsedOnItemClick()\"\n [accordion]=\"this.accordion()\"\n axAccordionGroup\n >\n <ng-content select=\"ax-accordion-item\"></ng-content>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: MXLookableComponent,\n useExisting: AXAccordionGroupComponent,\n },\n { provide: AXComponent, useExisting: AXAccordionGroupComponent },\n ],\n})\nexport class AXAccordionGroupComponent {\n private accordionGroup = viewChild(AXAccordionGroupDirective);\n private content = contentChildren(AXAccordionItemComponent, { descendants: true });\n\n accordion = input(true);\n activeIndex = model<number | number[]>(null);\n look = input<AXAccordionLook>('solid');\n collapsedOnItemClick = input(true);\n\n #eff = effect(() => {\n const accordionItemDirective: AXAccordionItemDirective[] = [];\n this.content().forEach((item) => {\n accordionItemDirective.push(item.accordionItem());\n });\n this.accordionGroup().customAccordionItem.set(accordionItemDirective);\n });\n}\n","import { NgModule } from '@angular/core';\nimport { AXAccordionGroupComponent } from './accordion-group/accordion-group.component';\nimport { AXAccordionItemComponent } from './accordion-item/accordion-item.component';\n\n@NgModule({\n imports: [AXAccordionItemComponent, AXAccordionGroupComponent],\n exports: [AXAccordionItemComponent, AXAccordionGroupComponent],\n})\nexport class AXAccordionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-accordion.mjs","sources":["../../../../packages/components/accordion/src/lib/accordion-item/accordion-item.component.ts","../../../../packages/components/accordion/src/lib/accordion-item/accordion-item.component.html","../../../../packages/components/accordion/src/lib/accordion-group/accordion-group.component.ts","../../../../packages/components/accordion/src/lib/accordion.module.ts","../../../../packages/components/accordion/src/acorex-components-accordion.ts"],"sourcesContent":["import {\n AXAccordionItemContentDirective,\n AXAccordionItemDirective,\n AXAccordionItemHeaderDirective,\n} from '@acorex/cdk/accordion';\nimport { AXClickEvent } from '@acorex/cdk/common';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { CommonModule } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n inject,\n input,\n model,\n output,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXAccordionGroupComponent } from '../accordion-group/accordion-group.component';\nimport { AXAccordionLook } from '../accordion.type';\n\n@Component({\n selector: 'ax-accordion-item',\n templateUrl: './accordion-item.component.html',\n styleUrl: './accordion-item.component.css',\n imports: [\n AXLoadingModule,\n CommonModule,\n AXAccordionItemHeaderDirective,\n AXAccordionItemDirective,\n AXAccordionItemContentDirective,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXAccordionItemComponent {\n isCollapsed = model(true);\n icon = input('');\n textdecoration = input(false);\n caption = input('');\n isLoading = model(false);\n headerTemplate = input(null);\n look = input<AXAccordionLook>('solid');\n disabled = input(false);\n\n accordionItem = viewChild(AXAccordionItemDirective);\n private parent = inject(AXAccordionGroupComponent, { optional: true });\n\n onClick = output<AXClickEvent>();\n\n #init = afterNextRender(() => {\n this.accordionItem()?.onClick.subscribe((e) => {\n this.onClick.emit({ component: this, nativeEvent: e });\n });\n });\n\n @HostBinding('class')\n get __hostClass(): string[] {\n return [\n `${this.disabled() ? 'ax-state-disabled' : ''}`,\n `${this.textdecoration() ? 'ax-text-decorator' : ''}`,\n `ax-${this.parent?.look() ? this.parent.look() : this.look()}`,\n 'ax-default',\n ];\n }\n\n public open() {\n this.isCollapsed.set(false);\n }\n\n public close() {\n this.isCollapsed.set(true);\n }\n\n public toggle() {\n this.isCollapsed.update((prev) => !prev);\n }\n}\n","<div [(isCollapsed)]=\"isCollapsed\" axAccordionItem>\n <div axAccordionItemHeader class=\"ax-accordion-header\">\n @if (headerTemplate()) {\n <div class=\"ax-accordion-custom-header-container\">\n <ng-container\n [ngTemplateOutlet]=\"headerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: { caption: caption(), isCollapsed: isCollapsed() } }\"\n ></ng-container>\n </div>\n } @else {\n <div class=\"ax-accordion-header-container\" tabindex=\"0\">\n <div class=\"ax-accordion-header-start\">\n <span class=\"ax-accordion-header-icon\" [class]=\"icon()\"> </span>\n <span>\n {{ caption() }}\n </span>\n </div>\n <div class=\"ax-accordion-header-end\">\n @if (isLoading()) {\n <ax-loading></ax-loading>\n } @else {\n <span\n class=\"ax-icon ax-icon-chevron-left ax-accordion-arrow\"\n [ngClass]=\"{ '-rotate-90': isCollapsed(), 'rotate-90': !isCollapsed() }\"\n ></span>\n }\n </div>\n </div>\n }\n </div>\n\n <div axAccordionItemContent class=\"ax-accordion-body\">\n <div class=\"ax-accordion-body-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import { AXAccordionGroupDirective, AXAccordionItemDirective } from '@acorex/cdk/accordion';\nimport { AXComponent, MXLookableComponent } from '@acorex/cdk/common';\nimport { AXLoadingModule } from '@acorex/components/loading';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n effect,\n input,\n model,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXAccordionItemComponent } from '../accordion-item/accordion-item.component';\nimport { AXAccordionLook } from '../accordion.type';\n\n@Component({\n selector: 'ax-accordion-group',\n styleUrl: './accordion-group.component.css',\n imports: [AXLoadingModule, AXAccordionGroupDirective],\n template: `\n <div\n [activeIndex]=\"activeIndex()\"\n [collapsedOnItemClick]=\"collapsedOnItemClick()\"\n [accordion]=\"this.accordion()\"\n axAccordionGroup\n >\n <ng-content select=\"ax-accordion-item\"></ng-content>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: MXLookableComponent,\n useExisting: AXAccordionGroupComponent,\n },\n { provide: AXComponent, useExisting: AXAccordionGroupComponent },\n ],\n})\nexport class AXAccordionGroupComponent {\n private accordionGroup = viewChild(AXAccordionGroupDirective);\n private content = contentChildren(AXAccordionItemComponent, { descendants: true });\n\n accordion = input(true);\n activeIndex = model<number | number[]>(null);\n look = input<AXAccordionLook>('solid');\n collapsedOnItemClick = input(true);\n\n #eff = effect(() => {\n const accordionItemDirective: AXAccordionItemDirective[] = [];\n this.content().forEach((item) => {\n accordionItemDirective.push(item.accordionItem());\n });\n this.accordionGroup().customAccordionItem.set(accordionItemDirective);\n });\n}\n","import { NgModule } from '@angular/core';\nimport { AXAccordionGroupComponent } from './accordion-group/accordion-group.component';\nimport { AXAccordionItemComponent } from './accordion-item/accordion-item.component';\n\n@NgModule({\n imports: [AXAccordionItemComponent, AXAccordionGroupComponent],\n exports: [AXAccordionItemComponent, AXAccordionGroupComponent],\n})\nexport class AXAccordionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}