@limetech/lime-crm-building-blocks 1.115.0 → 1.116.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 (203) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/lime-crm-building-blocks.cjs.js +1 -1
  3. package/dist/cjs/{limebb-chat-item_2.cjs.entry.js → limebb-chat-icon-list_3.cjs.entry.js} +39 -3
  4. package/dist/cjs/limebb-chat-list.cjs.entry.js +37 -35
  5. package/dist/cjs/limebb-component-picker.cjs.entry.js +18 -14
  6. package/dist/cjs/limebb-composer-toolbar.cjs.entry.js +2 -2
  7. package/dist/cjs/limebb-currency-picker.cjs.entry.js +1 -1
  8. package/dist/cjs/limebb-dashboard-widget.cjs.entry.js +1 -1
  9. package/dist/cjs/limebb-date-picker.cjs.entry.js +1 -1
  10. package/dist/cjs/limebb-date-range.cjs.entry.js +1 -1
  11. package/dist/cjs/limebb-document-chips.cjs.entry.js +1 -1
  12. package/dist/cjs/limebb-document-item.cjs.entry.js +2 -2
  13. package/dist/cjs/limebb-document-picker.cjs.entry.js +1 -1
  14. package/dist/cjs/limebb-feed-item-thumbnail-file-info.cjs.entry.js +1 -1
  15. package/dist/cjs/limebb-feed-timeline-item.cjs.entry.js +1 -1
  16. package/dist/cjs/limebb-feed.cjs.entry.js +1 -1
  17. package/dist/cjs/limebb-icon-picker.cjs.entry.js +1 -1
  18. package/dist/cjs/limebb-info-tile-format.cjs.entry.js +1 -1
  19. package/dist/cjs/limebb-info-tile.cjs.entry.js +1 -1
  20. package/dist/cjs/limebb-kanban-group.cjs.entry.js +1 -1
  21. package/dist/cjs/limebb-kanban-item.cjs.entry.js +1 -1
  22. package/dist/cjs/limebb-lime-query-builder.cjs.entry.js +1 -1
  23. package/dist/cjs/limebb-lime-query-filter-builder_3.cjs.entry.js +2 -2
  24. package/dist/cjs/limebb-lime-query-filter-comparison_2.cjs.entry.js +1 -1
  25. package/dist/cjs/limebb-lime-query-filter-group_3.cjs.entry.js +3 -3
  26. package/dist/cjs/limebb-lime-query-order-by-item.cjs.entry.js +2 -2
  27. package/dist/cjs/limebb-lime-query-response-format-builder.cjs.entry.js +1 -1
  28. package/dist/cjs/limebb-lime-query-response-format-editor_2.cjs.entry.js +1 -1
  29. package/dist/cjs/limebb-live-docs-info.cjs.entry.js +2 -2
  30. package/dist/cjs/limebb-locale-picker.cjs.entry.js +1 -1
  31. package/dist/cjs/limebb-mention-group-counter.cjs.entry.js +2 -2
  32. package/dist/cjs/limebb-navigation-button_2.cjs.entry.js +2 -2
  33. package/dist/cjs/limebb-notification-item.cjs.entry.js +1 -1
  34. package/dist/cjs/limebb-percentage-visualizer.cjs.entry.js +2 -2
  35. package/dist/cjs/limebb-text-editor.cjs.entry.js +1 -1
  36. package/dist/cjs/limebb-trend-indicator.cjs.entry.js +1 -1
  37. package/dist/cjs/loader.cjs.js +1 -1
  38. package/dist/collection/collection-manifest.json +1 -0
  39. package/dist/collection/components/chat-list/chat-icon-list/chat-icon-list.css +199 -0
  40. package/dist/collection/components/chat-list/chat-icon-list/chat-icon-list.js +74 -0
  41. package/dist/collection/components/chat-list/chat-icon-list/chat-icon-list.types.js +1 -0
  42. package/dist/collection/components/chat-list/chat-item/chat-item.js +2 -2
  43. package/dist/collection/components/chat-list/chat-list.js +18 -8
  44. package/dist/collection/components/chat-list/chat-list.types.js +1 -0
  45. package/dist/collection/components/chat-list/process-chat-items.js +26 -33
  46. package/dist/collection/components/chat-list/typing-indicator/typing-indicator.js +1 -1
  47. package/dist/collection/components/component-command-picker/component-picker/component-picker.js +18 -14
  48. package/dist/collection/components/composer-toolbar/composer-toolbar.js +2 -2
  49. package/dist/collection/components/currency-picker/currency-picker.js +1 -1
  50. package/dist/collection/components/dashboard-widget/dashboard-widget.js +1 -1
  51. package/dist/collection/components/date-picker/date-picker.js +1 -1
  52. package/dist/collection/components/date-range/date-range.js +1 -1
  53. package/dist/collection/components/document-chips/document-chips.js +1 -1
  54. package/dist/collection/components/document-picker/document-item/document-item.js +2 -2
  55. package/dist/collection/components/document-picker/document-picker.js +1 -1
  56. package/dist/collection/components/feed/feed-item/feed-timeline-item.js +1 -1
  57. package/dist/collection/components/feed/feed-item-thumbnail-file-info/feed-item-thumbnail-file-info.js +1 -1
  58. package/dist/collection/components/feed/feed.js +1 -1
  59. package/dist/collection/components/icon-picker/icon-picker.js +1 -1
  60. package/dist/collection/components/info-tile/format/config/info-tile-format.js +1 -1
  61. package/dist/collection/components/info-tile/info-tile.js +1 -1
  62. package/dist/collection/components/kanban/kanban-group/kanban-group.js +1 -1
  63. package/dist/collection/components/kanban/kanban-item/kanban-item.js +1 -1
  64. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison.js +1 -1
  65. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-group.js +2 -2
  66. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-not.js +1 -1
  67. package/dist/collection/components/lime-query-builder/lime-query-builder.js +1 -1
  68. package/dist/collection/components/lime-query-builder/lime-query-response-format-builder.js +1 -1
  69. package/dist/collection/components/lime-query-builder/limetype-field/limetype-field.js +1 -1
  70. package/dist/collection/components/lime-query-builder/order-by/order-by-editor.js +1 -1
  71. package/dist/collection/components/lime-query-builder/order-by/order-by-item.js +2 -2
  72. package/dist/collection/components/lime-query-builder/response-format/response-format-item.js +1 -1
  73. package/dist/collection/components/limeobject/file-viewer/live-docs-info.js +2 -2
  74. package/dist/collection/components/locale-picker/locale-picker.js +1 -1
  75. package/dist/collection/components/notification-list/notification-item/notification-item.js +1 -1
  76. package/dist/collection/components/percentage-visualizer/percentage-visualizer.js +2 -2
  77. package/dist/collection/components/summary-popover/summary-popover.js +2 -2
  78. package/dist/collection/components/text-editor/mention-group-counter.js +2 -2
  79. package/dist/collection/components/text-editor/text-editor.js +1 -1
  80. package/dist/collection/components/trend-indicator/trend-indicator.js +1 -1
  81. package/dist/components/chat-icon-list.js +55 -0
  82. package/dist/components/chat-item.js +2 -2
  83. package/dist/components/currency-picker.js +1 -1
  84. package/dist/components/date-picker.js +1 -1
  85. package/dist/components/document-item.js +2 -2
  86. package/dist/components/feed-item-thumbnail-file-info.js +1 -1
  87. package/dist/components/feed-timeline-item.js +1 -1
  88. package/dist/components/kanban-group.js +1 -1
  89. package/dist/components/kanban-item.js +1 -1
  90. package/dist/components/lime-query-filter-comparison.js +1 -1
  91. package/dist/components/lime-query-filter-expression.js +3 -3
  92. package/dist/components/limebb-chat-icon-list.d.ts +11 -0
  93. package/dist/components/limebb-chat-icon-list.js +6 -0
  94. package/dist/components/limebb-chat-list.js +44 -36
  95. package/dist/components/limebb-component-picker.js +18 -14
  96. package/dist/components/limebb-composer-toolbar.js +2 -2
  97. package/dist/components/limebb-dashboard-widget.js +1 -1
  98. package/dist/components/limebb-date-range.js +1 -1
  99. package/dist/components/limebb-document-chips.js +1 -1
  100. package/dist/components/limebb-document-picker.js +1 -1
  101. package/dist/components/limebb-feed.js +1 -1
  102. package/dist/components/limebb-icon-picker.js +1 -1
  103. package/dist/components/limebb-info-tile-format.js +1 -1
  104. package/dist/components/limebb-info-tile.js +1 -1
  105. package/dist/components/limebb-lime-query-builder.js +1 -1
  106. package/dist/components/limebb-lime-query-response-format-builder.js +1 -1
  107. package/dist/components/limebb-locale-picker.js +1 -1
  108. package/dist/components/limebb-mention-group-counter.js +2 -2
  109. package/dist/components/limebb-text-editor.js +1 -1
  110. package/dist/components/limebb-trend-indicator.js +1 -1
  111. package/dist/components/limetype-field.js +1 -1
  112. package/dist/components/live-docs-info.js +2 -2
  113. package/dist/components/notification-item.js +1 -1
  114. package/dist/components/order-by-editor.js +1 -1
  115. package/dist/components/order-by-item.js +2 -2
  116. package/dist/components/percentage-visualizer.js +2 -2
  117. package/dist/components/response-format-item.js +1 -1
  118. package/dist/components/summary-popover.js +2 -2
  119. package/dist/components/typing-indicator.js +1 -1
  120. package/dist/esm/lime-crm-building-blocks.js +1 -1
  121. package/dist/esm/{limebb-chat-item_2.entry.js → limebb-chat-icon-list_3.entry.js} +39 -4
  122. package/dist/esm/limebb-chat-list.entry.js +37 -35
  123. package/dist/esm/limebb-component-picker.entry.js +18 -14
  124. package/dist/esm/limebb-composer-toolbar.entry.js +2 -2
  125. package/dist/esm/limebb-currency-picker.entry.js +1 -1
  126. package/dist/esm/limebb-dashboard-widget.entry.js +1 -1
  127. package/dist/esm/limebb-date-picker.entry.js +1 -1
  128. package/dist/esm/limebb-date-range.entry.js +1 -1
  129. package/dist/esm/limebb-document-chips.entry.js +1 -1
  130. package/dist/esm/limebb-document-item.entry.js +2 -2
  131. package/dist/esm/limebb-document-picker.entry.js +1 -1
  132. package/dist/esm/limebb-feed-item-thumbnail-file-info.entry.js +1 -1
  133. package/dist/esm/limebb-feed-timeline-item.entry.js +1 -1
  134. package/dist/esm/limebb-feed.entry.js +1 -1
  135. package/dist/esm/limebb-icon-picker.entry.js +1 -1
  136. package/dist/esm/limebb-info-tile-format.entry.js +1 -1
  137. package/dist/esm/limebb-info-tile.entry.js +1 -1
  138. package/dist/esm/limebb-kanban-group.entry.js +1 -1
  139. package/dist/esm/limebb-kanban-item.entry.js +1 -1
  140. package/dist/esm/limebb-lime-query-builder.entry.js +1 -1
  141. package/dist/esm/limebb-lime-query-filter-builder_3.entry.js +2 -2
  142. package/dist/esm/limebb-lime-query-filter-comparison_2.entry.js +1 -1
  143. package/dist/esm/limebb-lime-query-filter-group_3.entry.js +3 -3
  144. package/dist/esm/limebb-lime-query-order-by-item.entry.js +2 -2
  145. package/dist/esm/limebb-lime-query-response-format-builder.entry.js +1 -1
  146. package/dist/esm/limebb-lime-query-response-format-editor_2.entry.js +1 -1
  147. package/dist/esm/limebb-live-docs-info.entry.js +2 -2
  148. package/dist/esm/limebb-locale-picker.entry.js +1 -1
  149. package/dist/esm/limebb-mention-group-counter.entry.js +2 -2
  150. package/dist/esm/limebb-navigation-button_2.entry.js +2 -2
  151. package/dist/esm/limebb-notification-item.entry.js +1 -1
  152. package/dist/esm/limebb-percentage-visualizer.entry.js +2 -2
  153. package/dist/esm/limebb-text-editor.entry.js +1 -1
  154. package/dist/esm/limebb-trend-indicator.entry.js +1 -1
  155. package/dist/esm/loader.js +1 -1
  156. package/dist/lime-crm-building-blocks/lime-crm-building-blocks.esm.js +1 -1
  157. package/dist/lime-crm-building-blocks/{p-22fffe85.entry.js → p-0190354e.entry.js} +1 -1
  158. package/dist/lime-crm-building-blocks/{p-375f40d9.entry.js → p-0707d5b0.entry.js} +1 -1
  159. package/dist/lime-crm-building-blocks/{p-a7e55181.entry.js → p-121877f3.entry.js} +1 -1
  160. package/dist/lime-crm-building-blocks/{p-8c3f563e.entry.js → p-1317cdfa.entry.js} +1 -1
  161. package/dist/lime-crm-building-blocks/{p-4066e17a.entry.js → p-1a89328d.entry.js} +1 -1
  162. package/dist/lime-crm-building-blocks/{p-7b5a1e83.entry.js → p-1b361f60.entry.js} +1 -1
  163. package/dist/lime-crm-building-blocks/{p-18d1ab86.entry.js → p-2612f2f6.entry.js} +1 -1
  164. package/dist/lime-crm-building-blocks/{p-9c334694.entry.js → p-2babfa69.entry.js} +1 -1
  165. package/dist/lime-crm-building-blocks/p-2d5e5ab5.entry.js +1 -0
  166. package/dist/lime-crm-building-blocks/{p-2ed843e9.entry.js → p-331fced5.entry.js} +1 -1
  167. package/dist/lime-crm-building-blocks/{p-3a7b37cc.entry.js → p-3a16d7cf.entry.js} +1 -1
  168. package/dist/lime-crm-building-blocks/{p-4dad4ce8.entry.js → p-3dd32e10.entry.js} +1 -1
  169. package/dist/lime-crm-building-blocks/{p-d7fc530f.entry.js → p-4894ca5d.entry.js} +1 -1
  170. package/dist/lime-crm-building-blocks/{p-6bf1ab6d.entry.js → p-4eb7a47c.entry.js} +1 -1
  171. package/dist/lime-crm-building-blocks/p-50abea43.entry.js +1 -0
  172. package/dist/lime-crm-building-blocks/{p-812bf26e.entry.js → p-520df198.entry.js} +1 -1
  173. package/dist/lime-crm-building-blocks/{p-94e6f0de.entry.js → p-5277ceca.entry.js} +1 -1
  174. package/dist/lime-crm-building-blocks/{p-9c204549.entry.js → p-548e0f2a.entry.js} +1 -1
  175. package/dist/lime-crm-building-blocks/{p-7a6c1595.entry.js → p-6fb504cb.entry.js} +1 -1
  176. package/dist/lime-crm-building-blocks/{p-81f8e5df.entry.js → p-7365ec1c.entry.js} +1 -1
  177. package/dist/lime-crm-building-blocks/{p-103654ac.entry.js → p-85709273.entry.js} +1 -1
  178. package/dist/lime-crm-building-blocks/p-87d3f42c.entry.js +1 -0
  179. package/dist/lime-crm-building-blocks/{p-d5b835a6.entry.js → p-8dca4e46.entry.js} +1 -1
  180. package/dist/lime-crm-building-blocks/p-9c25aa2b.entry.js +1 -0
  181. package/dist/lime-crm-building-blocks/{p-dddd8a43.entry.js → p-a959dd49.entry.js} +1 -1
  182. package/dist/lime-crm-building-blocks/{p-20b5ff30.entry.js → p-b2763851.entry.js} +1 -1
  183. package/dist/lime-crm-building-blocks/{p-d9f76810.entry.js → p-b3ad9f5e.entry.js} +1 -1
  184. package/dist/lime-crm-building-blocks/{p-53d54dc8.entry.js → p-d9045aaa.entry.js} +1 -1
  185. package/dist/lime-crm-building-blocks/{p-9bc5caac.entry.js → p-d994067b.entry.js} +1 -1
  186. package/dist/lime-crm-building-blocks/{p-f31eeeaa.entry.js → p-da42650a.entry.js} +1 -1
  187. package/dist/lime-crm-building-blocks/{p-0d0f4c0f.entry.js → p-dae67f66.entry.js} +1 -1
  188. package/dist/lime-crm-building-blocks/{p-3b3e7328.entry.js → p-dce9c951.entry.js} +1 -1
  189. package/dist/lime-crm-building-blocks/{p-0eac6b68.entry.js → p-dd5af257.entry.js} +1 -1
  190. package/dist/lime-crm-building-blocks/{p-6bd5c65f.entry.js → p-ea4daa32.entry.js} +1 -1
  191. package/dist/types/components/chat-list/chat-icon-list/chat-icon-list.d.ts +19 -0
  192. package/dist/types/components/chat-list/chat-icon-list/chat-icon-list.types.d.ts +52 -0
  193. package/dist/types/components/chat-list/chat-list.d.ts +7 -2
  194. package/dist/types/components/chat-list/chat-list.types.d.ts +13 -0
  195. package/dist/types/components/chat-list/process-chat-items.d.ts +20 -28
  196. package/dist/types/components/component-command-picker/component-picker/component-picker.d.ts +1 -0
  197. package/dist/types/components.d.ts +57 -4
  198. package/dist/types/interface.d.ts +2 -0
  199. package/package.json +2 -2
  200. package/dist/lime-crm-building-blocks/p-20939cd4.entry.js +0 -1
  201. package/dist/lime-crm-building-blocks/p-703fa2fe.entry.js +0 -1
  202. package/dist/lime-crm-building-blocks/p-7f72be40.entry.js +0 -1
  203. package/dist/lime-crm-building-blocks/p-a954d06e.entry.js +0 -1
