@limetech/lime-crm-building-blocks 1.138.0 → 1.139.1

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 (327) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/{filter-group-logic-BoF3Z5_P.js → filter-group-logic-BPpM2NqX.js} +1 -1
  3. package/dist/cjs/{index-B9Bi9dpZ.js → index-BrWc7h0p.js} +1 -1
  4. package/dist/cjs/{index.esm-8LHVbTD0.js → index.esm-Se3EtD3m.js} +2 -2
  5. package/dist/cjs/lime-crm-building-blocks.cjs.js +3 -3
  6. package/dist/cjs/{lime-query-validation-q-sH7XSs.js → lime-query-validation-CJC3mtnT.js} +1 -1
  7. package/dist/cjs/limebb-alert-dialog.cjs.entry.js +2 -2
  8. package/dist/cjs/limebb-browser.cjs.entry.js +4 -4
  9. package/dist/cjs/limebb-chat-icon-list_3.cjs.entry.js +7 -7
  10. package/dist/cjs/limebb-chat-list.cjs.entry.js +3 -3
  11. package/dist/cjs/limebb-color-palette-picker.cjs.entry.js +2 -2
  12. package/dist/cjs/limebb-color-palette-swatches.cjs.entry.js +2 -2
  13. package/dist/cjs/limebb-component-config.cjs.entry.js +3 -3
  14. package/dist/cjs/limebb-component-picker.cjs.entry.js +2 -2
  15. package/dist/cjs/limebb-composer-toolbar.cjs.entry.js +4 -4
  16. package/dist/cjs/limebb-currency-picker.cjs.entry.js +3 -3
  17. package/dist/cjs/limebb-dashboard-widget.cjs.entry.js +2 -2
  18. package/dist/cjs/limebb-data-cells.cjs.entry.js +7 -4
  19. package/dist/cjs/limebb-date-picker.cjs.entry.js +3 -3
  20. package/dist/cjs/limebb-date-range.cjs.entry.js +2 -2
  21. package/dist/cjs/limebb-document-chips.cjs.entry.js +2 -2
  22. package/dist/cjs/limebb-document-item.cjs.entry.js +3 -3
  23. package/dist/cjs/limebb-document-picker.cjs.entry.js +2 -2
  24. package/dist/cjs/limebb-empty-state.cjs.entry.js +1 -1
  25. package/dist/cjs/limebb-feed-item-thumbnail-file-info.cjs.entry.js +2 -2
  26. package/dist/cjs/limebb-feed-timeline-item.cjs.entry.js +4 -4
  27. package/dist/cjs/limebb-feed.cjs.entry.js +91 -34
  28. package/dist/cjs/limebb-filter-chip_5.cjs.entry.js +11 -11
  29. package/dist/cjs/limebb-icon-picker.cjs.entry.js +2 -2
  30. package/dist/cjs/limebb-info-tile-currency-format.cjs.entry.js +1 -1
  31. package/dist/cjs/limebb-info-tile-date-format.cjs.entry.js +1 -1
  32. package/dist/cjs/limebb-info-tile-decimal-format.cjs.entry.js +1 -1
  33. package/dist/cjs/limebb-info-tile-format.cjs.entry.js +2 -2
  34. package/dist/cjs/limebb-info-tile-relative-date-format.cjs.entry.js +1 -1
  35. package/dist/cjs/limebb-info-tile-unit-format.cjs.entry.js +1 -1
  36. package/dist/cjs/limebb-info-tile.cjs.entry.js +4 -4
  37. package/dist/cjs/limebb-kanban-group.cjs.entry.js +4 -4
  38. package/dist/cjs/limebb-kanban-item.cjs.entry.js +4 -4
  39. package/dist/cjs/limebb-kanban.cjs.entry.js +1 -1
  40. package/dist/cjs/limebb-lime-query-builder.cjs.entry.js +4 -4
  41. package/dist/cjs/limebb-lime-query-filter-builder.cjs.entry.js +3 -3
  42. package/dist/cjs/limebb-lime-query-filter-comparison_2.cjs.entry.js +5 -5
  43. package/dist/cjs/limebb-lime-query-order-by-editor_2.cjs.entry.js +5 -5
  44. package/dist/cjs/limebb-lime-query-order-by-item.cjs.entry.js +3 -3
  45. package/dist/cjs/limebb-lime-query-response-format-builder.cjs.entry.js +4 -4
  46. package/dist/cjs/limebb-lime-query-response-format-editor_2.cjs.entry.js +3 -3
  47. package/dist/cjs/limebb-limeobject-file-viewer.cjs.entry.js +2 -2
  48. package/dist/cjs/limebb-live-docs-info.cjs.entry.js +3 -3
  49. package/dist/cjs/limebb-loader.cjs.entry.js +2 -2
  50. package/dist/cjs/limebb-locale-picker.cjs.entry.js +3 -3
  51. package/dist/cjs/limebb-mention-group-counter.cjs.entry.js +3 -3
  52. package/dist/cjs/limebb-mention.cjs.entry.js +2 -2
  53. package/dist/cjs/limebb-navigation-button_2.cjs.entry.js +3 -3
  54. package/dist/cjs/limebb-notification-item.cjs.entry.js +3 -3
  55. package/dist/cjs/limebb-notification-list.cjs.entry.js +2 -2
  56. package/dist/cjs/limebb-object-chip.cjs.entry.js +3 -3
  57. package/dist/cjs/limebb-percentage-visualizer.cjs.entry.js +5 -5
  58. package/dist/cjs/limebb-property-selector.cjs.entry.js +3 -3
  59. package/dist/cjs/limebb-rule-arg-filter-editor.cjs.entry.js +2 -2
  60. package/dist/cjs/limebb-rule-chip-popover.cjs.entry.js +4 -4
  61. package/dist/cjs/limebb-rule-editor.cjs.entry.js +3 -3
  62. package/dist/cjs/limebb-rule-gate.cjs.entry.js +3 -3
  63. package/dist/cjs/limebb-text-editor-picker.cjs.entry.js +1 -1
  64. package/dist/cjs/limebb-text-editor.cjs.entry.js +4 -4
  65. package/dist/cjs/limebb-trend-indicator.cjs.entry.js +4 -4
  66. package/dist/cjs/limebb-value-comparison-editor.cjs.entry.js +282 -26
  67. package/dist/cjs/{limetype-CK5MVyW0.js → limetype-CmgP0nbZ.js} +1 -1
  68. package/dist/cjs/loader.cjs.js +2 -2
  69. package/dist/cjs/{web-component-template-7B9wK2bO.js → web-component-template-C9hvjrMm.js} +1 -1
  70. package/dist/collection/collection-manifest.json +1 -1
  71. package/dist/collection/components/alert-dialog/alert-dialog.js +1 -1
  72. package/dist/collection/components/browser/browser.js +2 -2
  73. package/dist/collection/components/chat-list/chat-icon-list/chat-icon-list.css +7 -5
  74. package/dist/collection/components/chat-list/chat-icon-list/chat-icon-list.js +1 -1
  75. package/dist/collection/components/chat-list/chat-item/chat-item.js +2 -2
  76. package/dist/collection/components/chat-list/chat-list.js +1 -1
  77. package/dist/collection/components/chat-list/typing-indicator/typing-indicator.js +1 -1
  78. package/dist/collection/components/color-palette-picker/color-palette-picker.js +1 -1
  79. package/dist/collection/components/color-palette-picker/color-palette-swatches/color-palette-swatches.js +1 -1
  80. package/dist/collection/components/composer-toolbar/composer-toolbar.js +2 -2
  81. package/dist/collection/components/currency-picker/currency-picker.js +1 -1
  82. package/dist/collection/components/dashboard-widget/dashboard-widget.js +1 -1
  83. package/dist/collection/components/data-cells/data-cells.js +5 -2
  84. package/dist/collection/components/date-picker/date-picker.js +1 -1
  85. package/dist/collection/components/date-range/date-range.js +1 -1
  86. package/dist/collection/components/document-chips/document-chips.js +1 -1
  87. package/dist/collection/components/document-picker/document-item/document-item.js +2 -2
  88. package/dist/collection/components/document-picker/document-picker.js +1 -1
  89. package/dist/collection/components/feed/feed-item/feed-timeline-item.css +32 -24
  90. package/dist/collection/components/feed/feed-item/feed-timeline-item.js +1 -1
  91. package/dist/collection/components/feed/feed-item-thumbnail-file-info/feed-item-thumbnail-file-info.js +1 -1
  92. package/dist/collection/components/feed/feed.js +2 -2
  93. package/dist/collection/components/filter-chip/filter-chip.css +19 -17
  94. package/dist/collection/components/filter-chip/filter-chip.js +3 -3
  95. package/dist/collection/components/icon-picker/icon-picker.js +1 -1
  96. package/dist/collection/components/info-tile/format/config/info-tile-format.js +1 -1
  97. package/dist/collection/components/info-tile/info-tile.js +1 -1
  98. package/dist/collection/components/kanban/kanban-group/kanban-group.css +14 -12
  99. package/dist/collection/components/kanban/kanban-group/kanban-group.js +1 -1
  100. package/dist/collection/components/kanban/kanban-item/kanban-item.css +11 -7
  101. package/dist/collection/components/kanban/kanban-item/kanban-item.js +1 -1
  102. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison-editor.js +1 -1
  103. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison.js +2 -2
  104. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-group.css +4 -4
  105. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-group.js +2 -2
  106. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-not.js +1 -1
  107. package/dist/collection/components/lime-query-builder/lime-query-builder.js +1 -1
  108. package/dist/collection/components/lime-query-builder/lime-query-response-format-builder.js +1 -1
  109. package/dist/collection/components/lime-query-builder/limetype-field/limetype-field.js +1 -1
  110. package/dist/collection/components/lime-query-builder/order-by/order-by-editor.js +1 -1
  111. package/dist/collection/components/lime-query-builder/order-by/order-by-item.js +2 -2
  112. package/dist/collection/components/lime-query-builder/response-format/response-format-item.css +8 -6
  113. package/dist/collection/components/lime-query-builder/response-format/response-format-item.js +1 -1
  114. package/dist/collection/components/limeobject/file-viewer/live-docs-info.js +2 -2
  115. package/dist/collection/components/locale-picker/locale-picker.js +1 -1
  116. package/dist/collection/components/notification-list/notification-item/notification-item.js +1 -1
  117. package/dist/collection/components/percentage-visualizer/percentage-visualizer.css +7 -7
  118. package/dist/collection/components/percentage-visualizer/percentage-visualizer.js +5 -5
  119. package/dist/collection/components/rule-editor/rule-chip-popover/rule-chip-popover.js +1 -1
  120. package/dist/collection/components/rule-editor/rule-editor.js +1 -1
  121. package/dist/collection/components/rule-editor/value-comparison-editor/value-comparison-editor.css +11 -0
  122. package/dist/collection/components/rule-editor/value-comparison-editor/value-comparison-editor.js +297 -33
  123. package/dist/collection/components/rule-gate/rule-gate.js +1 -1
  124. package/dist/collection/components/summary-popover/summary-popover.js +2 -2
  125. package/dist/collection/components/text-editor/mention-group-counter.js +2 -2
  126. package/dist/collection/components/text-editor/text-editor.js +1 -1
  127. package/dist/collection/components/trend-indicator/trend-indicator.css +7 -7
  128. package/dist/collection/components/trend-indicator/trend-indicator.js +1 -1
  129. package/dist/components/chat-icon-list.js +1 -1
  130. package/dist/components/chat-item.js +1 -1
  131. package/dist/components/currency-picker.js +1 -1
  132. package/dist/components/date-picker.js +1 -1
  133. package/dist/components/document-item.js +1 -1
  134. package/dist/components/feed-item-thumbnail-file-info.js +1 -1
  135. package/dist/components/feed-timeline-item.js +1 -1
  136. package/dist/components/filter-chip.js +1 -1
  137. package/dist/components/kanban-group.js +1 -1
  138. package/dist/components/kanban-item.js +1 -1
  139. package/dist/components/lime-query-filter-comparison-editor.js +1 -1
  140. package/dist/components/lime-query-filter-comparison.js +1 -1
  141. package/dist/components/lime-query-filter-expression.js +1 -1
  142. package/dist/components/limebb-alert-dialog.js +1 -1
  143. package/dist/components/limebb-browser.js +1 -1
  144. package/dist/components/limebb-chat-list.js +1 -1
  145. package/dist/components/limebb-color-palette-picker.js +1 -1
  146. package/dist/components/limebb-color-palette-swatches.js +1 -1
  147. package/dist/components/limebb-composer-toolbar.js +1 -1
  148. package/dist/components/limebb-dashboard-widget.js +1 -1
  149. package/dist/components/limebb-data-cells.js +1 -1
  150. package/dist/components/limebb-date-range.js +1 -1
  151. package/dist/components/limebb-document-chips.js +1 -1
  152. package/dist/components/limebb-document-picker.js +1 -1
  153. package/dist/components/limebb-feed.js +1 -1
  154. package/dist/components/limebb-icon-picker.js +1 -1
  155. package/dist/components/limebb-info-tile-format.js +1 -1
  156. package/dist/components/limebb-info-tile.js +1 -1
  157. package/dist/components/limebb-lime-query-builder.js +1 -1
  158. package/dist/components/limebb-lime-query-response-format-builder.js +1 -1
  159. package/dist/components/limebb-locale-picker.js +1 -1
  160. package/dist/components/limebb-mention-group-counter.js +1 -1
  161. package/dist/components/limebb-rule-editor.js +1 -1
  162. package/dist/components/limebb-rule-gate.js +1 -1
  163. package/dist/components/limebb-text-editor.js +1 -1
  164. package/dist/components/limebb-trend-indicator.js +1 -1
  165. package/dist/components/limebb-value-comparison-editor.js +1 -1
  166. package/dist/components/limetype-field.js +1 -1
  167. package/dist/components/live-docs-info.js +1 -1
  168. package/dist/components/notification-item.js +1 -1
  169. package/dist/components/order-by-editor.js +1 -1
  170. package/dist/components/order-by-item.js +1 -1
  171. package/dist/components/percentage-visualizer.js +1 -1
  172. package/dist/components/response-format-item.js +1 -1
  173. package/dist/components/rule-chip-popover.js +1 -1
  174. package/dist/components/summary-popover.js +1 -1
  175. package/dist/components/typing-indicator.js +1 -1
  176. package/dist/esm/{filter-group-logic-CRznE2g-.js → filter-group-logic-BMY_GEsX.js} +1 -1
  177. package/dist/esm/{index-LEJjPpY0.js → index-DwHAn7LS.js} +1 -1
  178. package/dist/esm/{index.esm-B7wJLMmp.js → index.esm-C-L5fkQs.js} +1 -1
  179. package/dist/esm/lime-crm-building-blocks.js +4 -4
  180. package/dist/esm/{lime-query-validation-Dds_iPHd.js → lime-query-validation-BwvluehW.js} +1 -1
  181. package/dist/esm/limebb-alert-dialog.entry.js +2 -2
  182. package/dist/esm/limebb-browser.entry.js +4 -4
  183. package/dist/esm/limebb-chat-icon-list_3.entry.js +7 -7
  184. package/dist/esm/limebb-chat-list.entry.js +3 -3
  185. package/dist/esm/limebb-color-palette-picker.entry.js +2 -2
  186. package/dist/esm/limebb-color-palette-swatches.entry.js +2 -2
  187. package/dist/esm/limebb-component-config.entry.js +3 -3
  188. package/dist/esm/limebb-component-picker.entry.js +2 -2
  189. package/dist/esm/limebb-composer-toolbar.entry.js +4 -4
  190. package/dist/esm/limebb-currency-picker.entry.js +3 -3
  191. package/dist/esm/limebb-dashboard-widget.entry.js +2 -2
  192. package/dist/esm/limebb-data-cells.entry.js +7 -4
  193. package/dist/esm/limebb-date-picker.entry.js +3 -3
  194. package/dist/esm/limebb-date-range.entry.js +2 -2
  195. package/dist/esm/limebb-document-chips.entry.js +2 -2
  196. package/dist/esm/limebb-document-item.entry.js +3 -3
  197. package/dist/esm/limebb-document-picker.entry.js +2 -2
  198. package/dist/esm/limebb-empty-state.entry.js +1 -1
  199. package/dist/esm/limebb-feed-item-thumbnail-file-info.entry.js +2 -2
  200. package/dist/esm/limebb-feed-timeline-item.entry.js +4 -4
  201. package/dist/esm/limebb-feed.entry.js +91 -34
  202. package/dist/esm/limebb-filter-chip_5.entry.js +11 -11
  203. package/dist/esm/limebb-icon-picker.entry.js +2 -2
  204. package/dist/esm/limebb-info-tile-currency-format.entry.js +1 -1
  205. package/dist/esm/limebb-info-tile-date-format.entry.js +1 -1
  206. package/dist/esm/limebb-info-tile-decimal-format.entry.js +1 -1
  207. package/dist/esm/limebb-info-tile-format.entry.js +2 -2
  208. package/dist/esm/limebb-info-tile-relative-date-format.entry.js +1 -1
  209. package/dist/esm/limebb-info-tile-unit-format.entry.js +1 -1
  210. package/dist/esm/limebb-info-tile.entry.js +4 -4
  211. package/dist/esm/limebb-kanban-group.entry.js +4 -4
  212. package/dist/esm/limebb-kanban-item.entry.js +4 -4
  213. package/dist/esm/limebb-kanban.entry.js +1 -1
  214. package/dist/esm/limebb-lime-query-builder.entry.js +4 -4
  215. package/dist/esm/limebb-lime-query-filter-builder.entry.js +3 -3
  216. package/dist/esm/limebb-lime-query-filter-comparison_2.entry.js +5 -5
  217. package/dist/esm/limebb-lime-query-order-by-editor_2.entry.js +5 -5
  218. package/dist/esm/limebb-lime-query-order-by-item.entry.js +3 -3
  219. package/dist/esm/limebb-lime-query-response-format-builder.entry.js +4 -4
  220. package/dist/esm/limebb-lime-query-response-format-editor_2.entry.js +3 -3
  221. package/dist/esm/limebb-limeobject-file-viewer.entry.js +2 -2
  222. package/dist/esm/limebb-live-docs-info.entry.js +3 -3
  223. package/dist/esm/limebb-loader.entry.js +2 -2
  224. package/dist/esm/limebb-locale-picker.entry.js +3 -3
  225. package/dist/esm/limebb-mention-group-counter.entry.js +3 -3
  226. package/dist/esm/limebb-mention.entry.js +2 -2
  227. package/dist/esm/limebb-navigation-button_2.entry.js +3 -3
  228. package/dist/esm/limebb-notification-item.entry.js +3 -3
  229. package/dist/esm/limebb-notification-list.entry.js +2 -2
  230. package/dist/esm/limebb-object-chip.entry.js +3 -3
  231. package/dist/esm/limebb-percentage-visualizer.entry.js +5 -5
  232. package/dist/esm/limebb-property-selector.entry.js +3 -3
  233. package/dist/esm/limebb-rule-arg-filter-editor.entry.js +2 -2
  234. package/dist/esm/limebb-rule-chip-popover.entry.js +4 -4
  235. package/dist/esm/limebb-rule-editor.entry.js +3 -3
  236. package/dist/esm/limebb-rule-gate.entry.js +3 -3
  237. package/dist/esm/limebb-text-editor-picker.entry.js +1 -1
  238. package/dist/esm/limebb-text-editor.entry.js +4 -4
  239. package/dist/esm/limebb-trend-indicator.entry.js +4 -4
  240. package/dist/esm/limebb-value-comparison-editor.entry.js +282 -26
  241. package/dist/esm/{limetype-DH77rgZZ.js → limetype-D4ZaWZ-3.js} +1 -1
  242. package/dist/esm/loader.js +3 -3
  243. package/dist/esm/{web-component-template-CXFK-BYa.js → web-component-template-CAI6pXCH.js} +1 -1
  244. package/dist/lime-crm-building-blocks/lime-crm-building-blocks.esm.js +1 -1
  245. package/dist/lime-crm-building-blocks/{p-bb825e68.entry.js → p-00ca6522.entry.js} +1 -1
  246. package/dist/lime-crm-building-blocks/p-01f84b0c.entry.js +1 -0
  247. package/dist/lime-crm-building-blocks/{p-7597eb85.entry.js → p-0253fd45.entry.js} +1 -1
  248. package/dist/lime-crm-building-blocks/{p-4e66111a.entry.js → p-0579d006.entry.js} +1 -1
  249. package/dist/lime-crm-building-blocks/{p-e3d8fd1b.entry.js → p-0843b50b.entry.js} +1 -1
  250. package/dist/lime-crm-building-blocks/{p-4f398108.entry.js → p-0c4f6220.entry.js} +1 -1
  251. package/dist/lime-crm-building-blocks/{p-cf687fcd.entry.js → p-0f821315.entry.js} +1 -1
  252. package/dist/lime-crm-building-blocks/{p-4fcb97ea.entry.js → p-0f9a680c.entry.js} +1 -1
  253. package/dist/lime-crm-building-blocks/{p-61ee03f9.entry.js → p-13a35953.entry.js} +1 -1
  254. package/dist/lime-crm-building-blocks/{p-5095a168.entry.js → p-1cd148e2.entry.js} +1 -1
  255. package/dist/lime-crm-building-blocks/{p-2caee700.entry.js → p-29758303.entry.js} +1 -1
  256. package/dist/lime-crm-building-blocks/{p-382ab76b.entry.js → p-2e48601d.entry.js} +1 -1
  257. package/dist/lime-crm-building-blocks/p-302e6e3e.entry.js +1 -0
  258. package/dist/lime-crm-building-blocks/{p-db9ed6ed.entry.js → p-354257f4.entry.js} +1 -1
  259. package/dist/lime-crm-building-blocks/{p-b8e4a0d1.entry.js → p-39009b47.entry.js} +1 -1
  260. package/dist/lime-crm-building-blocks/{p-5960143c.entry.js → p-3bf316f9.entry.js} +1 -1
  261. package/dist/lime-crm-building-blocks/{p-cfc3f16b.entry.js → p-3fc9866a.entry.js} +1 -1
  262. package/dist/lime-crm-building-blocks/{p-b9c4df08.entry.js → p-41ddbdde.entry.js} +1 -1
  263. package/dist/lime-crm-building-blocks/{p-88bdf554.entry.js → p-46dc34a6.entry.js} +1 -1
  264. package/dist/lime-crm-building-blocks/{p-00860497.entry.js → p-558915e4.entry.js} +1 -1
  265. package/dist/lime-crm-building-blocks/p-5b1ccfe1.entry.js +1 -0
  266. package/dist/lime-crm-building-blocks/p-5b819d10.entry.js +1 -0
  267. package/dist/lime-crm-building-blocks/{p-7dedd057.entry.js → p-5bc41701.entry.js} +1 -1
  268. package/dist/lime-crm-building-blocks/{p-45d89e49.entry.js → p-69a3038b.entry.js} +1 -1
  269. package/dist/lime-crm-building-blocks/{p-50f5380d.entry.js → p-6cdefdc9.entry.js} +1 -1
  270. package/dist/lime-crm-building-blocks/{p-b6a8ad7a.entry.js → p-6f4e2590.entry.js} +1 -1
  271. package/dist/lime-crm-building-blocks/p-752742f8.entry.js +1 -0
  272. package/dist/lime-crm-building-blocks/p-7a158104.entry.js +1 -0
  273. package/dist/lime-crm-building-blocks/{p-6db41866.entry.js → p-80e04b27.entry.js} +1 -1
  274. package/dist/lime-crm-building-blocks/{p-b2b595cc.entry.js → p-817e2952.entry.js} +1 -1
  275. package/dist/lime-crm-building-blocks/{p-bec2bcef.entry.js → p-89f120f8.entry.js} +1 -1
  276. package/dist/lime-crm-building-blocks/p-8d592755.entry.js +1 -0
  277. package/dist/lime-crm-building-blocks/{p-46cc4edb.entry.js → p-9033acb5.entry.js} +1 -1
  278. package/dist/lime-crm-building-blocks/p-92679e20.entry.js +1 -0
  279. package/dist/lime-crm-building-blocks/p-927e446d.entry.js +1 -0
  280. package/dist/lime-crm-building-blocks/{p-c85e44a9.entry.js → p-96ea4550.entry.js} +1 -1
  281. package/dist/lime-crm-building-blocks/{p-639032ba.entry.js → p-97839894.entry.js} +1 -1
  282. package/dist/lime-crm-building-blocks/{p-0bdfd7ab.entry.js → p-994296b0.entry.js} +1 -1
  283. package/dist/lime-crm-building-blocks/p-B-WBKAaa.js +1 -0
  284. package/dist/lime-crm-building-blocks/p-BjXRsiQr.js +1 -0
  285. package/dist/lime-crm-building-blocks/{p-Dtg8KAQt.js → p-Bkno2RtN.js} +1 -1
  286. package/dist/lime-crm-building-blocks/{p-DM0fyjo-.js → p-CI6VHE0w.js} +1 -1
  287. package/dist/lime-crm-building-blocks/{p-BxpMk4Zk.js → p-DI3GWqfD.js} +1 -1
  288. package/dist/lime-crm-building-blocks/{p-2091d4c8.entry.js → p-a6e9cefe.entry.js} +1 -1
  289. package/dist/lime-crm-building-blocks/{p-e2503bad.entry.js → p-b0b8ce73.entry.js} +1 -1
  290. package/dist/lime-crm-building-blocks/{p-f5c44de2.entry.js → p-b0ec4121.entry.js} +1 -1
  291. package/dist/lime-crm-building-blocks/p-b7e5a10e.entry.js +1 -0
  292. package/dist/lime-crm-building-blocks/{p-e0107a69.entry.js → p-bd0a30d7.entry.js} +1 -1
  293. package/dist/lime-crm-building-blocks/{p-c84136ae.entry.js → p-bde3e779.entry.js} +1 -1
  294. package/dist/lime-crm-building-blocks/{p-90f3e299.entry.js → p-be5c43bb.entry.js} +1 -1
  295. package/dist/lime-crm-building-blocks/p-bf4b2a91.entry.js +1 -0
  296. package/dist/lime-crm-building-blocks/{p-73fab4a9.entry.js → p-c891125e.entry.js} +1 -1
  297. package/dist/lime-crm-building-blocks/{p-8d41a7f8.entry.js → p-d7d6d21b.entry.js} +1 -1
  298. package/dist/lime-crm-building-blocks/{p-22e4b5e9.entry.js → p-d95f66c8.entry.js} +1 -1
  299. package/dist/lime-crm-building-blocks/{p-3c25e289.entry.js → p-dacd1df3.entry.js} +1 -1
  300. package/dist/lime-crm-building-blocks/{p-5e4c9115.entry.js → p-de785fee.entry.js} +1 -1
  301. package/dist/lime-crm-building-blocks/{p-23556cb1.entry.js → p-e2420cde.entry.js} +1 -1
  302. package/dist/lime-crm-building-blocks/{p-d8d30ec3.entry.js → p-e4cef02f.entry.js} +1 -1
  303. package/dist/lime-crm-building-blocks/{p-00be69ac.entry.js → p-e618ccd3.entry.js} +1 -1
  304. package/dist/lime-crm-building-blocks/{p-a201e304.entry.js → p-ec1e079e.entry.js} +1 -1
  305. package/dist/lime-crm-building-blocks/{p-37fbd50d.entry.js → p-f4d518ec.entry.js} +1 -1
  306. package/dist/lime-crm-building-blocks/{p-1c67e198.entry.js → p-f73e3da0.entry.js} +1 -1
  307. package/dist/lime-crm-building-blocks/{p-f3d3ff7e.entry.js → p-fb8d854b.entry.js} +1 -1
  308. package/dist/lime-crm-building-blocks/{p-342aae30.entry.js → p-fce1a282.entry.js} +1 -1
  309. package/dist/lime-crm-building-blocks/{p-4e7b8559.entry.js → p-fd38bf57.entry.js} +1 -1
  310. package/dist/types/components/rule-editor/value-comparison-editor/value-comparison-editor.d.ts +40 -19
  311. package/dist/types/components.d.ts +30 -42
  312. package/dist/types/stencil-public-runtime.d.ts +1 -0
  313. package/package.json +10 -10
  314. package/dist/lime-crm-building-blocks/p-01ddcb14.entry.js +0 -1
  315. package/dist/lime-crm-building-blocks/p-15bb23c9.entry.js +0 -1
  316. package/dist/lime-crm-building-blocks/p-31580e01.entry.js +0 -1
  317. package/dist/lime-crm-building-blocks/p-52f39097.entry.js +0 -1
  318. package/dist/lime-crm-building-blocks/p-5f940ea8.entry.js +0 -1
  319. package/dist/lime-crm-building-blocks/p-6cfebec1.entry.js +0 -1
  320. package/dist/lime-crm-building-blocks/p-7b119566.entry.js +0 -1
  321. package/dist/lime-crm-building-blocks/p-840b817b.entry.js +0 -1
  322. package/dist/lime-crm-building-blocks/p-9ad269dd.entry.js +0 -1
  323. package/dist/lime-crm-building-blocks/p-Bb18Bgig.js +0 -1
  324. package/dist/lime-crm-building-blocks/p-d7462e93.entry.js +0 -1
  325. package/dist/lime-crm-building-blocks/p-f382f2fa.entry.js +0 -1
  326. package/dist/lime-crm-building-blocks/p-xIXgZHrE.js +0 -1
  327. /package/dist/lime-crm-building-blocks/{p-LEJjPpY0.js → p-DwHAn7LS.js} +0 -0
