@lowdefy/docs-content 0.0.0-experimental-20260928120643 → 6.1.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 (226) hide show
  1. package/README.md +0 -1
  2. package/content/actions/link.md +0 -17
  3. package/content/actions/login.md +5 -23
  4. package/content/actions/logout.md +5 -5
  5. package/content/actions/pdfmake.md +2 -2
  6. package/content/actions/setdarkmode.md +2 -2
  7. package/content/agents/agent-properties.md +2 -4
  8. package/content/agents/agentchat.md +6 -21
  9. package/content/agents/agentconversations.md +2 -2
  10. package/content/concepts/ai-agent-docs.md +101 -313
  11. package/content/concepts/cli.md +3 -34
  12. package/content/concepts/connections-and-requests.md +0 -402
  13. package/content/concepts/custom-html.md +0 -40
  14. package/content/concepts/custom-styling.md +5 -50
  15. package/content/concepts/events-and-actions.md +2 -64
  16. package/content/concepts/i18n.md +2 -7
  17. package/content/concepts/keyboard-shortcuts.md +2 -2
  18. package/content/concepts/layout-overview.md +1 -1
  19. package/content/concepts/logger.md +0 -81
  20. package/content/concepts/lowdefy-schema.md +1 -4
  21. package/content/concepts/menus.md +7 -7
  22. package/content/concepts/module-authoring.md +2 -2
  23. package/content/connections/anthropic.md +2 -162
  24. package/content/connections/awss3.md +0 -54
  25. package/content/connections/google.md +2 -162
  26. package/content/connections/mongodb.md +3 -121
  27. package/content/connections/openai-connection.md +2 -162
  28. package/content/container-blocks/affix.md +7 -47
  29. package/content/container-blocks/alert.md +24 -76
  30. package/content/container-blocks/badge.md +24 -100
  31. package/content/container-blocks/box.md +9 -9
  32. package/content/container-blocks/card.md +25 -80
  33. package/content/container-blocks/carousel.md +7 -60
  34. package/content/container-blocks/collapse.md +9 -87
  35. package/content/container-blocks/configprovider.md +13 -35
  36. package/content/container-blocks/confirmmodal.md +23 -69
  37. package/content/container-blocks/content.md +98 -62
  38. package/content/container-blocks/descriptions.md +4 -45
  39. package/content/container-blocks/drawer.md +28 -92
  40. package/content/container-blocks/dropdownmenu.md +31 -119
  41. package/content/container-blocks/flex.md +62 -40
  42. package/content/container-blocks/footer.md +11 -15
  43. package/content/container-blocks/googlemapsheatmap.md +1 -1
  44. package/content/container-blocks/googlemapsscript.md +2 -2
  45. package/content/container-blocks/header.md +36 -71
  46. package/content/container-blocks/label.md +7 -34
  47. package/content/container-blocks/layout.md +34 -52
  48. package/content/container-blocks/masonry.md +71 -17
  49. package/content/container-blocks/mobilemenu.md +88 -131
  50. package/content/container-blocks/modal.md +26 -114
  51. package/content/container-blocks/pageheadermenu.md +31 -81
  52. package/content/container-blocks/pagesidebarlayout.md +26 -169
  53. package/content/container-blocks/pagesidermenu.md +42 -95
  54. package/content/container-blocks/popover.md +31 -34
  55. package/content/container-blocks/result.md +21 -32
  56. package/content/container-blocks/sider.md +122 -85
  57. package/content/container-blocks/span.md +7 -7
  58. package/content/container-blocks/spinner.md +3 -3
  59. package/content/container-blocks/splitter.md +68 -150
  60. package/content/container-blocks/tabs.md +12 -64
  61. package/content/container-blocks/tooltip.md +46 -22
  62. package/content/container-blocks/watermark.md +4 -22
  63. package/content/controls/reject.md +2 -4
  64. package/content/controls/throw.md +0 -1
  65. package/content/controls/try.md +2 -3
  66. package/content/deployment/deployment-environments.md +6 -8
  67. package/content/deployment/docker.md +7 -22
  68. package/content/deployment/node-server.md +0 -4
  69. package/content/deployment/vercel.md +6 -13
  70. package/content/display-blocks/aggrid.md +11 -26
  71. package/content/display-blocks/anchor.md +15 -15
  72. package/content/display-blocks/avatar.md +37 -57
  73. package/content/display-blocks/breadcrumb.md +21 -70
  74. package/content/display-blocks/button.md +18 -92
  75. package/content/display-blocks/calendar.md +0 -12
  76. package/content/display-blocks/dangeroushtml.md +1 -1
  77. package/content/display-blocks/difflist.md +1 -1
  78. package/content/display-blocks/difftimeline.md +1 -1
  79. package/content/display-blocks/divider.md +3 -64
  80. package/content/display-blocks/dropdownbutton.md +28 -79
  81. package/content/display-blocks/echart.md +1 -35
  82. package/content/display-blocks/floatbutton.md +42 -129
  83. package/content/display-blocks/html.md +1 -61
  84. package/content/display-blocks/icon.md +67 -250
  85. package/content/display-blocks/menu.md +73 -145
  86. package/content/display-blocks/message.md +124 -38
  87. package/content/display-blocks/notification.md +222 -94
  88. package/content/display-blocks/paragraph.md +9 -59
  89. package/content/display-blocks/progress.md +17 -96
  90. package/content/display-blocks/qrcode.md +4 -19
  91. package/content/display-blocks/s3download.md +1 -1
  92. package/content/display-blocks/search.md +7 -17
  93. package/content/display-blocks/skeletonbutton.md +0 -1
  94. package/content/display-blocks/skeletoninput.md +0 -1
  95. package/content/display-blocks/statistic.md +17 -75
  96. package/content/display-blocks/steps.md +25 -58
  97. package/content/display-blocks/tag.md +17 -102
  98. package/content/display-blocks/title.md +11 -50
  99. package/content/display-blocks/tour.md +23 -33
  100. package/content/input-blocks/autocomplete.md +9 -81
  101. package/content/input-blocks/buttonselector.md +8 -45
  102. package/content/input-blocks/checkboxselector.md +7 -97
  103. package/content/input-blocks/checkboxswitch.md +3 -33
  104. package/content/input-blocks/colorselector.md +14 -63
  105. package/content/input-blocks/daterangeselector.md +45 -165
  106. package/content/input-blocks/dateselector.md +41 -139
  107. package/content/input-blocks/datetimeselector.md +49 -158
  108. package/content/input-blocks/inputgallery.md +3 -3
  109. package/content/input-blocks/monthselector.md +52 -120
  110. package/content/input-blocks/multipleselector.md +39 -150
  111. package/content/input-blocks/numberinput.md +12 -98
  112. package/content/input-blocks/pagination.md +14 -70
  113. package/content/input-blocks/paragraphinput.md +37 -51
  114. package/content/input-blocks/passwordinput.md +6 -60
  115. package/content/input-blocks/phonenumberinput.md +26 -59
  116. package/content/input-blocks/radioselector.md +7 -83
  117. package/content/input-blocks/ratingslider.md +26 -57
  118. package/content/input-blocks/s3uploadbutton.md +24 -24
  119. package/content/input-blocks/s3uploaddragger.md +3 -3
  120. package/content/input-blocks/s3uploadphoto.md +5 -5
  121. package/content/input-blocks/segmentedselector.md +32 -72
  122. package/content/input-blocks/selector.md +21 -109
  123. package/content/input-blocks/switch.md +17 -65
  124. package/content/input-blocks/textarea.md +3 -32
  125. package/content/input-blocks/textinput.md +28 -69
  126. package/content/input-blocks/tiptapmentioninput.md +1 -1
  127. package/content/input-blocks/titleinput.md +12 -39
  128. package/content/input-blocks/treeinput.md +25 -49
  129. package/content/input-blocks/treemultipleselector.md +10 -127
  130. package/content/input-blocks/treeselector.md +9 -97
  131. package/content/input-blocks/upload.md +15 -64
  132. package/content/input-blocks/uploaddragger.md +1 -17
  133. package/content/input-blocks/uploadphoto.md +1 -18
  134. package/content/input-blocks/weekselector.md +55 -120
  135. package/content/list-blocks/controlledlist.md +15 -24
  136. package/content/list-blocks/list.md +11 -11
  137. package/content/list-blocks/masonrylist.md +34 -7
  138. package/content/migration/upgrade-guide.md +0 -1
  139. package/content/operators/_app.md +1 -2
  140. package/content/operators/_error.md +1 -23
  141. package/content/operators/_get.md +6 -6
  142. package/content/operators/_operator.md +3 -17
  143. package/content/operators/_ref.md +0 -258
  144. package/content/operators/_type.md +3 -14
  145. package/content/operators/_user.md +3 -3
  146. package/content/other/introduction.md +1 -1
  147. package/content/plugins/plugins-dev.md +0 -66
  148. package/content/plugins/plugins-introduction.md +1 -27
  149. package/content/testing/e2e-configuration.md +1 -8
  150. package/content/testing/e2e-getting-started.md +1 -1
  151. package/content/testing/e2e-introduction.md +1 -1
  152. package/content/tutorial/tutorial-actions-operators.md +2 -2
  153. package/content/tutorial/tutorial-add-blocks.md +2 -2
  154. package/content/tutorial/tutorial-create-page.md +2 -48
  155. package/content/tutorial/tutorial-display-data-page.md +3 -3
  156. package/content/tutorial/tutorial-requests-sql.md +0 -153
  157. package/content/tutorial/tutorial-start.md +1 -66
  158. package/content/user-authentication/login-and-logout.md +8 -158
  159. package/content/user-authentication/users-introduction.md +0 -8
  160. package/index.json +2 -6065
  161. package/package.json +1 -7
  162. package/scripts/extractAgentDocs.js +4 -36
  163. package/content/actions/emailotpsend.md +0 -58
  164. package/content/actions/emailotpverify.md +0 -77
  165. package/content/actions/getlocalstorage.md +0 -41
  166. package/content/actions/magiclinkverify.md +0 -113
  167. package/content/actions/posthogalias.md +0 -29
  168. package/content/actions/posthogcapture.md +0 -49
  169. package/content/actions/posthogcapturepageleave.md +0 -38
  170. package/content/actions/posthogfeatureflag.md +0 -50
  171. package/content/actions/posthoggroup.md +0 -37
  172. package/content/actions/posthogidentify.md +0 -54
  173. package/content/actions/posthoginit.md +0 -66
  174. package/content/actions/posthogoptin.md +0 -29
  175. package/content/actions/posthogoptout.md +0 -29
  176. package/content/actions/posthogpageview.md +0 -37
  177. package/content/actions/posthogreloadfeatureflags.md +0 -47
  178. package/content/actions/posthogreset.md +0 -28
  179. package/content/actions/posthogsetpersonproperties.md +0 -36
  180. package/content/actions/removelocalstorage.md +0 -26
  181. package/content/actions/setlocalstorage.md +0 -32
  182. package/content/adapter-reference/mongodbauthadapter.md +0 -46
  183. package/content/agents/agents-introduction.md +0 -107
  184. package/content/callback-reference/auth0logoutcallback.md +0 -54
  185. package/content/concepts/blocks.md +0 -150
  186. package/content/concepts/dynamic-page-content.md +0 -304
  187. package/content/concepts/html-attributes.md +0 -285
  188. package/content/concepts/lowdefy-api.md +0 -1110
  189. package/content/concepts/notifications.md +0 -155
  190. package/content/concepts/page-and-app-state.md +0 -244
  191. package/content/concepts/theming.md +0 -582
  192. package/content/connections/aigateway.md +0 -368
  193. package/content/connections/axioshttp.md +0 -181
  194. package/content/controls/while.md +0 -46
  195. package/content/display-blocks/clickablehtml.md +0 -239
  196. package/content/display-blocks/eventlog.md +0 -363
  197. package/content/display-blocks/pollingtimer.md +0 -263
  198. package/content/input-blocks/captcha.md +0 -40
  199. package/content/input-blocks/placesautocomplete.md +0 -319
  200. package/content/input-blocks/tagmultipleselector.md +0 -114
  201. package/content/input-blocks/tagselector.md +0 -114
  202. package/content/migration/auth-upgrade.md +0 -327
  203. package/content/migration/v3-to-v4.md +0 -417
  204. package/content/migration/v6-to-v7.md +0 -222
  205. package/content/operators/_cron.md +0 -292
  206. package/content/other/mongodbadapter.md +0 -3
  207. package/content/plugins/plugins-icon-sets.md +0 -267
  208. package/content/plugins/posthog.md +0 -275
  209. package/content/provider-reference/auth-js-providers.md +0 -107
  210. package/content/provider-reference/openidconnectprovider.md +0 -44
  211. package/content/testing/config-tests.md +0 -278
  212. package/content/tutorial/tutorial-requests-api.md +0 -155
  213. package/content/user-authentication/auth-configuration.md +0 -266
  214. package/content/user-authentication/auth-steps.md +0 -138
  215. package/content/user-authentication/mcp-oauth.md +0 -292
  216. package/content/user-authentication/organizations.md +0 -221
  217. package/content/user-authentication/protected-pages-apis.md +0 -97
  218. package/content/user-authentication/roles.md +0 -49
  219. package/content/user-authentication/two-factor.md +0 -229
  220. package/content/user-authentication/user-object.md +0 -58
  221. package/content/websockets/websocket-publish.md +0 -108
  222. package/content/websockets/websocket-subscriptions.md +0 -100
  223. package/content/websockets/websockets-introduction.md +0 -97
  224. package/hazards.json +0 -44
  225. package/scripts/hashDocSources.js +0 -38
  226. package/scripts/recordSourceHashes.js +0 -88