@@ -91,11 +91,11 @@ export class PercentageVisualizer {
91
91
  render() {
92
92
  const normalizedValue = this.getNormalizedValue();
93
93
  const zeroPoint = this.getZeroPointPosition();
94
- return (h(Host, { key: '0546d64013773f4c73fee3fffc7a9679ef6c95c5', class: this.getContainerClassList(), style: {
94
+ return (h(Host, { key: '6842fd6dd4e1c2f8de1f8ef2e77139fb4f9e370a', class: this.getContainerClassList(), style: {
95
95
  '--limebb-percentage-visualizer-zero-point-position': `${zeroPoint}%`,
96
96
  '--limebb-percentage-visualizer-width': `${Math.abs(normalizedValue)}%`,
97
97
  '--limebb-percentage-visualizer-rotate': `${normalizedValue >= 0 ? '0deg' : '180deg'}`,
98
- } }, h("limel-notched-outline", { key: 'df29f109a2d606b2b8d724e92be4161f19d8e025', tabIndex: 0, role: "meter", "aria-valuemin": this.rangeMin, "aria-valuemax": this.rangeMax, "aria-valuenow": this.numValue, "aria-labelledby": this.labelId, "aria-describedby": this.helperTextId, label: this.label, labelId: this.labelId, invalid: this.invalid, required: this.required, hasValue: true, hasFloatingLabel: true, "aria-controls": this.helperTextId }, h("div", { key: '7a4f7c2fb608f0006e3963e5d6d0eaefba0ecbbe', slot: "content" }, this.renderVisualization())), this.renderHelperLine()));
98
+ } }, h("limel-notched-outline", { key: '8edd045eba4b3a1800cb970f86f60d2e328051b3', tabIndex: 0, role: "meter", "aria-valuemin": this.rangeMin, "aria-valuemax": this.rangeMax, "aria-valuenow": this.numValue, "aria-labelledby": this.labelId, "aria-describedby": this.helperTextId, label: this.label, labelId: this.labelId, invalid: this.invalid, required: this.required, hasValue: true, hasFloatingLabel: true, "aria-controls": this.helperTextId }, h("div", { key: '8c611c34390931b26251fa1ce4b04fc16d5b0601', slot: "content" }, this.renderVisualization())), this.renderHelperLine()));
99
99
  }
100
100
  renderVisualization() {
101
101
  if (this.reducePresence && (this.numValue === 0 || !this.hasValue())) {
@@ -128,9 +128,9 @@ export class SummaryPopover {
128
128
  top: '0.125rem',
129
129
  right: '0.125rem',
130
130
  };
131
- return (h("limel-popover", { key: '26159e81e1fd3547fe0f9b59f5edd9144778cc15', style: {
131
+ return (h("limel-popover", { key: 'f20536e7d9e358ffe42df731c1a6fc0aed369c34', style: {
132
132
  '--limebb-summary-popover-timeout': `${this.triggerDelay}ms`,
133
- }, open: this.isPopoverOpen, onClose: this.onPopoverClose, openDirection: this.openDirection }, h("div", { key: '5f6c72787f4dafebbce1428da6ba1515ecce451e', slot: "trigger", onMouseEnter: this.openPopoverWithDelay, onMouseLeave: this.resetTimeout, onFocusin: this.openPopoverWithDelay }, h("slot", { key: '4a5d186f511a245d6d4c48df754add7eaf3380df', name: "trigger" }), h("div", { key: '64a9db4b3ff460b84345a60b9efccc80aa75a2cd', class: "opening-countdown-indicator" })), this.renderCard(closeButtonStyle)));
133
+ }, open: this.isPopoverOpen, onClose: this.onPopoverClose, openDirection: this.openDirection }, h("div", { key: '53135a3f8f84cb26a430ba1eb2f8b247dc219d0f', slot: "trigger", onMouseEnter: this.openPopoverWithDelay, onMouseLeave: this.resetTimeout, onFocusin: this.openPopoverWithDelay }, h("slot", { key: 'a1a880f5368317bdcb2821aa84d4df2d55d2968b', name: "trigger" }), h("div", { key: '194cc67cbe0cc323fa34290bdf9100f2ce4aedd9', class: "opening-countdown-indicator" })), this.renderCard(closeButtonStyle)));
134
134
  }
135
135
  renderCard(closeButtonStyle) {
136
136
  return (h("limel-card", { style: {
@@ -13,8 +13,8 @@ export class MentionGroupCounter {
13
13
  render() {
14
14
  const label = this.getLabel();
15
15
  return [
16
- h("span", { key: 'c4ad6f97f70c527ff27ed51ab61e99cb16cb23bd', id: this.tooltipId }, label),
17
- h("limel-tooltip", { key: '0d8e7488f6974d7012eb15ae36bb212dbcfad367', elementId: this.tooltipId, label: label, helperLabel: this.helperLabel }),
16
+ h("span", { key: 'a99de7da626a8072f75c5db7a361d544e0d25a9d', id: this.tooltipId }, label),
17
+ h("limel-tooltip", { key: 'f675f0f135f62714e954c092f59ffb59b59678cd', elementId: this.tooltipId, label: label, helperLabel: this.helperLabel }),
18
18
  ];
19
19
  }
20
20
  getLabel() {
@@ -391,7 +391,7 @@ export class LimeBBTextEditor {
391
391
  }
392
392
  render() {
393
393
  return [
394
- h("limel-text-editor", { key: '4b9a47363ae1ad08fdcf09159ba5fa1d7c97cdc2', ref: (el) => (this.textEditor = el), tabindex: this.disabled ? -1 : 0, value: this.value, contentType: this.contentType, customElements: this.registeredCustomElements, "aria-disabled": this.disabled, language: this.language, triggers: this.registeredTriggers, onTriggerStart: this.handleTriggerStart, onTriggerStop: this.handleTriggerStop, onTriggerChange: this.handleTriggerChange, onImagePasted: this.handleImagePasted, onMetadataChange: this.handleMetadataChange, ui: this.ui, allowResize: this.allowResize, required: this.required, disabled: this.disabled, readonly: this.readonly, helperText: this.helperText, placeholder: this.placeholder, label: this.label, invalid: this.invalid }),
394
+ h("limel-text-editor", { key: '817d7a91d45a3bbf2a086a038868148fd3b6a5f0', ref: (el) => (this.textEditor = el), tabindex: this.disabled ? -1 : 0, value: this.value, contentType: this.contentType, customElements: this.registeredCustomElements, "aria-disabled": this.disabled, language: this.language, triggers: this.registeredTriggers, onTriggerStart: this.handleTriggerStart, onTriggerStop: this.handleTriggerStop, onTriggerChange: this.handleTriggerChange, onImagePasted: this.handleImagePasted, onMetadataChange: this.handleMetadataChange, ui: this.ui, allowResize: this.allowResize, required: this.required, disabled: this.disabled, readonly: this.readonly, helperText: this.helperText, placeholder: this.placeholder, label: this.label, invalid: this.invalid }),
395
395
  this.renderPicker(),
396
396
  ];
397
397
  }
@@ -52,7 +52,7 @@ export class TrendIndicator {
52
52
  this.numValue = this.parseValue(this.value);
53
53
  }
54
54
  render() {
55
- return (h(Host, { key: '87197f593d5d5354a773e459a99f410f4c4f6306', class: this.getContainerClassList() }, h("limel-notched-outline", { key: 'e836c618cdafffafef15bbfeb71e865786ad2c51', id: this.tooltipId, label: this.label, labelId: this.labelId, invalid: this.invalid, required: this.required, hasValue: true, hasFloatingLabel: true, "aria-labelledby": this.labelId, "aria-describedby": this.helperTextId, "aria-controls": this.helperTextId }, h("div", { key: '62cc0bce82b42cf447183f5d049bc92863b5e145', slot: "content", tabIndex: 0 }, this.renderVisualization())), this.renderHelperLine(), this.renderTooltip()));
55
+ return (h(Host, { key: '8da003525170a6896bcbb95887f6a4cfc86ee54c', class: this.getContainerClassList() }, h("limel-notched-outline", { key: '948bea6e0624cd0c69d582ccba8d6f919486d726', id: this.tooltipId, label: this.label, labelId: this.labelId, invalid: this.invalid, required: this.required, hasValue: true, hasFloatingLabel: true, "aria-labelledby": this.labelId, "aria-describedby": this.helperTextId, "aria-controls": this.helperTextId }, h("div", { key: 'f71404b0e2a606ea57277d02ca7bf005274836da', slot: "content", tabIndex: 0 }, this.renderVisualization())), this.renderHelperLine(), this.renderTooltip()));
56
56
  }
57
57
  renderVisualization() {
58
58
  if (this.reducePresence && (this.numValue === 0 || !this.hasValue())) {
@@ -0,0 +1,55 @@
1
+ import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
+
3
+ const chatIconListCss = "@charset \"UTF-8\";*,*:before,*:after{box-sizing:border-box}:host(limebb-chat-icon-list){display:flex;align-items:center;gap:0.5rem;margin-right:auto;max-width:calc(100% - 2rem);padding:0 0.25rem}.label{font-size:0.75rem;color:rgb(var(--contrast-900))}.icons{display:flex;align-items:center;gap:0.25rem}.icons:hover limel-icon,.icons:focus-within limel-icon{margin-left:0 !important}limel-icon{--icon-background-color:rgb(var(--contrast-500), 0.5);transition:margin-left 0.2s cubic-bezier(0.075, 0.82, 0.165, 1), opacity 0.2s ease, box-shadow 0.2s ease;position:relative;width:1.75rem;padding:0.375rem;flex-shrink:0}limel-icon:focus{outline:none}limel-icon:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}limel-icon:not(.is-pending):not(:first-child){margin-left:-0.75rem}limel-icon.is-pending{animation:pending 3s linear infinite;padding:0.5rem}@media (prefers-reduced-motion: reduce){limel-icon.is-pending{animation:none;opacity:0.5}}limel-icon.is-pending:after{content:\"\";position:absolute;inset:0;width:1.75rem;height:1.75rem;border-radius:50%;pointer-events:none;border-radius:50%;border:0.125rem solid rgb(var(--color-white), 0.5);border-top-color:rgb(var(--color-black), 0.8);mix-blend-mode:color-dodge;animation:spin 1s cubic-bezier(0.4, 0, 0.2, 1) infinite}@media (prefers-reduced-motion: reduce){limel-icon.is-pending:after{display:none}}@keyframes pending{0%,20%,80%,100%{filter:grayscale(0%)}45%,55%{filter:grayscale(100%)}}@keyframes spin{to{transform:rotate(360deg)}}";
4
+ const LimebbChatIconListStyle0 = chatIconListCss;
5
+
6
+ const ChatIconListComponent = /*@__PURE__*/ proxyCustomElement(class ChatIconListComponent extends HTMLElement {
7
+ constructor() {
8
+ super();
9
+ this.__registerHost();
10
+ this.__attachShadow();
11
+ }
12
+ render() {
13
+ return (h(Host, { key: 'da304a611612575d870ff1a644d495cd60755095', id: this.item.id }, this.renderLabel(), h("div", { key: '220323ab4955f50a17d3fb1878c5cfc8f5d93190', class: "icons" }, this.item.icons.map((icon, index) => this.renderIcon(icon, index)))));
14
+ }
15
+ renderLabel() {
16
+ if (!this.item.label) {
17
+ return;
18
+ }
19
+ return h("span", { class: "label" }, this.item.label);
20
+ }
21
+ renderIcon(icon, index) {
22
+ const iconId = `icon-${this.item.id}-${index}`;
23
+ return [
24
+ h("limel-icon", { tabIndex: 0, key: index, id: iconId, badge: true, name: icon.name, class: { 'is-pending': !!icon.pending }, style: {
25
+ color: icon.color,
26
+ 'background-color': icon.backgroundColor,
27
+ } }),
28
+ this.renderTooltip(icon, iconId),
29
+ ];
30
+ }
31
+ renderTooltip(icon, iconId) {
32
+ if (!icon.title) {
33
+ return;
34
+ }
35
+ return h("limel-tooltip", { label: icon.title, elementId: iconId });
36
+ }
37
+ static get style() { return LimebbChatIconListStyle0; }
38
+ }, [1, "limebb-chat-icon-list", {
39
+ "item": [16]
40
+ }]);
41
+ function defineCustomElement() {
42
+ if (typeof customElements === "undefined") {
43
+ return;
44
+ }
45
+ const components = ["limebb-chat-icon-list"];
46
+ components.forEach(tagName => { switch (tagName) {
47
+ case "limebb-chat-icon-list":
48
+ if (!customElements.get(tagName)) {
49
+ customElements.define(tagName, ChatIconListComponent);
50
+ }
51
+ break;
52
+ } });
53
+ }
54
+
55
+ export { ChatIconListComponent as C, defineCustomElement as d };
@@ -65,9 +65,9 @@ const ChatListItem = /*@__PURE__*/ proxyCustomElement(class ChatListItem extends
65
65
  }
66
66
  render() {
67
67
  const helperTextId = `helper-text-${this.item.id}`;
68
- return (h(Host, { key: 'df64ed9c4080499035f5d599fbf03edf2fc711bd', id: this.item.id, "aria-describedby": this.helperText ? helperTextId : undefined, "aria-live": this.hasError ? 'assertive' : 'off', class: {
68
+ return (h(Host, { key: '9833e3133c71a3c8f3d08e76b4d5411aff3620c3', id: this.item.id, "aria-describedby": this.helperText ? helperTextId : undefined, "aria-live": this.hasError ? 'assertive' : 'off', class: {
69
69
  [`${this.item.ui}`]: true,
70
- } }, h("div", { key: 'b615241104c1c5b93b4ead5adcb0ff40a6d61271', class: "bubble-content" }, h("div", { key: '2e23b9a4e8bc0709bfeb795cfe2590c244979b6f', class: "icon-picture" }, this.renderIcon(), this.renderAuthorPicture()), this.renderErrorSign(), h("div", { key: '2d2692e9d0627956a99e8486e44ca7fa9267a25e', class: "item" }, this.renderHeader(), this.renderValue(), h("footer", { key: '3b68b893d3c8a8e113ca3c15bf1d336e0722839f' }, this.renderHelperText(helperTextId), this.renderTimestamp()))), this.renderPromotedAction()));
70
+ } }, h("div", { key: '8598c560099d2980d7f9231613855e99053b4768', class: "bubble-content" }, h("div", { key: 'ae3df9343207f62d1d2a24b5bdf43ec42a58a5ee', class: "icon-picture" }, this.renderIcon(), this.renderAuthorPicture()), this.renderErrorSign(), h("div", { key: '15695f67beef723d5891cf56876c582f8a9b3dad', class: "item" }, this.renderHeader(), this.renderValue(), h("footer", { key: '4157f62d9d48f451068652fab65a968af7a44bde' }, this.renderHelperText(helperTextId), this.renderTimestamp()))), this.renderPromotedAction()));
71
71
  }
72
72
  renderErrorSign() {
73
73
  if (!this.hasError) {
@@ -1851,7 +1851,7 @@ const CurrencyPicker = /*@__PURE__*/ proxyCustomElement(class CurrencyPicker ext
1851
1851
  };
1852
1852
  }
1853
1853
  render() {
1854
- return (h("limel-picker", { key: '316356319724a700de717e4c41e94528f4020cb7', label: this.label || this.defaultLabel, value: this.createListItem(this.value), helperText: this.helperText, onChange: this.handleChange, badgeIcons: false, disabled: this.disabled, required: this.required, readonly: this.readonly, invalid: this.readonly, searcher: this.search }));
1854
+ return (h("limel-picker", { key: '6ae5e797b3bd810377ea30aa16a774f20107f1ba', label: this.label || this.defaultLabel, value: this.createListItem(this.value), helperText: this.helperText, onChange: this.handleChange, badgeIcons: false, disabled: this.disabled, required: this.required, readonly: this.readonly, invalid: this.readonly, searcher: this.search }));
1855
1855
  }
1856
1856
  getCurrencyName(code) {
1857
1857
  var _a;
@@ -75,7 +75,7 @@ const DatePicker = /*@__PURE__*/ proxyCustomElement(class DatePicker extends HTM
75
75
  if (this.value) {
76
76
  this.shouldEmitValueAsString = typeof this.value === 'string';
77
77
  }
78
- return (h("limel-date-picker", { key: 'bea630f5e6668ca3e1d4ccab882c3b816d39344d', disabled: this.disabled, readonly: this.readonly, invalid: this.invalid, label: this.label, placeholder: this.placeholder, helperText: this.helperText, required: this.required, value: this.parseDateValue(), type: this.type, language: this.language, formatter: this.formatter, onChange: this.handleChange }));
78
+ return (h("limel-date-picker", { key: '2920f54b427c3530a324aa1ab817ffaec072953b', disabled: this.disabled, readonly: this.readonly, invalid: this.invalid, label: this.label, placeholder: this.placeholder, helperText: this.helperText, required: this.required, value: this.parseDateValue(), type: this.type, language: this.language, formatter: this.formatter, onChange: this.handleChange }));
79
79
  }
80
80
  parseDateValue() {
81
81
  const value = this.value;
@@ -117,10 +117,10 @@ const DocumentItemComponent = /*@__PURE__*/ proxyCustomElement(class DocumentIte
117
117
  render() {
118
118
  const isUnavailable = this.isUnavailable();
119
119
  const image = this.getImage();
120
- return (h(Host, { key: 'b8c73e13073f66162b66a62f88b8b301a6a139d4', id: String(this.item.file.id), class: {
120
+ return (h(Host, { key: 'da9f2c2289bd9117e1342e033f0574c48f47c614', id: String(this.item.file.id), class: {
121
121
  'has-image': !!image,
122
122
  'has-error': !!this.item.hasError,
123
- }, role: this.type === 'radio' ? 'radio' : 'checkbox', "aria-checked": this.item.selected ? 'true' : 'false', "aria-disabled": isUnavailable ? 'true' : 'false', tabIndex: isUnavailable ? -1 : 0 }, h("limel-card", { key: '19cf30dc7a3ce2647ddc2abbd177b9f18db8001d', image: image, clickable: isUnavailable ? false : true, onClick: this.handleDocumentItemClick, onKeyDown: this.handleKeyDown }, h("div", { key: 'd3a2c411d3cbbe4e554f9701af6f2191a4b2078d', slot: "component" }, this.renderFileSize(), this.renderBooleanInput())), this.renderHelp()));
123
+ }, role: this.type === 'radio' ? 'radio' : 'checkbox', "aria-checked": this.item.selected ? 'true' : 'false', "aria-disabled": isUnavailable ? 'true' : 'false', tabIndex: isUnavailable ? -1 : 0 }, h("limel-card", { key: '4edee10d15436ed2708931af383f059b93677f18', image: image, clickable: isUnavailable ? false : true, onClick: this.handleDocumentItemClick, onKeyDown: this.handleKeyDown }, h("div", { key: '78f1d689b91a521a9fc2a20226f3f67dfb5e7018', slot: "component" }, this.renderFileSize(), this.renderBooleanInput())), this.renderHelp()));
124
124
  }
125
125
  renderBooleanInput() {
126
126
  const id = this.getControlId();
@@ -10,7 +10,7 @@ const FeedItemThumbnailFileInfo = /*@__PURE__*/ proxyCustomElement(class FeedIte
10
10
  this.__attachShadow();
11
11
  }
12
12
  render() {
13
- return h("span", { key: 'e651265e23288802ee6d89e3cfe5e0f7bd8073c3' }, this.description);
13
+ return h("span", { key: '36256b59f8a04f0ae5628399d60c8b6f624a7823' }, this.description);
14
14
  }
15
15
  static get style() { return LimebbFeedItemThumbnailFileInfoStyle0; }
16
16
  }, [1, "limebb-feed-item-thumbnail-file-info", {
@@ -210,7 +210,7 @@ const FeedTimelineItem = /*@__PURE__*/ proxyCustomElement(class FeedTimelineItem
210
210
  render() {
211
211
  var _a, _b;
212
212
  const helperTextId = `helper-text-${this.item.id}`;
213
- return (h(Host, { key: 'de138a29c33bcf4b77e6699b4ecc5dd4acde1c56', id: this.item.id, class: {
213
+ return (h(Host, { key: 'bf4f899cd59906f66fb4ad419bca4dd57e7733ad', id: this.item.id, class: {
214
214
  'has-unpromoted-actions': !!((_a = this.item.unpromotedActions) === null || _a === void 0 ? void 0 : _a.length),
215
215
  'has-author-picture': !!((_b = this.item.author) === null || _b === void 0 ? void 0 : _b.picture),
216
216
  'shows-less': !this.showMore,
@@ -33,7 +33,7 @@ const KanbanGroup = /*@__PURE__*/ proxyCustomElement(class KanbanGroup extends H
33
33
  };
34
34
  }
35
35
  render() {
36
- return (h(Host, { key: '45122f5462476d2c0c9a44af4c5281ef510fdea1' }, this.renderHelp(), this.renderGroupHeading(), this.renderGroupSummary(), this.renderItems()));
36
+ return (h(Host, { key: '0c8691aa3188af6fe8827e62142815a618dad01a' }, this.renderHelp(), this.renderGroupHeading(), this.renderGroupSummary(), this.renderItems()));
37
37
  }
38
38
  renderGroupSummary() {
39
39
  if (!this.summary || !this.totalCount) {
@@ -60,7 +60,7 @@ const KanbanItemComponent = /*@__PURE__*/ proxyCustomElement(class KanbanItemCom
60
60
  }
61
61
  render() {
62
62
  var _a, _b;
63
- return (h(Host, { key: 'b426be161e49623843ff6c47cddad048177ca441', id: this.item.id.toString(), class: {
63
+ return (h(Host, { key: '297aa0618ff2077dae64710ecb1651a1ae766873', id: this.item.id.toString(), class: {
64
64
  'has-unpromoted-actions': !!((_a = this.item.unpromotedActions) === null || _a === void 0 ? void 0 : _a.length),
65
65
  'is-selected': !!((_b = this.item) === null || _b === void 0 ? void 0 : _b.selected),
66
66
  }, style: {
@@ -110,7 +110,7 @@ const LimeQueryFilterComparisonComponent = /*@__PURE__*/ proxyCustomElement(clas
110
110
  };
111
111
  }
112
112
  render() {
113
- return (h(Host, { key: '008be722e21a16f4e2f80f655f70a564a9b1e38d' }, this.renderHeader(), h("div", { key: '2cd041b142596671c7ead3849406b8fa65c29926', class: "expression-container" }, this.renderPropertySelector(), this.renderOperator(), this.renderValueInput(), h("limel-icon-button", { key: '1fb2fc8a0cec0b70f5d3c24a976f0f436a294eae', class: "remove", icon: "trash", label: "Remove condition", onClick: this.removeExpression }))));
113
+ return (h(Host, { key: 'b42fd5bee8ad3cdf70dc67ef836fc5dd038f64ef' }, this.renderHeader(), h("div", { key: 'e81cc3854bc63d1aa27bb476c5bc4f9a81357262', class: "expression-container" }, this.renderPropertySelector(), this.renderOperator(), this.renderValueInput(), h("limel-icon-button", { key: 'ceab776a7de2cf47b42b93b06f2d72ea38627b6d', class: "remove", icon: "trash", label: "Remove condition", onClick: this.removeExpression }))));
114
114
  }
115
115
  renderHeader() {
116
116
  if (!this.label) {
@@ -148,7 +148,7 @@ const LimeQueryFilterNotComponent = /*@__PURE__*/ proxyCustomElement(class LimeQ
148
148
  };
149
149
  }
150
150
  render() {
151
- return (h("div", { key: '2967dd36cabe81bc1f140be7d11d471b1f29f5e7', class: "expression" }, this.label && h("limel-header", { key: '5a7ab204d8c0d45706ad61b1db8d1ef3acfb0731', heading: this.label }), h("limebb-lime-query-filter-expression", { key: 'ee8ea7f9eeb111d77abbcecd98d61e550ff8cdb9', platform: this.platform, context: this.context, label: "Not", limetype: this.limetype, activeLimetype: this.activeLimetype, expression: this.expression.exp, onExpressionChange: this.handleExpressionChange })));
151
+ return (h("div", { key: 'd2aba5cccb2e74ab91041833863a1c9329b9933a', class: "expression" }, this.label && h("limel-header", { key: '0e12b36710cba76d35f623cb8d6d008fc0f134e9', heading: this.label }), h("limebb-lime-query-filter-expression", { key: '13a64f29bc5339a43641eba8678595c225a09b7a', platform: this.platform, context: this.context, label: "Not", limetype: this.limetype, activeLimetype: this.activeLimetype, expression: this.expression.exp, onExpressionChange: this.handleExpressionChange })));
152
152
  }
153
153
  static get style() { return LimebbLimeQueryFilterNotStyle0; }
154
154
  }, [1, "limebb-lime-query-filter-not", {
@@ -253,9 +253,9 @@ const LimeQueryFilterGroupComponent = /*@__PURE__*/ proxyCustomElement(class Lim
253
253
  (this.expression.op === re.AND ? 'and' : 'or')) || this.options[0];
254
254
  }
255
255
  render() {
256
- return (h(Host, { key: 'a93a715b9bd65e6e9381083aef11951588471fc5', style: {
256
+ return (h(Host, { key: 'c47d52a6ba4d36d3f4f97eb6d8bf8459c5bbda73', style: {
257
257
  '--limebb-lime-query-filter-group-operator': `"${this.expression.op === re.AND ? 'AND' : 'OR'}"`,
258
- } }, h("div", { key: 'efbf025924e34613504f38db66affa1650bfe70c', class: "expression" }, this.renderHeader(), h("ul", { key: '6e287058fb7969124e4f22b42b32b14d80c0511f' }, this.expression.exp.map(this.renderChildExpression), this.renderAddButton()), this.renderAddGroupButton())));
258
+ } }, h("div", { key: 'ac9897b5c0cf7ad4e30c4bbb08df5be46bee61f4', class: "expression" }, this.renderHeader(), h("ul", { key: 'c02f76fa8ed8b595215feacc7bcb7fe55564b03a' }, this.expression.exp.map(this.renderChildExpression), this.renderAddButton()), this.renderAddGroupButton())));
259
259
  }
260
260
  renderHeader() {
261
261
  const subheading = this.getSubheading();
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface LimebbChatIconList extends Components.LimebbChatIconList, HTMLElement {}
4
+ export const LimebbChatIconList: {
5
+ prototype: LimebbChatIconList;
6
+ new (): LimebbChatIconList;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,6 @@
1
+ import { C as ChatIconListComponent, d as defineCustomElement$1 } from './chat-icon-list.js';
2
+
3
+ const LimebbChatIconList = ChatIconListComponent;
4
+ const defineCustomElement = defineCustomElement$1;
5
+
6
+ export { LimebbChatIconList, defineCustomElement };
@@ -1,32 +1,28 @@
1
1
  import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
2
  import { c } from './index.esm.js';
3
+ import { d as defineCustomElement$4 } from './chat-icon-list.js';
3
4
  import { d as defineCustomElement$3 } from './chat-item.js';
4
5
  import { d as defineCustomElement$2 } from './typing-indicator.js';
5
6
 
7
+ function isIconList(item) {
8
+ return 'type' in item && item.type === 'iconList';
9
+ }
10
+ function getProcessedItemTimestamp(item) {
11
+ if (item.type === 'chat' || item.type === 'iconList') {
12
+ return item.item.timestamp;
13
+ }
14
+ return undefined;
15
+ }
6
16
  /**
7
- * Processes a list of notifications by adding date headers and a "new items" indicator.
17
+ * Processes a list of chat list inputs by adding date headers and a "new items" indicator.
8
18
  *
9
- * @param items - The list of notification items to process. These items must be pre-sorted by their `timestamp` in descending order.
19
+ * @param items - The list of items to process. Pre-sorted by `timestamp` in descending order.
10
20
  * @param dateTimeFormatter - A service used to format dates for the date headers.
11
- * @param lastVisitedTimestamp - The timestamp of the user's last visit. This is used to determine where the "new items" indicator should be placed.
12
- *
13
- * @returns An array of processed items, including notifications, date headers, and a "new items" indicator if applicable.
21
+ * @param lastVisitedTimestamp - The timestamp of the user's last visit. Used to position the
22
+ * "new items" indicator.
14
23
  *
15
- * @example
16
- * const processedItems = processNotificationItems(
17
- * notifications,
18
- * dateTimeFormatter,
19
- * new Date('2024-09-01T10:00:00Z')
20
- * );
21
- *
22
- * // Output: [
23
- * // { type: 'dateHeader', date: '2024-09-01' },
24
- * // { type: 'notification', item: notification1 },
25
- * // { type: 'notification', item: notification2 },
26
- * // { type: 'newItemIndicator' },
27
- * // { type: 'dateHeader', date: '2024-08-31' },
28
- * // { type: 'notification', item: notification3 },
29
- * // ]
24
+ * @returns An array of processed items, including chat items, icon lists, date headers,
25
+ * and a "new items" indicator if applicable.
30
26
  */
31
27
  function processChatItems(items, dateTimeFormatter, lastVisitedTimestamp) {
32
28
  const initialContext = {
@@ -58,7 +54,12 @@ function createPipeline(initialContext, processors) {
58
54
  */
59
55
  function insertNotifications(context) {
60
56
  for (const item of context.items) {
61
- context.processedItems.push({ type: 'chat', item: item });
57
+ if (isIconList(item)) {
58
+ context.processedItems.push({ type: 'iconList', item: item });
59
+ }
60
+ else {
61
+ context.processedItems.push({ type: 'chat', item: item });
62
+ }
62
63
  }
63
64
  return context;
64
65
  }
@@ -70,16 +71,15 @@ function insertNewItemIndicator(context) {
70
71
  const processedWithIndicator = [];
71
72
  let newItemIndicatorInserted = context.newItemIndicatorInserted;
72
73
  for (const item of context.processedItems) {
73
- if (item.type === 'chat' &&
74
+ const timestamp = getProcessedItemTimestamp(item);
75
+ if (timestamp !== undefined &&
74
76
  context.lastVisitedTimestamp &&
75
77
  !newItemIndicatorInserted &&
76
- new Date(item.item.timestamp) <= context.lastVisitedTimestamp &&
78
+ new Date(timestamp) <= context.lastVisitedTimestamp &&
77
79
  context.hasUnseenNotifications) {
78
- // Insert the new item indicator before the first old notification
79
80
  processedWithIndicator.push({ type: 'newItemIndicator' });
80
81
  newItemIndicatorInserted = true;
81
82
  }
82
- // Push the current item to the new array
83
83
  processedWithIndicator.push(item);
84
84
  }
85
85
  context.processedItems = processedWithIndicator;
@@ -95,12 +95,10 @@ function insertDateGroups(context) {
95
95
  const newProcessedItems = [];
96
96
  let currentGroup = null;
97
97
  let lastProcessedDate = null;
98
- // Iterate through the notifications in processedItems
99
98
  for (const item of context.processedItems) {
100
- if (item.type === 'chat') {
99
+ if (item.type === 'chat' || item.type === 'iconList') {
101
100
  const currentTimestamp = new Date(item.item.timestamp);
102
101
  const currentDate = context.dateTimeFormatter.format(currentTimestamp, 'date');
103
- // If the date changes, push the previous group and create a new group
104
102
  if (currentDate !== lastProcessedDate) {
105
103
  if (currentGroup) {
106
104
  newProcessedItems.push(currentGroup);
@@ -113,26 +111,22 @@ function insertDateGroups(context) {
113
111
  };
114
112
  lastProcessedDate = currentDate;
115
113
  }
116
- // Add the notification to the current group
117
114
  if (currentGroup) {
118
115
  currentGroup.items.push(item);
119
116
  }
120
117
  }
121
118
  else if (item.type === 'newItemIndicator') {
122
- // Insert the newItemIndicator within the current group if it exists
123
119
  if (currentGroup) {
124
120
  currentGroup.items.push(item);
125
121
  }
126
122
  else {
127
- newProcessedItems.push(item); // Edge case: no group exists, just add the indicator
123
+ newProcessedItems.push(item);
128
124
  }
129
125
  }
130
126
  }
131
- // Push the last group, if it exists
132
127
  if (currentGroup) {
133
128
  newProcessedItems.push(currentGroup);
134
129
  }
135
- // Return updated context with grouped items
136
130
  return Object.assign(Object.assign({}, context), { processedItems: newProcessedItems });
137
131
  }
138
132
 
@@ -147,6 +141,9 @@ const ChatList = /*@__PURE__*/ proxyCustomElement(class ChatList extends HTMLEle
147
141
  /**
148
142
  * List of items to display in the feed.
149
143
  * These items must be sorted by their `timestamp` in descending order.
144
+ *
145
+ * See the [ChatListItem](#/type/ChatListItem/) type for the kinds of
146
+ * items that can appear in the list.
150
147
  */
151
148
  this.items = [];
152
149
  /**
@@ -176,10 +173,10 @@ const ChatList = /*@__PURE__*/ proxyCustomElement(class ChatList extends HTMLEle
176
173
  this.handleItemsChange();
177
174
  }
178
175
  render() {
179
- return (h(Host, { key: '1aa955956f1efb361777c52b27047a3169bb7492', class: {
176
+ return (h(Host, { key: '5eb5b8dde1fbec07b3c125752f561180ecbf2d71', class: {
180
177
  'is-empty': this.items.length === 0 &&
181
178
  !this.isTypingIndicatorVisible,
182
- }, "aria-busy": this.isBusy(), role: "log" }, this.renderSpinner(), h("div", { key: 'ca0412d181544f901b0741ce5753aba56cf35081', class: "typing-indicator-height-animation" }, h("div", { key: '107508f3a978f7cd8dd671fa12d6a57c86e8af82' }, this.renderTypingIndicator())), this.renderChatItems()));
179
+ }, "aria-busy": this.isBusy(), role: "log" }, this.renderSpinner(), h("div", { key: '706e0fe4eeb8f8afa40849b0422db06823614697', class: "typing-indicator-height-animation" }, h("div", { key: '6232ce470ae6ef21a87565ceb50f7cb9e3e251e5' }, this.renderTypingIndicator())), this.renderChatItems()));
183
180
  }
184
181
  renderSpinner() {
185
182
  if (!this.loading) {
@@ -213,6 +210,9 @@ const ChatList = /*@__PURE__*/ proxyCustomElement(class ChatList extends HTMLEle
213
210
  if (item.type === 'chat') {
214
211
  return this.renderChatItem(item.item);
215
212
  }
213
+ else if (item.type === 'iconList') {
214
+ return this.renderIconList(item.item);
215
+ }
216
216
  else if (item.type === 'newItemIndicator') {
217
217
  return this.renderIndicator();
218
218
  }
@@ -231,6 +231,9 @@ const ChatList = /*@__PURE__*/ proxyCustomElement(class ChatList extends HTMLEle
231
231
  renderChatItem(item) {
232
232
  return (h("limebb-chat-item", { platform: this.platform, context: this.context, item: item, helperText: item.helperText, hasError: item.hasError, key: item.id }));
233
233
  }
234
+ renderIconList(item) {
235
+ return h("limebb-chat-icon-list", { item: item, key: item.id });
236
+ }
234
237
  renderIndicator() {
235
238
  return (h("div", { class: "new-items-indicator", role: "separator" }, h("hr", null), h("h3", null, this.translator.get('webclient.new'))));
236
239
  }
@@ -268,13 +271,18 @@ function defineCustomElement$1() {
268
271
  if (typeof customElements === "undefined") {
269
272
  return;
270
273
  }
271
- const components = ["limebb-chat-list", "limebb-chat-item", "limebb-typing-indicator"];
274
+ const components = ["limebb-chat-list", "limebb-chat-icon-list", "limebb-chat-item", "limebb-typing-indicator"];
272
275
  components.forEach(tagName => { switch (tagName) {
273
276
  case "limebb-chat-list":
274
277
  if (!customElements.get(tagName)) {
275
278
  customElements.define(tagName, ChatList);
276
279
  }
277
280
  break;
281
+ case "limebb-chat-icon-list":
282
+ if (!customElements.get(tagName)) {
283
+ defineCustomElement$4();
284
+ }
285
+ break;
278
286
  case "limebb-chat-item":
279
287
  if (!customElements.get(tagName)) {
280
288
  defineCustomElement$3();
@@ -47,10 +47,7 @@ const ComponentPicker = /*@__PURE__*/ proxyCustomElement(class ComponentPicker e
47
47
  return this.tags.some((tag) => { var _a; return (_a = config.tags) === null || _a === void 0 ? void 0 : _a.includes(tag); });
48
48
  };
49
49
  this.handleBlur = () => {
50
- const value = this.currentInput;
51
- if (value && this.isValidIdentifier(value)) {
52
- this.change.emit(this.currentInput);
53
- }
50
+ this.emitIfValidValue(this.currentInput);
54
51
  };
55
52
  this.handleChange = (event) => {
56
53
  var _a;
@@ -62,20 +59,24 @@ const ComponentPicker = /*@__PURE__*/ proxyCustomElement(class ComponentPicker e
62
59
  this.copy.emit(this.value);
63
60
  };
64
61
  this.handleKeyUp = (event) => {
65
- var _a;
66
62
  if (event.key !== 'Enter') {
67
63
  return;
68
64
  }
69
- const value = (_a = this.currentInput) !== null && _a !== void 0 ? _a : '';
65
+ this.emitIfValidValue(this.currentInput);
66
+ };
67
+ this.emitIfValidValue = (value) => {
70
68
  if (this.isValidIdentifier(value)) {
71
- this.change.emit(this.currentInput);
69
+ this.change.emit(value);
72
70
  }
73
71
  };
74
72
  this.isValidIdentifier = (identifier) => {
73
+ if (!identifier) {
74
+ return false;
75
+ }
75
76
  if (this.type === 'component') {
76
77
  return Boolean(customElements.get(identifier));
77
78
  }
78
- return true;
79
+ return this.allItems.some((item) => item.value === identifier);
79
80
  };
80
81
  this.renderPicker = () => {
81
82
  let value = this.allItems.find((item) => this.value === item.value);
@@ -104,10 +105,13 @@ const ComponentPicker = /*@__PURE__*/ proxyCustomElement(class ComponentPicker e
104
105
  return this.allItems.filter(this.isItemMatching(query.toLocaleLowerCase()));
105
106
  };
106
107
  this.isItemMatching = (query) => (item) => {
107
- var _a, _b;
108
- return (item.text.toLocaleLowerCase().includes(query) ||
109
- ((_a = item.secondaryText) === null || _a === void 0 ? void 0 : _a.toLocaleLowerCase().includes(query)) ||
110
- ((_b = item.value) === null || _b === void 0 ? void 0 : _b.toLocaleLowerCase().includes(query)));
108
+ const queryParts = query.split(/\s+/);
109
+ return queryParts.every((part) => {
110
+ var _a, _b;
111
+ return item.text.toLocaleLowerCase().includes(part) ||
112
+ ((_a = item.secondaryText) === null || _a === void 0 ? void 0 : _a.toLocaleLowerCase().includes(part)) ||
113
+ ((_b = item.value) === null || _b === void 0 ? void 0 : _b.toLocaleLowerCase().includes(part));
114
+ });
111
115
  };
112
116
  }
113
117
  componentWillLoad() {
@@ -128,8 +132,8 @@ const ComponentPicker = /*@__PURE__*/ proxyCustomElement(class ComponentPicker e
128
132
  return [this.renderPicker(), this.renderCopyButton()];
129
133
  }
130
134
  get currentInput() {
131
- var _a, _b, _c, _d, _e, _f;
132
- return (_f = (_e = (_d = (_c = (_b = (_a = this.host.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('limel-picker')) === null || _b === void 0 ? void 0 : _b.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('limel-chip-set')) === null || _d === void 0 ? void 0 : _d.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelector('input')) === null || _f === void 0 ? void 0 : _f.value;
135
+ var _a, _b, _c, _d, _e, _f, _g;
136
+ return ((_g = (_f = (_e = (_d = (_c = (_b = (_a = this.host.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('limel-picker')) === null || _b === void 0 ? void 0 : _b.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('limel-chip-set')) === null || _d === void 0 ? void 0 : _d.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelector('input')) === null || _f === void 0 ? void 0 : _f.value) !== null && _g !== void 0 ? _g : '');
133
137
  }
134
138
  get webComponentRegistry() {
135
139
  return this.platform.get(c.WebComponentRegistry);
@@ -67,8 +67,8 @@ const ComposerToolbar = /*@__PURE__*/ proxyCustomElement(class ComposerToolbar e
67
67
  }
68
68
  render() {
69
69
  return [
70
- h("div", { key: '7b2b399e4dde1bb090dcdec3021fbbf669ea7d74', class: "actions" }, h("slot", { key: '4c019b51586bb3256ac59ad46e5e996ef10bd890', name: "leading" }), this.renderFileInput(), this.renderTriggerActions(), h("slot", { key: '8daa1e5d6e5093042b46fbd5dd9f22e276ea08f1', name: "trailing" })),
71
- h("slot", { key: 'c59850954e112e1aac342f3dd1544d2f94e696ee', name: "primary-action" }),
70
+ h("div", { key: '109fcf87a4c41ab90a266cd38c81b014a1ac0e61', class: "actions" }, h("slot", { key: '57b03a926670b433480783760d33e0ca669e8f6a', name: "leading" }), this.renderFileInput(), this.renderTriggerActions(), h("slot", { key: 'cc8028bf90b55ed2355b11a96fb3e99bcb3b7c0f', name: "trailing" })),
71
+ h("slot", { key: '3e1f0f1b411817f15afd1940ff5e1400010604c3', name: "primary-action" }),
72
72
  ];
73
73
  }
74
74
  get translator() {
@@ -19,7 +19,7 @@ const DashboardComponent = /*@__PURE__*/ proxyCustomElement(class DashboardCompo
19
19
  };
20
20
  }
21
21
  render() {
22
- return [this.renderHeader(), h("slot", { key: '3d016060b9b3287c330d1250c4f107fd2fb25612', name: "content" })];
22
+ return [this.renderHeader(), h("slot", { key: '4450486b9bf3fa4b35b6c2371338c29917cbe680', name: "content" })];
23
23
  }
24
24
  static get style() { return LimebbDashboardWidgetStyle0; }
25
25
  }, [1, "limebb-dashboard-widget", {
@@ -25,7 +25,7 @@ const DateRange = /*@__PURE__*/ proxyCustomElement(class DateRange extends HTMLE
25
25
  this.originalEndTime = this.endTime;
26
26
  }
27
27
  render() {
28
- return (h("div", { key: '5ec890a021ae53b045046f7994a84a8d9c4698d9', class: "date-pickers" }, this.renderStartDatePicker(), this.renderEndDatePicker()));
28
+ return (h("div", { key: '8424fac6160776909ab0c809fdf01d5c32dd447f', class: "date-pickers" }, this.renderStartDatePicker(), this.renderEndDatePicker()));
29
29
  }
30
30
  renderStartDatePicker() {
31
31
  if (!this.originalStartTime) {
@@ -349,7 +349,7 @@ const DocumentChips = /*@__PURE__*/ proxyCustomElement(class DocumentChips exten
349
349
  this.revokeAllBlobUrls();
350
350
  }
351
351
  render() {
352
- return (h(Host, { key: '6c8347de35ccd6061c8fa282820210f6a3bcc2c8', role: "list", "aria-label": this.accessibleLabel }, this.files.map((file) => this.renderFile(file))));
352
+ return (h(Host, { key: 'a8434c51cd27c94924e392983cb0983b1fbc7f62', role: "list", "aria-label": this.accessibleLabel }, this.files.map((file) => this.renderFile(file))));
353
353
  }
354
354
  renderFile(file) {
355
355
  const isReady = !file.uploadState || file.uploadState === 'done';
@@ -70,7 +70,7 @@ const DocumentPicker = /*@__PURE__*/ proxyCustomElement(class DocumentPicker ext
70
70
  this.labelId = createRandomString();
71
71
  }
72
72
  render() {
73
- return (h(Host, { key: '8f6613354bdee3af42920f78325b2e1a76bbf91e' }, h("limel-notched-outline", { key: '9b4b665b76f4c1fc1047052824c7cff1dcd7c495', labelId: this.labelId, label: this.label, required: this.required, invalid: this.invalid, hasFloatingLabel: true }, h("limel-masonry-layout", { key: '1578066ee0b76f4344389a91c68b09b5955bae90', slot: "content", role: this.type === 'radio' ? 'radiogroup' : 'group', "aria-labelledby": this.label ? this.labelId : undefined, "aria-describedby": this.helperText ? this.helperTextId : undefined }, this.renderItems())), this.renderHelperLine()));
73
+ return (h(Host, { key: 'b28a99c85792d47c500bb2b91aa2011bd7298f48' }, h("limel-notched-outline", { key: 'c855f472a73f0f2d35a0f5452ea2fcd5d370e834', labelId: this.labelId, label: this.label, required: this.required, invalid: this.invalid, hasFloatingLabel: true }, h("limel-masonry-layout", { key: 'e333e8e2244e2e56abb178ea2359bcae5c8d699a', slot: "content", role: this.type === 'radio' ? 'radiogroup' : 'group', "aria-labelledby": this.label ? this.labelId : undefined, "aria-describedby": this.helperText ? this.helperTextId : undefined }, this.renderItems())), this.renderHelperLine()));
74
74
  }
75
75
  renderItems() {
76
76
  return this.items.map((item) => (h("limebb-document-item", { platform: this.platform, context: this.context, item: item, key: item.file.id, type: this.type, onInteract: this.handleItemInteract })));
@@ -244,7 +244,7 @@ const Feed = /*@__PURE__*/ proxyCustomElement(class Feed extends HTMLElement {
244
244
  this.highlighter.unregisterFeed(this.feedItemElement);
245
245
  }
246
246
  render() {
247
- return (h(Host, { key: 'b56f2996447a80c5cf12f83fce2ca05de53553e4', role: "log", "aria-busy": this.loading ? 'true' : 'false', style: {
247
+ return (h(Host, { key: 'ce3bdf0a1500bb43636b4632c6b37c5041008795', role: "log", "aria-busy": this.loading ? 'true' : 'false', style: {
248
248
  '--limebb-feed-highlight-duration': `${ITEM_HIGHLIGHT_DURATION}ms`,
249
249
  } }, this.renderLoadMore(), this.renderEmptyFeedMessage(), this.renderSpinner(), this.renderFeedItems()));
250
250
  }
@@ -52995,7 +52995,7 @@ const IconPicker = /*@__PURE__*/ proxyCustomElement(class IconPicker extends HTM
52995
52995
  icon: this.value,
52996
52996
  };
52997
52997
  }
52998
- return (h("limel-picker", { key: 'd86348e6a8d4e6aa03ac880565cfd53eccfa4aff', label: this.label, helperText: this.helperText, disabled: this.disabled, readonly: this.readonly, invalid: this.invalid, required: this.required, value: value, searcher: this.search, onChange: this.handleChange, badgeIcons: false, leadingIcon: "search", searchLabel: "Start typing to find the right icon" }));
52998
+ return (h("limel-picker", { key: 'd899650ef643e6192247e252cedcd4cd2cc0ca44', label: this.label, helperText: this.helperText, disabled: this.disabled, readonly: this.readonly, invalid: this.invalid, required: this.required, value: value, searcher: this.search, onChange: this.handleChange, badgeIcons: false, leadingIcon: "search", searchLabel: "Start typing to find the right icon" }));
52999
52999
  }
53000
53000
  }, [1, "limebb-icon-picker", {
53001
53001
  "value": [1],
@@ -94,7 +94,7 @@ const InfoTileAdminConfig = /*@__PURE__*/ proxyCustomElement(class InfoTileAdmin
94
94
  },
95
95
  ];
96
96
  return [
97
- h("limel-button-group", { key: 'cac8e4793eb19e3f4d959a7a53115954b190eddf', value: buttons.filter(this.isValidButton), onChange: this.handleChangeType }),
97
+ h("limel-button-group", { key: 'e286565f45b3a71b7b666e1479f33b1e8dc25c0f', value: buttons.filter(this.isValidButton), onChange: this.handleChangeType }),
98
98
  this.renderFormatConfig(),
99
99
  ];
100
100
  }