@@ -1,7 +1,7 @@
1
- import { r as registerInstance, c as createEvent, h } from './index-LEJjPpY0.js';
2
- import { L as Le, b as n } from './index.esm-B7wJLMmp.js';
1
+ import { r as registerInstance, c as createEvent, h } from './index-DwHAn7LS.js';
2
+ import { L as Le, b as n } from './index.esm-C-L5fkQs.js';
3
3
  import { g as getPropertyFromPath, a as getNormalizedProperties } from './property-resolution-CQUZjrU4.js';
4
- import { g as getIcon } from './limetype-DH77rgZZ.js';
4
+ import { g as getIcon } from './limetype-D4ZaWZ-3.js';
5
5
 
6
6
  const propertySelectorCss = () => `:host(limebb-property-selector){display:block}limel-menu{display:block;width:100%}`;
7
7
 
@@ -1,5 +1,5 @@
1
- import { r as registerInstance, c as createEvent, h } from './index-LEJjPpY0.js';
2
- import { O as Ot } from './index.esm-B7wJLMmp.js';
1
+ import { r as registerInstance, c as createEvent, h } from './index-DwHAn7LS.js';
2
+ import { O as Ot } from './index.esm-C-L5fkQs.js';
3
3
 
4
4
  const ruleArgFilterEditorCss = () => `:host{display:block}`;