@@ -1,239 +0,0 @@
1
- # ClickableHtml
2
-
3
- Render raw HTML content safely, and fire a named event when an element carrying a `data-event` attribute is clicked: `data-event="onEditClick"` fires the block's `onEditClick` event, so every clickable target in one block of markup gets its own action chain without a block per button. The event object holds the element's other `data-*` attributes with snake_case keys (`data-record-id` becomes `record_id`). Only the events listed in `dataEvents` fire, and each can require a confirmation. HTML built from user or request data must escape that data, so it cannot add `data-event` elements of its own: `_nunjucks` escapes `{{ values }}` unless they are marked `safe`, while `_string.concat` and `_js` do not.
4
-
5
- ```yaml
6
- - id: buttons_basic
7
- type: ClickableHtml
8
- properties:
9
- dataEvents:
10
- - onSmallClick
11
- - onLargeClick
12
- html: '<p>Pick a size: <button data-event="onSmallClick">Small</button> <button
13
- data-event="onLargeClick">Large</button></p>'
14
- events:
15
- onSmallClick:
16
- - id: set_small
17
- type: SetState
18
- params:
19
- buttons_basic_selected: small
20
- onLargeClick:
21
- - id: set_large
22
- type: SetState
23
- params:
24
- buttons_basic_selected: large
25
- - id: buttons_basic_result
26
- type: Html
27
- properties:
28
- html:
29
- _string.concat:
30
- - "<p>State: <code>"
31
- - _state:
32
- key: buttons_basic_selected
33
- default: nothing yet
34
- - </code></p>
35
- ```
36
-
37
- ```yaml
38
- - id: list_rows
39
- type: ClickableHtml
40
- properties:
41
- dataEvents:
42
- - onRowClick
43
- html: '<ul style="list-style: none; padding: 0; margin: 0;"><li
44
- data-event="onRowClick" data-record-id="rec_1" style="padding: 8px;
45
- cursor: pointer; border-bottom: 1px solid var(--ant-color-border);">First
46
- record</li><li data-event="onRowClick" data-record-id="rec_2"
47
- style="padding: 8px; cursor: pointer; border-bottom: 1px solid
48
- var(--ant-color-border);">Second record</li><li data-event="onRowClick"
49
- data-record-id="rec_3" style="padding: 8px; cursor: pointer;">Third
50
- record</li></ul>'
51
- events:
52
- onRowClick:
53
- - id: set_clicked
54
- type: SetState
55
- params:
56
- list_rows_clicked:
57
- _event: true
58
- - id: list_rows_result
59
- type: Html
60
- properties:
61
- html:
62
- _string.concat:
63
- - "<p>Last event: <code>"
64
- - _json.stringify:
65
- _state:
66
- key: list_rows_clicked
67
- default: {}
68
- - </code></p>
69
- ```
70
-
71
- ```yaml
72
- - id: mixed_content
73
- type: ClickableHtml
74
- properties:
75
- dataEvents:
76
- - onCommentClick
77
- html: <p>This <a href="https://lowdefy.com" target="_blank">link</a> navigates
78
- normally, but <a href="#" data-event="onCommentClick"
79
- data-thread-id="t_9">this one</a> fires onCommentClick instead.</p>
80
- events:
81
- onCommentClick:
82
- - id: set_mixed
83
- type: SetState
84
- params:
85
- mixed_content_thread:
86
- _event: thread_id
87
- - id: mixed_content_result
88
- type: Html
89
- properties:
90
- html:
91
- _string.concat:
92
- - "<p>Thread: <code>"
93
- - _state:
94
- key: mixed_content_thread
95
- default: none
96
- - </code></p>
97
- ```
98
-
99
- ```yaml
100
- - id: style_card
101
- type: ClickableHtml
102
- style:
103
- .element:
104
- padding: 16
105
- borderRadius: 8
106
- border: 1px solid var(--ant-color-border)
107
- background: var(--ant-color-bg-container)
108
- properties:
109
- dataEvents:
110
- - onEditClick
111
- - onRemoveClick
112
- html: '<h4 style="margin: 0 0 8px 0;">Card</h4><p style="margin: 0 0 8px 0;
113
- color: var(--ant-color-text-secondary);">Yours to change or remove until
114
- tomorrow.</p><button data-event="onEditClick">Edit</button> <button
115
- data-event="onRemoveClick">Remove</button>'
116
- events:
117
- onEditClick:
118
- - id: set_card_edit
119
- type: SetState
120
- params:
121
- style_card_action: edit
122
- onRemoveClick:
123
- - id: set_card_remove
124
- type: SetState
125
- params:
126
- style_card_action: remove
127
- ```
128
-
129
- ```yaml
130
- - id: row_actions
131
- type: ClickableHtml
132
- properties:
133
- dataEvents:
134
- - onEdit
135
- - onDuplicate
136
- - name: onDelete
137
- confirm: Delete invoice INV-042?
138
- html: '<p>Invoice INV-042 <i data-icon="edit" data-event="onEdit" data-id="42"
139
- data-tooltip="Edit" style="cursor: pointer"></i> <span data-popover="more"
140
- style="cursor: pointer"><i data-icon="more-vertical"></i></span></p><div
141
- data-popover-content="more" hidden><p data-event="onDuplicate"
142
- data-id="42" style="cursor: pointer; margin: 0 0 8px"><i
143
- data-icon="copy"></i> Duplicate</p><p data-event="onDelete" data-id="42"
144
- style="cursor: pointer; margin: 0; color: var(--ant-color-error)"><i
145
- data-icon="delete"></i> Delete</p></div>'
146
- events:
147
- onEdit:
148
- - id: set_edit
149
- type: SetState
150
- params:
151
- row_actions_last:
152
- _string.concat:
153
- - "edit "
154
- - _event: id
155
- onDuplicate:
156
- - id: set_duplicate
157
- type: SetState
158
- params:
159
- row_actions_last:
160
- _string.concat:
161
- - "duplicate "
162
- - _event: id
163
- onDelete:
164
- - id: set_delete
165
- type: SetState
166
- params:
167
- row_actions_last:
168
- _string.concat:
169
- - "delete "
170
- - _event: id
171
- - id: row_actions_result
172
- type: Html
173
- properties:
174
- html:
175
- _string.concat:
176
- - "<p>Last action: <code>"
177
- - _state:
178
- key: row_actions_last
179
- default: none yet
180
- - </code></p>
181
- ```
182
-
183
- ```yaml
184
- - id: confirm_actions
185
- type: ClickableHtml
186
- properties:
187
- dataEvents:
188
- - name: onDelete
189
- confirm: true
190
- - onArchive
191
- html: '<p>INV-2026-0042 <i data-icon="delete" data-event="onDelete" data-id="42"
192
- data-tooltip="Delete" data-confirm="Delete invoice INV-2026-0042?"
193
- style="cursor: pointer; color: var(--ant-color-error)"></i> <span
194
- data-event="onArchive" data-id="42" data-confirm style="cursor: pointer;
195
- color: var(--ant-color-primary)">Archive</span></p>'
196
- events:
197
- onDelete:
198
- - id: deleted
199
- type: SetState
200
- params:
201
- confirm_last:
202
- _string.concat:
203
- - "deleted "
204
- - _event: id
205
- onArchive:
206
- - id: archived
207
- type: SetState
208
- params:
209
- confirm_last:
210
- _string.concat:
211
- - "archived "
212
- - _event: id
213
- - id: confirm_result
214
- type: Html
215
- properties:
216
- html:
217
- _string.concat:
218
- - "<p>Last action: <code>"
219
- - _state:
220
- key: confirm_last
221
- default: none yet
222
- - </code></p>
223
- ```
224
-
225
- | Property | Type | Default | Description |
226
- | --- | --- | --- | --- |
227
- | `dataEvents` | array | - | The events the HTML may fire. A data-event whose name is not listed does nothing, and a click on it logs a console warning; with no dataEvents the HTML fires no events. List an event by name, or as { name, confirm } to make every click on it ask first. |
228
- | `html` | string | - | Content to be rendered as Html. An element with a data-event attribute fires the event it names when clicked (data-event="onEditClick" fires events.onEditClick), if dataEvents lists it, and its default browser action is prevented. The event object holds the element's other data-* attributes with snake_case keys, so data-event="onEditClick" data-record-id="42" gives { record_id: "42" }. Targets that are not links or buttons become keyboard focusable, and Enter or Space clicks them. A data-event inside popover content fires too, then closes the popover. A link with data-event fires the event and does not navigate. data-confirm="Delete this row?" on a data-event element asks first: only OK fires the event (bare data-confirm asks "Are you sure?"). Escape user and request data in the HTML, so it cannot add data-event elements of its own. All Html block attributes work too: data-icon, data-tooltip, data-popover, data-page-id links, data-new-tab, data-tag, data-status, data-time, data-format, data-avatar, data-copy, data-truncate and data-tone. See the HTML attributes docs page. |
229
-
230
- | Event | Event Data | Description |
231
- | --- | --- | --- |
232
- | `onTextSelection` | \- | Trigger action when text is selected and pass selected text to the event object. |
233
-
234
- | Key | Target |
235
- | --- | --- |
236
- | `/block` | Outer block wrapper (always available). |
237
- | `/element` | The Html element. |
238
-
239
- No slots defined.
@@ -1,363 +0,0 @@
1
- # EventLog
2
-
3
- A dense, virtualised log viewer for any array of records - audit trails, job runs, deploys, webhook deliveries or application events. Rows are searchable, filtered by severity and expandable to a detail pane with the actor, a rich detail body and a flattened context key-value table that can be copied as JSON.
4
-
5
- The block does not assume a record shape: the `fields` property maps dot paths onto each record, and `eventTypeConfig` maps an event type onto its label, icon, colour and severity. Severity is explicit - it is read from the `level` field of a record, or from the `level` of its type config, and is one of `error`, `warning`, `success` or `info` (default `info`).
6
-
7
- Large logs can be pushed straight into the block with the `setData` method using a CallMethod action, so the records never round-trip through the operator pipeline. Every string rendered by the block is set on the `text` property, so the log can be translated.
8
-
9
- ## Setting records with `setData`
10
-
11
- Call `setData` from the block's `onMount` event, after a Request action has loaded the
12
- records. The page `onInit` event runs before the block mounts, so the method does not exist
13
- yet. The block falls back to `properties.data` until `setData` is called. See
14
- [Selectors](/selectors) for the same pattern on selector blocks.
15
-
16
- ```yaml
17
- id: audit_log
18
- type: EventLog
19
- properties:
20
- height: 480
21
- events:
22
- onMount:
23
- - id: load_events
24
- type: Request
25
- params: get_events
26
- - id: fill
27
- type: CallMethod
28
- params:
29
- blockId: audit_log
30
- method: setData
31
- args:
32
- - _request: get_events
33
- ```
34
-
35
- ```yaml
36
- - id: basic_event_log
37
- type: EventLog
38
- properties:
39
- height: 320
40
- fields:
41
- id: id
42
- time: timestamp
43
- message: message
44
- data:
45
- - id: "1"
46
- timestamp: 2026-03-04T09:12:04.000Z
47
- type: deploy_failed
48
- level: error
49
- message: Deploy <b>web-api</b> failed on step build.
50
- description: The build step exited with code 1 after 42 seconds.
51
- metadata:
52
- commit: 9f2c1ab
53
- branch: main
54
- duration_ms: 42311
55
- error: Module not found - ./config/runtime.js
56
- - id: "2"
57
- timestamp: 2026-03-04T09:10:44.000Z
58
- type: deploy_started
59
- level: info
60
- message: Deploy <b>web-api</b> started.
61
- metadata:
62
- commit: 9f2c1ab
63
- branch: main
64
- - id: "3"
65
- timestamp: 2026-03-04T08:58:00.000Z
66
- type: quota_warning
67
- level: warning
68
- message: Request quota at 82% of the monthly limit.
69
- metadata:
70
- used: 820000
71
- limit: 1000000
72
- - id: "4"
73
- timestamp: 2026-03-04T08:30:12.000Z
74
- type: deploy_succeeded
75
- level: success
76
- message: Deploy <b>web-app</b> succeeded.
77
- metadata:
78
- commit: 3ab77de
79
- branch: main
80
- duration_ms: 51200
81
- ```
82
-
83
- ```yaml
84
- - id: typed_event_log
85
- type: EventLog
86
- properties:
87
- height: 280
88
- fields:
89
- id: id
90
- time: timestamp
91
- message: message
92
- eventTypeConfig:
93
- user_invited:
94
- title: Invited
95
- icon: UserPlus
96
- color: "#1677ff"
97
- level: info
98
- user_removed:
99
- title: Removed
100
- icon: UserMinus
101
- color: "#ff4d4f"
102
- level: error
103
- role_changed:
104
- title: Role changed
105
- icon: Shield
106
- color: "#faad14"
107
- level: warning
108
- data:
109
- - id: "1"
110
- timestamp: 2026-03-04T11:02:00.000Z
111
- type: user_removed
112
- message: Removed <b>dana@example.com</b> from the workspace.
113
- created:
114
- user:
115
- name: Ada Lowe
116
- metadata:
117
- reason: Offboarding
118
- - id: "2"
119
- timestamp: 2026-03-04T10:45:00.000Z
120
- type: role_changed
121
- message: Changed the role of <b>sam@example.com</b> to admin.
122
- created:
123
- user:
124
- name: Ada Lowe
125
- metadata:
126
- from: member
127
- to: admin
128
- - id: "3"
129
- timestamp: 2026-03-04T10:02:00.000Z
130
- type: user_invited
131
- message: Invited <b>sam@example.com</b>.
132
- metadata:
133
- invited_by: ada@example.com
134
- ```
135
-
136
- ```yaml
137
- - id: mapped_event_log
138
- type: EventLog
139
- properties:
140
- height: 240
141
- fields:
142
- id: request_id
143
- time: at
144
- type: kind
145
- level: severity
146
- message: summary
147
- detail: body
148
- actor: operator
149
- context: payload
150
- data:
151
- - request_id: req_9001
152
- at: 2026-03-04T12:00:00.000Z
153
- kind: payment
154
- severity: error
155
- summary: Charge declined for invoice INV-2201.
156
- body: The card issuer returned <i>insufficient funds</i>.
157
- operator: Billing job
158
- payload:
159
- invoice: INV-2201
160
- amount: 149.5
161
- currency: USD
162
- - request_id: req_9002
163
- at: 2026-03-04T11:59:10.000Z
164
- kind: payment
165
- severity: success
166
- summary: Charge captured for invoice INV-2200.
167
- operator: Billing job
168
- payload:
169
- invoice: INV-2200
170
- amount: 89
171
- currency: USD
172
- ```
173
-
174
- ```yaml
175
- - id: plain_event_log
176
- type: EventLog
177
- properties:
178
- height: 200
179
- search: false
180
- levelFilters: false
181
- defaultExpanded: true
182
- fields:
183
- id: id
184
- time: timestamp
185
- message: message
186
- data:
187
- - id: "1"
188
- timestamp: 2026-03-04T09:12:04.000Z
189
- level: warning
190
- type: cache_miss
191
- message: Cache miss rate above 30%.
192
- metadata:
193
- rate: 0.34
194
- ```
195
-
196
- ```yaml
197
- - id: translated_event_log
198
- type: EventLog
199
- properties:
200
- height: 240
201
- levelFilterOptions:
202
- - all
203
- - error
204
- text:
205
- all: Alles
206
- error: Foute
207
- context: Konteks
208
- copy: Kopieer JSON
209
- copied: Gekopieer
210
- systemActor: Stelsel
211
- searchPlaceholder: Soek gebeure…
212
- noData: Geen gebeure nie.
213
- noResults: Geen passende gebeure nie.
214
- fields:
215
- id: id
216
- time: timestamp
217
- message: message
218
- data:
219
- - id: "1"
220
- timestamp: 2026-03-04T09:12:04.000Z
221
- type: import_failed
222
- level: error
223
- message: Invoer van <b>kliente.csv</b> het misluk.
224
- metadata:
225
- rows: 2043
226
- error: Kolom "epos" ontbreek
227
- ```
228
-
229
- ```yaml
230
- - id: set_data_event_log
231
- type: EventLog
232
- properties:
233
- height: 200
234
- fields:
235
- id: id
236
- time: timestamp
237
- message: message
238
- events:
239
- onMount:
240
- - id: set_event_log_data
241
- type: CallMethod
242
- params:
243
- blockId: set_data_event_log
244
- method: setData
245
- args:
246
- - - id: "1"
247
- timestamp: 2026-03-04T09:12:04.000Z
248
- type: sync_failed
249
- level: error
250
- message: Contact sync failed after 3 retries.
251
- metadata:
252
- retries: 3
253
- - id: "2"
254
- timestamp: 2026-03-04T09:02:04.000Z
255
- type: sync_succeeded
256
- level: success
257
- message: Contact sync completed.
258
- metadata:
259
- contacts: 1240
260
- ```
261
-
262
- ```yaml
263
- - id: event_log_with_events
264
- type: EventLog
265
- properties:
266
- height: 200
267
- fields:
268
- id: id
269
- time: timestamp
270
- message: message
271
- data:
272
- - id: "1"
273
- timestamp: 2026-03-04T09:12:04.000Z
274
- type: job_failed
275
- level: error
276
- message: Nightly export failed.
277
- metadata:
278
- job: nightly_export
279
- - id: "2"
280
- timestamp: 2026-03-04T08:12:04.000Z
281
- type: job_succeeded
282
- level: success
283
- message: Nightly import succeeded.
284
- metadata:
285
- job: nightly_import
286
- events:
287
- onRowClick:
288
- - id: set_selected_event
289
- type: SetState
290
- params:
291
- selected_event:
292
- _event: row
293
- - id: selected_event_display
294
- type: Markdown
295
- properties:
296
- content:
297
- _nunjucks:
298
- template: '**Selected:** {{ selected_event.message | default("none") }}'
299
- on:
300
- _state: true
301
- ```
302
-
303
- | Property | Type | Default | Description |
304
- | --- | --- | --- | --- |
305
- | `data` | array | `[]` | Array of records, in the order they should be listed (usually newest first). Each record is read using the `fields` paths, so any record shape works. |
306
- | `fields` | object | - | Dot paths used to read each record. Set only the paths that differ from the defaults. |
307
- | `fields.id` | string | `"_id"` | Path to a unique row id, used as the list key, to track expanded rows and matched by the search. Ids that are not strings, such as MongoDB ObjectIds, are serialized. Falls back to the row index when the path is empty or the id repeats an earlier row. |
308
- | `fields.time` | string | `"created.timestamp"` | Path to the row timestamp. Any value the JavaScript Date constructor accepts, such as an ISO string or a date. |
309
- | `fields.type` | string | `"type"` | Path to the event type, used as the key into `eventTypeConfig`. |
310
- | `fields.level` | string | `"level"` | Path to the severity of the row. One of "error", "warning", "success" or "info". When the path is empty, the level on the matching `eventTypeConfig` entry is used, otherwise the row is "info". |
311
- | `fields.message` | string | `"title"` | Path to the message shown on the row. Rendered as html, sanitized before it is inserted. |
312
- | `fields.detail` | string | `"description"` | Path to the detail shown when the row is expanded. Rendered as html, sanitized before it is inserted. |
313
- | `fields.actor` | string | `"created.user"` | Path to the actor of the row. A string is used as the actor name, an object is read using `actorName` and `actorPicture`. |
314
- | `fields.actorName` | string | `"name"` | Path to the actor name, relative to the actor object. |
315
- | `fields.actorPicture` | string | `"picture"` | Path to the actor avatar image url, relative to the actor object. The actor initials are shown when it is empty. |
316
- | `fields.context` | string | `"metadata"` | Path to the context object shown as a flattened key-value table when the row is expanded. |
317
- | `eventTypeConfig` | object | `{}` | Map of event type to display config: `{ color, title, icon, level }`. `title` labels the type column, `icon` names an icon shown before the label, `color` colors the label and icon, and `level` sets the severity for every row of that type. |
318
- | `reverse` | boolean | `false` | Reverse the order of the records before they are listed. |
319
- | `search` | object \| boolean | - | Client-side search over the id, type, title, message, detail and context of every record. The search input is shown by default: omit the property or set it to true for the defaults, set an object to tune it, or set false to hide it. |
320
- | `search.placeholder` | string | - | Placeholder text in the search input. Defaults to `text.searchPlaceholder`. |
321
- | `search.debounce` | number | `150` | Milliseconds to wait after the last keystroke before filtering. |
322
- | `search.minLength` | number | `0` | Skip filtering until the query is at least this many characters. |
323
- | `levelFilters` | boolean | `true` | Show the severity filter pills in the toolbar. |
324
- | `levelFilterOptions` | array | - | The filter pills to show, in order. Defaults to "all" plus every level with at least one record. |
325
- | `defaultExpanded` | boolean | `false` | Expand every row. Rows added later are expanded when they first appear, and rows the user collapsed stay collapsed. |
326
- | `height` | number \| string | - | Pixel height (number) or css height string of the scroll container. When omitted, the log grows with its content and scrolls with the page. |
327
- | `overscan` | number | `400` | Pixels of off-screen rows to render above and below the viewport. Increase for smoother fast-scroll, decrease to reduce DOM cost. |
328
- | `text` | object | - | All the text rendered by the block, so it can be changed or translated. |
329
- | `text.all` | string | `"All"` | Label of the filter pill that shows every record. |
330
- | `text.error` | string | `"Errors"` | Label of the error level filter pill. |
331
- | `text.warning` | string | `"Warnings"` | Label of the warning level filter pill. |
332
- | `text.success` | string | `"Successes"` | Label of the success level filter pill. |
333
- | `text.info` | string | `"Info"` | Label of the info level filter pill. |
334
- | `text.searchPlaceholder` | string | `"Search events, context, ids…"` | Placeholder text in the search input. |
335
- | `text.clearSearch` | string | `"Clear search"` | Accessible label of the button that clears the search input. |
336
- | `text.context` | string | `"Context"` | Heading of the context table in an expanded row. |
337
- | `text.copy` | string | `"Copy JSON"` | Label of the button that copies the context object to the clipboard. |
338
- | `text.copied` | string | `"Copied"` | Label shown on the copy button after the context was copied. |
339
- | `text.systemActor` | string | `"System"` | Actor name shown when a record has no actor. |
340
- | `text.noData` | string | `"No events."` | Text shown when there are no records. |
341
- | `text.noResults` | string | `"No matching events."` | Text shown when the search and filters match no records. |
342
-
343
- | Event | Event Data | Description |
344
- | --- | --- | --- |
345
- | `onRowClick` | `{ row }` | Triggered when a row is clicked. |
346
- | `onExpand` | `{ row, expanded }` | Triggered when a row is expanded or collapsed. |
347
- | `onSearch` | `{ value, resultCount }` | Triggered when the debounced search query changes, including when the search is cleared. |
348
-
349
- | Key | Target |
350
- | --- | --- |
351
- | `/block` | Outer block wrapper (always available). |
352
- | `/element` | The outer log container. |
353
- | `/toolbar` | The sticky toolbar row holding the search input and the level filters. |
354
- | `/search` | The search input wrapper. |
355
- | `/filters` | The level filter pill group. |
356
- | `/list` | The virtualised list container. |
357
- | `/row` | Each log row. |
358
- | `/detail` | The expanded detail area of a row. |
359
- | `/context` | The context key-value table in an expanded row. |
360
- | `/noData` | The placeholder shown when there are no records. |
361
- | `/noResults` | The placeholder shown when the search and level filter match no records. |
362
-
363
- No slots defined.