5
5
 
@@ -1,6 +1,6 @@
1
- import { r as registerInstance, c as createEvent, h } from './index-LEJjPpY0.js';
2
- import { T as Tt, b as n } from './index.esm-B7wJLMmp.js';
3
- import { L as LimeWebComponentTemplate } from './web-component-template-CXFK-BYa.js';
1
+ import { r as registerInstance, c as createEvent, h } from './index-DwHAn7LS.js';
2
+ import { T as Tt, b as n } from './index.esm-C-L5fkQs.js';
3
+ import { L as LimeWebComponentTemplate } from './web-component-template-CAI6pXCH.js';
4
4
 
5
5
  const ruleChipPopoverCss = () => `:host{display:block}.popover{display:flex;flex-direction:column;min-width:24rem;background-color:rgb(var(--contrast-100));border:1px solid rgb(var(--contrast-700));border-radius:0.5rem;box-shadow:0 0.25rem 0.75rem rgba(0, 0, 0, 0.15);overflow:hidden}.popover__header{--header-background-color:rgba(var(--contrast-300));padding-right:0.5rem;gap:1rem}.popover__header-actions{display:grid;grid-auto-flow:column;grid-gap:0.75rem;padding:0.25rem;align-items:center}.popover__delete-button{color:rgb(var(--contrast-1100))}.popover__body{padding:1rem}`;
6
6
 
@@ -45,7 +45,7 @@ const RuleChipPopover = class {
45
45
  };
46
46
  }
47
47
  render() {
48
- return (h("div", { key: '9577a4da5cb41e51ab83f2ed602781c13d7af503', class: "popover" }, this.renderHeader(), this.renderBody()));
48
+ return (h("div", { key: '1b3a5fc8fc65f577b082cb368d92a99cfc68806a', class: "popover" }, this.renderHeader(), this.renderBody()));
49
49
  }
50
50
  renderHeader() {
51
51
  var _a, _b, _c, _d;
@@ -1,5 +1,5 @@
1
- import { h, r as registerInstance, c as createEvent, g as getElement } from './index-LEJjPpY0.js';
2
- import { O as Ot, b as n } from './index.esm-B7wJLMmp.js';
1
+ import { h, r as registerInstance, c as createEvent, g as getElement } from './index-DwHAn7LS.js';
2
+ import { O as Ot, b as n } from './index.esm-C-L5fkQs.js';
3
3
 
4
4
  /**
5
5
  * Remove the node at `path`.
@@ -584,7 +584,7 @@ const RuleEditor = class {
584
584
  'rule-editor': true,
585
585
  'rule-editor--disabled': this.disabled,
586
586
  };
587
- return (h("div", { key: '2c1a7d0162a9145de148c55d3d349edb21c26b34', class: containerClasses }, this.renderLabel(), h(RuleNodeView, { key: 'bfcadccfef5f55ba8325454fa11ee4e27faa1adc', node: this.normalizedValue, path: [], ctx: this.createRenderContext() }), this.renderHelperText()));
587
+ return (h("div", { key: '983f8e733e177da750191a88e3c176166932f7e0', class: containerClasses }, this.renderLabel(), h(RuleNodeView, { key: '48be41683418ead2b1f2283615b559cfcabbfa98', node: this.normalizedValue, path: [], ctx: this.createRenderContext() }), this.renderHelperText()));
588
588
  }
589
589
  renderLabel() {
590
590
  if (!this.label) {
@@ -1,5 +1,5 @@
1
- import { r as registerInstance, h, H as Host, g as getElement } from './index-LEJjPpY0.js';
2
- import { b as n } from './index.esm-B7wJLMmp.js';
1
+ import { r as registerInstance, h, H as Host, g as getElement } from './index-DwHAn7LS.js';
2
+ import { b as n } from './index.esm-C-L5fkQs.js';
3
3
 
4
4
  const ruleGateCss = () => `:host{display:block}:host([hidden]){display:none}`;
5
5
 
@@ -22,7 +22,7 @@ const RuleGate = class {
22
22
  this.evaluate();
23
23
  }
24
24
  render() {
25
- return (h(Host, { key: 'fd7edf7439ea87b25e48c6f39a92f957b08ed49a', hidden: !this.shouldRender }, h("slot", { key: 'b7996f2833b46fa5ed41e37047380b0f7ce46d17' })));
25
+ return (h(Host, { key: '1aebc90e382bed53ff293634f4aa37cbc5b1f9d0', hidden: !this.shouldRender }, h("slot", { key: 'f28d6bc819101c43c980b80b4467dcb0d15292fa' })));
26
26
  }
27
27
  get ruleRegistry() {
28
28
  return this.platform.get(n.RuleRegistry);
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-LEJjPpY0.js';
1
+ import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-DwHAn7LS.js';
2
2
  import { a as ESCAPE } from './keycodes-CwMJvF_Z.js';
3
3
 
4
4
  const textEditorPickerCss = () => `:host(limebb-text-editor-picker){animation:fade-in 0.3s ease forwards;animation-delay:0.1s;display:block;max-width:calc(100vw - 2rem);padding:0.125rem;border-radius:0.5rem;background-color:rgba(var(--contrast-100));box-shadow:var(--shadow-depth-16);max-height:50vh;overflow-y:auto}limel-menu-list{position:relative}limel-spinner{margin:0 auto}.spinner-in-list{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}@keyframes fade-in{0%{opacity:0}100%{opacity:1}}`;
@@ -1,11 +1,11 @@
1
- import { r as registerInstance, c as createEvent, h, g as getElement } from './index-LEJjPpY0.js';
2
- import { b as n, r as rt, c as it, L as Le } from './index.esm-B7wJLMmp.js';
1
+ import { r as registerInstance, c as createEvent, h, g as getElement } from './index-DwHAn7LS.js';
2
+ import { b as n, r as rt, c as it, L as Le } from './index.esm-C-L5fkQs.js';
3
3
  import { A as ARROW_DOWN, a as ESCAPE, b as ARROW_UP, E as ENTER, T as TAB } from './keycodes-CwMJvF_Z.js';
4
4
  import { o as overArg, U as Uint8Array, c as isPrototype, a as getTag, d as baseUnary, n as nodeUtil, i as isBuffer, S as Stack, g as getAllKeys } from './_Uint8Array-CUI8uY-p.js';
5
5
  import { d as defineProperty } from './_defineProperty-DZ483KPn.js';
6
6
  import { c as isObject, e as eq, S as Symbol, i as isObjectLike, a as isArray, r as root } from './_MapCache-BgAfMcRA.js';
7
7
  import { c as createRandomString } from './random-string-C2JP2nLw.js';
8
- import { h as hasHasManyRelation, b as hasLabel, c as getRelationProperty } from './limetype-DH77rgZZ.js';
8
+ import { h as hasHasManyRelation, b as hasLabel, c as getRelationProperty } from './limetype-D4ZaWZ-3.js';
9
9
  import { i as isNonNull } from './non-null-CkTg5UPD.js';
10
10
  import { i as isSymbol } from './isSymbol-_IkM6xCs.js';
11
11
 
@@ -1520,7 +1520,7 @@ const LimeBBTextEditor = class {
1520
1520
  }
1521
1521
  render() {
1522
1522
  return [
1523
- h("limel-text-editor", { key: 'e25b69ff667cd11469723be202e3c0fe2f97c64e', 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 }),
1523
+ h("limel-text-editor", { key: '0f1423f13a517aaeea8efbacab475a37e38aa857', 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 }),
1524
1524
  this.renderPicker(),
1525
1525
  ];
1526
1526
  }
@@ -1,8 +1,8 @@
1
- import { r as registerInstance, h, H as Host } from './index-LEJjPpY0.js';
2
- import { b as n } from './index.esm-B7wJLMmp.js';
1
+ import { r as registerInstance, h, H as Host } from './index-DwHAn7LS.js';
2
+ import { b as n } from './index.esm-C-L5fkQs.js';
3
3
  import { g as getPercentageClass, n as normalizeValue } from './normalize-value-Cg1DC15C.js';
4
4
 
5
- const trendIndicatorCss = () => `@charset "UTF-8";*{box-sizing:border-box}:host(limebb-trend-indicator){position:relative;display:block;height:100%;width:100%}limel-notched-outline:not([invalid]:not([invalid=false])) .limel-notched-outline--outlines{--limel-notched-outline-border-color:transparent}div[slot=content]{display:flex;align-items:center;gap:0.5rem;border-radius:inherit;background-color:transparent !important}div[slot=content]:focus{outline:none}div[slot=content]:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}:host(limebb-trend-indicator):has(label) div[slot=content]{min-height:2.5rem;padding:0 0.375rem 0 1rem}:host(limebb-trend-indicator[former-value]) div[slot=content]{cursor:help}div[slot=content] span{flex-shrink:0}.icon{flex-shrink:0;display:flex;transition-property:color, background-color, transform;transition-duration:0.4s;transition-timing-function:ease;width:1.25rem;height:1.25rem;border-radius:50%;padding:0.12rem;color:rgb(var(--color-white));background-color:rgb(var(--color-gray-default), 0.5)}:host(.has-value-40to30-negative) .icon{color:rgb(var(--color-gray-darker))}:host(.has-value-30to20-negative) .icon{color:rgb(var(--color-gray-darker))}:host(.has-value-20to10-negative) .icon{color:rgb(var(--color-gray-darker))}:host(.has-value-10to0-negative) .icon{color:rgb(var(--color-gray-darker))}:host(.has-value-0to10-positive) .icon{color:rgb(var(--color-gray-dark))}:host(.has-value-10to20-positive) .icon{color:rgb(var(--color-gray-dark))}:host(.has-value-20to30-positive) .icon{color:rgb(var(--color-gray-dark))}:host(.has-value-30to40-positive) .icon{color:rgb(var(--color-gray-dark))}:host(.has-value-200or-larger-negative) .icon{background-color:rgb(var(--color-red-darker));transform:rotate(90deg)}:host(.has-value-200to100-negative) .icon{background-color:rgb(var(--color-red-dark));transform:rotate(90deg)}:host(.has-value-100to90-negative) .icon{background-color:rgb(var(--color-red-dark));transform:rotate(90deg)}:host(.has-value-90to80-negative) .icon{background-color:rgb(var(--color-red-dark));transform:rotate(81deg)}:host(.has-value-80to70-negative) .icon{background-color:rgb(var(--color-red-default));transform:rotate(72deg)}:host(.has-value-70to60-negative) .icon{background-color:rgb(var(--color-red-default));transform:rotate(63deg)}:host(.has-value-60to50-negative) .icon{background-color:rgb(var(--color-coral-default));transform:rotate(54deg)}:host(.has-value-50to40-negative) .icon{background-color:rgb(var(--color-coral-default));transform:rotate(45deg)}:host(.has-value-40to30-negative) .icon{background-color:rgb(var(--color-orange-default));transform:rotate(36deg)}:host(.has-value-30to20-negative) .icon{background-color:rgb(var(--color-orange-default));transform:rotate(27deg)}:host(.has-value-20to10-negative) .icon{background-color:rgb(var(--color-amber-default));transform:rotate(18deg)}:host(.has-value-10to0-negative) .icon{background-color:rgb(var(--color-amber-default));transform:rotate(9deg)}:host(.has-value-0) .icon{background-color:rgb(var(--color-gray-default));transform:rotate(0deg)}:host(.has-value-0to10-positive) .icon{background-color:rgb(var(--color-yellow-default));transform:rotate(-9deg)}:host(.has-value-10to20-positive) .icon{background-color:rgb(var(--color-yellow-default));transform:rotate(-18deg)}:host(.has-value-20to30-positive) .icon{background-color:rgb(var(--color-grass-default));transform:rotate(-27deg)}:host(.has-value-30to40-positive) .icon{background-color:rgb(var(--color-grass-default));transform:rotate(-36deg)}:host(.has-value-40to50-positive) .icon{background-color:rgb(var(--color-lime-default));transform:rotate(-45deg)}:host(.has-value-50to60-positive) .icon{background-color:rgb(var(--color-lime-default));transform:rotate(-54deg)}:host(.has-value-60to70-positive) .icon{background-color:rgb(var(--color-teal-default));transform:rotate(-63deg)}:host(.has-value-70to80-positive) .icon{background-color:rgb(var(--color-teal-default));transform:rotate(-72deg)}:host(.has-value-80to90-positive) .icon{background-color:rgb(var(--color-teal-dark));transform:rotate(-81deg)}:host(.has-value-90to100-positive) .icon{background-color:rgb(var(--color-teal-dark));transform:rotate(-90deg)}:host(.has-value-100to200-positive) .icon{background-color:rgb(var(--color-teal-dark));transform:rotate(-90deg)}:host(.has-value-200or-larger-positive) .icon{background-color:rgb(var(--color-teal-darker));transform:rotate(-90deg)}:host(.has-value-0) .icon{background-color:rgb(var(--color-gray-default), 0.5);transform:rotate(0deg)}:host(.has-value-0) .icon polyline{color:transparent}:host(.has-value-200or-larger-negative) .icon:after,:host(.has-value-200or-larger-negative) .icon:before,:host(.has-value-200to100-negative) .icon:after,:host(.has-value-200to100-negative) .icon:before,:host(.has-value-100to200-positive) .icon:after,:host(.has-value-100to200-positive) .icon:before,:host(.has-value-200or-larger-positive) .icon:after,:host(.has-value-200or-larger-positive) .icon:before{transition:border-color 0.6s ease;content:"";position:absolute;inset:0;margin:auto;border:1px solid transparent;border-radius:50%}:host(.has-value-200or-larger-negative) .icon:before,:host(.has-value-200to100-negative) .icon:before,:host(.has-value-100to200-positive) .icon:before,:host(.has-value-200or-larger-positive) .icon:before{transform:scale(1.2)}:host(.has-value-200or-larger-negative) .icon:after,:host(.has-value-200to100-negative) .icon:after,:host(.has-value-100to200-positive) .icon:after,:host(.has-value-200or-larger-positive) .icon:after{transform:scale(1.4);opacity:0.4}:host(.has-value-200to100-negative) .icon:before,:host(.has-value-200or-larger-negative) .icon:before{border-color:rgb(var(--color-red-dark))}:host(.has-value-200or-larger-negative) .icon:after{border-color:rgb(var(--color-red-darker))}:host(.has-value-100to200-positive) .icon:before,:host(.has-value-200or-larger-positive) .icon:before{border-color:rgb(var(--color-teal-dark))}:host(.has-value-200or-larger-positive) .icon:after{border-color:rgb(var(--color-teal-darker))}.no-value{transform:translateY(0.5rem)}.growth-unit{padding-left:0.5rem;opacity:0.5}:host(limebb-trend-indicator:focus),:host(limebb-trend-indicator:focus-visible),:host(limebb-trend-indicator:focus-within){--limel-h-l-grid-template-rows-transition-speed:0.46s;--limel-h-l-grid-template-rows:1fr}:host(limebb-trend-indicator){--limel-h-l-grid-template-rows-transition-speed:0.3s;--limel-h-l-grid-template-rows:0fr}:host(limebb-trend-indicator:focus) limel-helper-line,:host(limebb-trend-indicator:focus-visible) limel-helper-line,:host(limebb-trend-indicator:focus-within) limel-helper-line,:host(limebb-trend-indicator:hover) limel-helper-line{will-change:grid-template-rows}`;
5
+ const trendIndicatorCss = () => `@charset "UTF-8";*{box-sizing:border-box}:host(limebb-trend-indicator){position:relative;display:block;height:100%;width:100%}limel-notched-outline:not([invalid]:not([invalid=false])) .limel-notched-outline--outlines{--limel-notched-outline-border-color:transparent}div[slot=content]:focus{outline:none}div[slot=content]:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}div[slot=content]{display:flex;align-items:center;gap:0.5rem;border-radius:inherit;background-color:transparent !important}:host(limebb-trend-indicator):has(label) div[slot=content]{min-height:2.5rem;padding:0 0.375rem 0 1rem}:host(limebb-trend-indicator[former-value]) div[slot=content]{cursor:help}div[slot=content] span{flex-shrink:0}.icon{flex-shrink:0;display:flex;transition-property:color, background-color, transform;transition-duration:0.4s;transition-timing-function:ease;width:1.25rem;height:1.25rem;border-radius:50%;padding:0.12rem;color:rgb(var(--color-white));background-color:rgb(var(--color-gray-default), 0.5)}:host(.has-value-40to30-negative) .icon{color:rgb(var(--color-gray-darker))}:host(.has-value-30to20-negative) .icon{color:rgb(var(--color-gray-darker))}:host(.has-value-20to10-negative) .icon{color:rgb(var(--color-gray-darker))}:host(.has-value-10to0-negative) .icon{color:rgb(var(--color-gray-darker))}:host(.has-value-0to10-positive) .icon{color:rgb(var(--color-gray-dark))}:host(.has-value-10to20-positive) .icon{color:rgb(var(--color-gray-dark))}:host(.has-value-20to30-positive) .icon{color:rgb(var(--color-gray-dark))}:host(.has-value-30to40-positive) .icon{color:rgb(var(--color-gray-dark))}:host(.has-value-200or-larger-negative) .icon{background-color:rgb(var(--color-red-darker));transform:rotate(90deg)}:host(.has-value-200to100-negative) .icon{background-color:rgb(var(--color-red-dark));transform:rotate(90deg)}:host(.has-value-100to90-negative) .icon{background-color:rgb(var(--color-red-dark));transform:rotate(90deg)}:host(.has-value-90to80-negative) .icon{background-color:rgb(var(--color-red-dark));transform:rotate(81deg)}:host(.has-value-80to70-negative) .icon{background-color:rgb(var(--color-red-default));transform:rotate(72deg)}:host(.has-value-70to60-negative) .icon{background-color:rgb(var(--color-red-default));transform:rotate(63deg)}:host(.has-value-60to50-negative) .icon{background-color:rgb(var(--color-coral-default));transform:rotate(54deg)}:host(.has-value-50to40-negative) .icon{background-color:rgb(var(--color-coral-default));transform:rotate(45deg)}:host(.has-value-40to30-negative) .icon{background-color:rgb(var(--color-orange-default));transform:rotate(36deg)}:host(.has-value-30to20-negative) .icon{background-color:rgb(var(--color-orange-default));transform:rotate(27deg)}:host(.has-value-20to10-negative) .icon{background-color:rgb(var(--color-amber-default));transform:rotate(18deg)}:host(.has-value-10to0-negative) .icon{background-color:rgb(var(--color-amber-default));transform:rotate(9deg)}:host(.has-value-0) .icon{background-color:rgb(var(--color-gray-default));transform:rotate(0deg)}:host(.has-value-0to10-positive) .icon{background-color:rgb(var(--color-yellow-default));transform:rotate(-9deg)}:host(.has-value-10to20-positive) .icon{background-color:rgb(var(--color-yellow-default));transform:rotate(-18deg)}:host(.has-value-20to30-positive) .icon{background-color:rgb(var(--color-grass-default));transform:rotate(-27deg)}:host(.has-value-30to40-positive) .icon{background-color:rgb(var(--color-grass-default));transform:rotate(-36deg)}:host(.has-value-40to50-positive) .icon{background-color:rgb(var(--color-lime-default));transform:rotate(-45deg)}:host(.has-value-50to60-positive) .icon{background-color:rgb(var(--color-lime-default));transform:rotate(-54deg)}:host(.has-value-60to70-positive) .icon{background-color:rgb(var(--color-teal-default));transform:rotate(-63deg)}:host(.has-value-70to80-positive) .icon{background-color:rgb(var(--color-teal-default));transform:rotate(-72deg)}:host(.has-value-80to90-positive) .icon{background-color:rgb(var(--color-teal-dark));transform:rotate(-81deg)}:host(.has-value-90to100-positive) .icon{background-color:rgb(var(--color-teal-dark));transform:rotate(-90deg)}:host(.has-value-100to200-positive) .icon{background-color:rgb(var(--color-teal-dark));transform:rotate(-90deg)}:host(.has-value-200or-larger-positive) .icon{background-color:rgb(var(--color-teal-darker));transform:rotate(-90deg)}:host(.has-value-0) .icon{background-color:rgb(var(--color-gray-default), 0.5);transform:rotate(0deg)}:host(.has-value-0) .icon polyline{color:transparent}:host(.has-value-200or-larger-negative) .icon:after,:host(.has-value-200or-larger-negative) .icon:before,:host(.has-value-200to100-negative) .icon:after,:host(.has-value-200to100-negative) .icon:before,:host(.has-value-100to200-positive) .icon:after,:host(.has-value-100to200-positive) .icon:before,:host(.has-value-200or-larger-positive) .icon:after,:host(.has-value-200or-larger-positive) .icon:before{transition:border-color 0.6s ease;content:"";position:absolute;inset:0;margin:auto;border:1px solid transparent;border-radius:50%}:host(.has-value-200or-larger-negative) .icon:before,:host(.has-value-200to100-negative) .icon:before,:host(.has-value-100to200-positive) .icon:before,:host(.has-value-200or-larger-positive) .icon:before{transform:scale(1.2)}:host(.has-value-200or-larger-negative) .icon:after,:host(.has-value-200to100-negative) .icon:after,:host(.has-value-100to200-positive) .icon:after,:host(.has-value-200or-larger-positive) .icon:after{transform:scale(1.4);opacity:0.4}:host(.has-value-200to100-negative) .icon:before,:host(.has-value-200or-larger-negative) .icon:before{border-color:rgb(var(--color-red-dark))}:host(.has-value-200or-larger-negative) .icon:after{border-color:rgb(var(--color-red-darker))}:host(.has-value-100to200-positive) .icon:before,:host(.has-value-200or-larger-positive) .icon:before{border-color:rgb(var(--color-teal-dark))}:host(.has-value-200or-larger-positive) .icon:after{border-color:rgb(var(--color-teal-darker))}.no-value{transform:translateY(0.5rem)}.growth-unit{padding-left:0.5rem;opacity:0.5}:host(limebb-trend-indicator:focus),:host(limebb-trend-indicator:focus-visible),:host(limebb-trend-indicator:focus-within){--limel-h-l-grid-template-rows-transition-speed:0.46s;--limel-h-l-grid-template-rows:1fr}:host(limebb-trend-indicator){--limel-h-l-grid-template-rows-transition-speed:0.3s;--limel-h-l-grid-template-rows:0fr}:host(limebb-trend-indicator:focus) limel-helper-line,:host(limebb-trend-indicator:focus-visible) limel-helper-line,:host(limebb-trend-indicator:focus-within) limel-helper-line,:host(limebb-trend-indicator:hover) limel-helper-line{will-change:grid-template-rows}`;
6
6
 
7
7
  const TrendIndicator = class {
8
8
  constructor(hostRef) {
@@ -49,7 +49,7 @@ const TrendIndicator = class {
49
49
  this.numValue = this.parseValue(this.value);
50
50
  }
51
51
  render() {
52
- return (h(Host, { key: 'c42f5bbc24bb06b91db44591fe6c6720887e6762', class: this.getContainerClassList() }, h("limel-notched-outline", { key: '6b278dd73d5222723b5fb1476e938849ce92d5f4', 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: '90002d49b80d88f4f62ce3f182cc0d73a9099d7e', slot: "content", tabIndex: 0 }, this.renderVisualization())), this.renderHelperLine(), this.renderTooltip()));
52
+ return (h(Host, { key: 'fbf631c6889091e9efe5790397b26f804d27d93b', class: this.getContainerClassList() }, h("limel-notched-outline", { key: '832d2d338bf86da41b0a19a813f0dc7e3b3eb8c9', 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: 'b3266118df54e2c3a4d7729f0e36d7c7e1fbc13c', slot: "content", tabIndex: 0 }, this.renderVisualization())), this.renderHelperLine(), this.renderTooltip()));
53
53
  }
54
54
  renderVisualization() {
55
55
  if (this.reducePresence && (this.numValue === 0 || !this.hasValue())) {
@@ -1,8 +1,15 @@
1
- import { r as registerInstance, c as createEvent, h } from './index-LEJjPpY0.js';
2
- import { n as nt } from './index.esm-B7wJLMmp.js';
1
+ import { r as registerInstance, c as createEvent, h } from './index-DwHAn7LS.js';
2
+ import { n as nt } from './index.esm-C-L5fkQs.js';
3
3
 
4
- const valueComparisonEditorCss = () => `:host{display:block}.rule{display:grid;gap:0.5rem;grid-template-columns:repeat(auto-fit, minmax(12rem, 1fr))}`;
4
+ const valueComparisonEditorCss = () => `:host{display:block}.rule{display:grid;gap:0.5rem;grid-template-columns:repeat(auto-fit, minmax(12rem, 1fr))}.offset-builder{display:flex;gap:0.5rem;align-items:flex-end;grid-column:1/-1}.offset-builder .offset-count{max-width:6rem}`;
5
5
 
6
+ const TYPE_OPTIONS = [
7
+ { value: 'string', text: 'Text' },
8
+ { value: 'number', text: 'Number' },
9
+ { value: 'date', text: 'Date' },
10
+ { value: 'datetime', text: 'Date & time' },
11
+ { value: 'time', text: 'Time' },
12
+ ];
6
13
  const OPERATOR_OPTIONS = [
7
14
  { value: nt.EQUALS, text: 'Equals' },
8
15
  { value: nt.NOT_EQUALS, text: 'Does not equal' },
@@ -11,6 +18,37 @@ const OPERATOR_OPTIONS = [
11
18
  { value: nt.GREATER, text: 'Greater than' },
12
19
  { value: nt.GREATER_OR_EQUAL, text: 'Greater than or equal to' },
13
20
  ];
21
+ const RELATIVE_OFFSET_KEY = '__relative_offset__';
22
+ const SPECIFIC_KEY = '__specific__';
23
+ const FIXED_TOKEN_OPTIONS = [
24
+ { value: '$now', text: 'Now' },
25
+ { value: '$today', text: 'Today' },
26
+ { value: '$tomorrow', text: 'Tomorrow' },
27
+ { value: '$yesterday', text: 'Yesterday' },
28
+ { value: '$this_week', text: 'This week' },
29
+ { value: '$this_month', text: 'This month' },
30
+ { value: '$this_quarter', text: 'This quarter' },
31
+ { value: '$this_year', text: 'This year' },
32
+ ];
33
+ const FIXED_TOKENS = new Set(FIXED_TOKEN_OPTIONS.map((option) => option.value));
34
+ const DIRECTION_OPTIONS = [
35
+ { value: 'next', text: 'Next' },
36
+ { value: 'previous', text: 'Previous' },
37
+ ];
38
+ const UNIT_OPTIONS = [
39
+ { value: 'day', text: 'days' },
40
+ { value: 'week', text: 'weeks' },
41
+ { value: 'month', text: 'months' },
42
+ { value: 'quarter', text: 'quarters' },
43
+ { value: 'year', text: 'years' },
44
+ ];
45
+ // Same grammar the primitive parses in limeclient.js `relative-dates.ts`.
46
+ const PARAMETERIZED_TOKEN = /^\$(next|previous)_(day|week|month|quarter|year)\((\d+)\)$/;
47
+ const TEMPORAL_TYPES = new Set([
48
+ 'date',
49
+ 'datetime',
50
+ 'time',
51
+ ]);
14
52
  const ValueComparisonEditor = class {
15
53
  constructor(hostRef) {
16
54
  registerInstance(this, hostRef);
@@ -19,54 +57,272 @@ const ValueComparisonEditor = class {
19
57
  * @inheritdoc
20
58
  */
21
59
  this.value = {};
60
+ this.direction = 'next';
61
+ this.unit = 'week';
62
+ this.count = 1;
63
+ this.countInput = '1';
64
+ this.countInvalid = false;
65
+ this.handleTypeChange = (event) => {
66
+ var _a, _b;
67
+ event.stopPropagation();
68
+ this.resetOperandState();
69
+ this.emit(this.value.operator, undefined, (_b = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : 'string');
70
+ };
22
71
  this.handleOperatorChange = (event) => {
23
72
  var _a;
24
73
  event.stopPropagation();
25
74
  const operator = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.value;
26
75
  if (!operator) {
27
- this.change.emit({});
76
+ this.emit(undefined, undefined);
28
77
  return;
29
78
  }
30
- this.change.emit(this.withOperand(operator, this.value.operand));
79
+ this.emit(operator, this.value.operand);
31
80
  };
32
- this.handleOperandChange = (event) => {
81
+ this.handleScalarOperandChange = (event) => {
33
82
  event.stopPropagation();
34
83
  const operator = this.value.operator;
35
84
  if (!operator) {
36
85
  return;
37
86
  }
38
- this.change.emit(this.withOperand(operator, parseOperand(event.detail)));
87
+ this.emit(operator, this.parseScalarOperand(event.detail));
88
+ };
89
+ this.handleOperandKeyChange = (event) => {
90
+ var _a;
91
+ event.stopPropagation();
92
+ const operator = this.value.operator;
93
+ if (!operator) {
94
+ return;
95
+ }
96
+ const key = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.value;
97
+ this.operandKey = key;
98
+ if (key === RELATIVE_OFFSET_KEY) {
99
+ this.emit(operator, this.relativeOffsetToken());
100
+ return;
101
+ }
102
+ if (key === SPECIFIC_KEY) {
103
+ // Default to now so the operand is always a real, rebuildable value.
104
+ if (!this.specificDate) {
105
+ this.specificDate = new Date();
106
+ }
107
+ this.emit(operator, this.formatSpecific(this.specificDate));
108
+ return;
109
+ }
110
+ // A fixed token (or nothing selected).
111
+ this.emit(operator, key || undefined);
39
112
  };
113
+ this.handleDirectionChange = (event) => {
114
+ var _a, _b;
115
+ event.stopPropagation();
116
+ this.direction = (_b = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : 'next';
117
+ this.emitRelativeOffset();
118
+ };
119
+ this.handleUnitChange = (event) => {
120
+ var _a, _b;
121
+ event.stopPropagation();
122
+ this.unit = (_b = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : 'week';
123
+ this.emitRelativeOffset();
124
+ };
125
+ this.handleCountChange = (event) => {
126
+ event.stopPropagation();
127
+ this.countInput = String(event.detail);
128
+ const parsed = Number.parseInt(this.countInput, 10);
129
+ if (Number.isNaN(parsed) || parsed < 1) {
130
+ // Keep showing what the author typed, but flag it instead of
131
+ // emitting an operand that disagrees with the field.
132
+ this.countInvalid = true;
133
+ return;
134
+ }
135
+ this.countInvalid = false;
136
+ this.count = parsed;
137
+ this.emitRelativeOffset();
138
+ };
139
+ this.handleSpecificDateChange = (event) => {
140
+ event.stopPropagation();
141
+ const operator = this.value.operator;
142
+ if (!operator) {
143
+ return;
144
+ }
145
+ const date = event.detail instanceof Date ? event.detail : undefined;
146
+ this.specificDate = date;
147
+ this.emit(operator, date ? this.formatSpecific(date) : undefined);
148
+ };
149
+ }
150
+ componentWillLoad() {
151
+ this.syncFromValue(this.value);
152
+ }
153
+ onValueChange(value) {
154
+ this.syncFromValue(value);
155
+ }
156
+ get valueType() {
157
+ var _a;
158
+ return (_a = this.value.valueType) !== null && _a !== void 0 ? _a : 'string';
40
159
  }
41
160
  render() {
42
- const selected = OPERATOR_OPTIONS.find((option) => option.value === this.value.operator);
43
- return (h("div", { key: 'e3589c48dc94a8a191e46adcd19947c825f12562', class: "rule" }, h("limel-select", { key: '8cb50df76bd8adb26d4bbab185258f1d594f71d8', label: "When the value", options: OPERATOR_OPTIONS, value: selected, onChange: this.handleOperatorChange }), this.renderOperandInput()));
161
+ const selectedType = TYPE_OPTIONS.find((option) => option.value === this.valueType);
162
+ const selectedOperator = OPERATOR_OPTIONS.find((option) => option.value === this.value.operator);
163
+ return (h("div", { key: '9c6e6b6f160fb05bd4a242a207d16b8420ff41df', class: "rule" }, h("limel-select", { key: '703815442cf66522e406223da8ec738eca3d17ff', class: "type-select", label: "Compare as", options: TYPE_OPTIONS, value: selectedType, onChange: this.handleTypeChange }), h("limel-select", { key: '371b67efd26c2519ad2dc2a826a8a28d4b17a659', class: "operator-select", label: "When the value", options: OPERATOR_OPTIONS, value: selectedOperator, onChange: this.handleOperatorChange }), this.renderOperand()));
44
164
  }
45
- renderOperandInput() {
165
+ renderOperand() {
46
166
  if (!this.value.operator) {
47
167
  return null;
48
168
  }
49
- return (h("limel-input-field", { label: "Compared with", value: this.value.operand === undefined
169
+ if (TEMPORAL_TYPES.has(this.valueType)) {
170
+ return this.renderTemporalOperand();
171
+ }
172
+ return this.renderScalarInput();
173
+ }
174
+ renderScalarInput() {
175
+ return (h("limel-input-field", { class: "operand-input", label: "Compared with", type: this.valueType === 'number' ? 'number' : 'text', value: this.value.operand === undefined
50
176
  ? ''
51
- : String(this.value.operand), onChange: this.handleOperandChange }));
177
+ : String(this.value.operand), onChange: this.handleScalarOperandChange }));
52
178
  }
53
- withOperand(operator, operand) {
54
- if (operand === undefined) {
55
- return { operator };
179
+ renderTemporalOperand() {
180
+ const options = this.operandOptions();
181
+ const selected = options.find((option) => option.value === this.operandKey);
182
+ return [
183
+ h("limel-select", { key: "operand-select", class: "operand-select", label: "Compared with", options: options, value: selected, onChange: this.handleOperandKeyChange }),
184
+ this.renderTemporalSubControl(),
185
+ ];
186
+ }
187
+ operandOptions() {
188
+ if (this.valueType === 'time') {
189
+ return [
190
+ { value: '$now', text: 'Now' },
191
+ { value: SPECIFIC_KEY, text: 'Specific time…' },
192
+ ];
56
193
  }
57
- return {
58
- operator,
59
- operand,
60
- valueType: typeof operand === 'number' ? 'number' : 'string',
61
- };
194
+ const specificText = this.valueType === 'datetime'
195
+ ? 'Specific date & time…'
196
+ : 'Specific date…';
197
+ // For a pure date `$now` resolves to the same value as `$today`, so
198
+ // only datetime (where the time component matters) offers it.
199
+ const fixedTokens = this.valueType === 'date'
200
+ ? FIXED_TOKEN_OPTIONS.filter((option) => option.value !== '$now')
201
+ : FIXED_TOKEN_OPTIONS;
202
+ return [
203
+ ...fixedTokens,
204
+ { value: RELATIVE_OFFSET_KEY, text: 'Relative offset…' },
205
+ { value: SPECIFIC_KEY, text: specificText },
206
+ ];
62
207
  }
63
- };
64
- function parseOperand(raw) {
65
- if (raw.trim() === '') {
66
- return undefined;
208
+ renderTemporalSubControl() {
209
+ if (this.operandKey === RELATIVE_OFFSET_KEY) {
210
+ return this.renderOffsetBuilder();
211
+ }
212
+ if (this.operandKey === SPECIFIC_KEY) {
213
+ return this.renderDatePicker();
214
+ }
215
+ return null;
216
+ }
217
+ renderOffsetBuilder() {
218
+ const selectedDirection = DIRECTION_OPTIONS.find((option) => option.value === this.direction);
219
+ const selectedUnit = UNIT_OPTIONS.find((option) => option.value === this.unit);
220
+ return (h("div", { key: "offset-builder", class: "offset-builder" }, h("limel-select", { class: "offset-direction", options: DIRECTION_OPTIONS, value: selectedDirection, onChange: this.handleDirectionChange }), h("limel-input-field", { class: "offset-count", label: "Amount", type: "number", required: true, invalid: this.countInvalid, value: this.countInput, onChange: this.handleCountChange }), h("limel-select", { class: "offset-unit", options: UNIT_OPTIONS, value: selectedUnit, onChange: this.handleUnitChange })));
67
221
  }
68
- const parsed = Number(raw);
69
- return Number.isNaN(parsed) ? raw : parsed;
222
+ renderDatePicker() {
223
+ return (h("limel-date-picker", { key: "specific-picker", class: "operand-picker", label: "Compared with", type: this.valueType, value: this.specificDate, onChange: this.handleSpecificDateChange }));
224
+ }
225
+ emitRelativeOffset() {
226
+ const operator = this.value.operator;
227
+ if (!operator) {
228
+ return;
229
+ }
230
+ this.emit(operator, this.relativeOffsetToken());
231
+ }
232
+ relativeOffsetToken() {
233
+ return `$${this.direction}_${this.unit}(${this.count})`;
234
+ }
235
+ parseScalarOperand(raw) {
236
+ const text = String(raw);
237
+ if (text.trim() === '') {
238
+ return undefined;
239
+ }
240
+ if (this.valueType !== 'number') {
241
+ return text;
242
+ }
243
+ const parsed = Number(text);
244
+ return Number.isNaN(parsed) ? undefined : parsed;
245
+ }
246
+ formatSpecific(date) {
247
+ if (this.valueType === 'datetime') {
248
+ return date.toISOString();
249
+ }
250
+ if (this.valueType === 'time') {
251
+ return `${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`;
252
+ }
253
+ return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;
254
+ }
255
+ emit(operator, operand, valueType = this.valueType) {
256
+ // Always carry valueType so the type selection round-trips through
257
+ // value even when there's no operand yet; the primitive ignores it
258
+ // until an operand is present.
259
+ const next = { valueType };
260
+ if (operator) {
261
+ next.operator = operator;
262
+ }
263
+ if (operand !== undefined) {
264
+ next.operand = operand;
265
+ }
266
+ this.change.emit(next);
267
+ }
268
+ resetOperandState() {
269
+ this.operandKey = undefined;
270
+ this.specificDate = undefined;
271
+ this.direction = 'next';
272
+ this.unit = 'week';
273
+ this.count = 1;
274
+ this.countInput = '1';
275
+ this.countInvalid = false;
276
+ }
277
+ syncFromValue(value) {
278
+ const operand = value === null || value === void 0 ? void 0 : value.operand;
279
+ if (typeof operand !== 'string' || operand === '') {
280
+ // No operand: keep the sub-control the author has open.
281
+ return;
282
+ }
283
+ if (!TEMPORAL_TYPES.has(this.valueType)) {
284
+ this.operandKey = undefined;
285
+ return;
286
+ }
287
+ const match = PARAMETERIZED_TOKEN.exec(operand);
288
+ if (match) {
289
+ const [, direction, unit, count] = match;
290
+ this.operandKey = RELATIVE_OFFSET_KEY;
291
+ this.direction = direction;
292
+ this.unit = unit;
293
+ this.count = Number(count);
294
+ this.countInput = count;
295
+ this.countInvalid = false;
296
+ return;
297
+ }
298
+ if (FIXED_TOKENS.has(operand)) {
299
+ this.operandKey = operand;
300
+ return;
301
+ }
302
+ this.operandKey = SPECIFIC_KEY;
303
+ this.specificDate = this.parseSpecific(operand);
304
+ }
305
+ parseSpecific(operand) {
306
+ const date = new Date(this.specificDateText(operand));
307
+ return Number.isNaN(date.getTime()) ? undefined : date;
308
+ }
309
+ specificDateText(operand) {
310
+ if (this.valueType === 'time') {
311
+ return `1970-01-01T${operand}`;
312
+ }
313
+ if (this.valueType === 'date') {
314
+ return `${operand}T00:00:00`;
315
+ }
316
+ return operand;
317
+ }
318
+ static get watchers() { return {
319
+ "value": [{
320
+ "onValueChange": 0
321
+ }]
322
+ }; }
323
+ };
324
+ function pad(value) {
325
+ return String(value).padStart(2, '0');
70
326
  }
71
327
  ValueComparisonEditor.style = valueComparisonEditorCss();
72
328
 
@@ -1,4 +1,4 @@
1
- import { i, a } from './index.esm-B7wJLMmp.js';
1
+ import { i, a } from './index.esm-C-L5fkQs.js';
2
2
 
3
3
  /**
4
4
  * Get the color for a limetype from its UI configuration