lintje 0.4.0 → 0.5.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 (143) hide show
  1. package/dist-elements/actions.js +1 -1
  2. package/dist-elements/chunks/{base-DRGvkF-r.js → base-CVKIPSLx.js} +99 -96
  3. package/dist-elements/chunks/chart-styles-JK4clSyA.js +108 -0
  4. package/dist-elements/chunks/{dialog-B7aRBtjy.js → dialog-D4V467iC.js} +2 -2
  5. package/dist-elements/chunks/{disclosure-DirPLy2E.js → disclosure-DVex7Lo_.js} +1 -1
  6. package/dist-elements/chunks/download-D7ZarlMZ.js +103 -0
  7. package/dist-elements/chunks/{focus-trap-Dv8zu64A.js → focus-trap-rje9Oz19.js} +1 -1
  8. package/dist-elements/chunks/{input-BGMLam-O.js → input-DEHA2Z_0.js} +1 -1
  9. package/dist-elements/chunks/{player-BApadXr8.js → player-DDDWUevR.js} +1 -1
  10. package/dist-elements/chunks/{sentence-0wO85ZdJ.js → sentence-mY0Iqu5H.js} +1 -1
  11. package/dist-elements/chunks/{stagger-BB_gcxBI.js → stagger-Dvkth9_C.js} +95 -94
  12. package/dist-elements/content.js +1 -0
  13. package/dist-elements/core.js +1 -1
  14. package/dist-elements/custom-elements.json +120 -2
  15. package/dist-elements/data-types.json +208 -1
  16. package/dist-elements/feedback.js +1 -1
  17. package/dist-elements/guides/loading.md +1 -1
  18. package/dist-elements/inputs.js +2 -2
  19. package/dist-elements/layout.js +1 -1
  20. package/dist-elements/lintje.js +2836 -1915
  21. package/dist-elements/overlays.js +1 -1
  22. package/dist-elements/tag/activity-log.js +1 -1
  23. package/dist-elements/tag/ai-label.js +1 -1
  24. package/dist-elements/tag/announcement.js +2 -2
  25. package/dist-elements/tag/app-search.js +2 -2
  26. package/dist-elements/tag/audio-player.js +2 -2
  27. package/dist-elements/tag/badge.js +1 -1
  28. package/dist-elements/tag/breadcrumbs.js +1 -1
  29. package/dist-elements/tag/button.js +1 -1
  30. package/dist-elements/tag/card-list.js +1 -1
  31. package/dist-elements/tag/card.js +1 -1
  32. package/dist-elements/tag/chart.js +1020 -961
  33. package/dist-elements/tag/chat-answer.js +2 -2
  34. package/dist-elements/tag/chat-composer.js +1 -1
  35. package/dist-elements/tag/chat-message.js +1 -1
  36. package/dist-elements/tag/chat-strip.js +1 -1
  37. package/dist-elements/tag/chat-suggestions.js +1 -1
  38. package/dist-elements/tag/chat.js +1 -1
  39. package/dist-elements/tag/checkbox-group.js +2 -2
  40. package/dist-elements/tag/checkbox.js +2 -2
  41. package/dist-elements/tag/code.js +1 -1
  42. package/dist-elements/tag/combobox.js +2 -2
  43. package/dist-elements/tag/conflict-alert.js +1 -1
  44. package/dist-elements/tag/copy-button.js +1 -1
  45. package/dist-elements/tag/data-table.js +264 -263
  46. package/dist-elements/tag/date-input.js +2 -2
  47. package/dist-elements/tag/date-range.js +3 -3
  48. package/dist-elements/tag/description-list.js +1 -1
  49. package/dist-elements/tag/dialog.js +3 -3
  50. package/dist-elements/tag/document-viewer.js +1 -1
  51. package/dist-elements/tag/drawer.js +3 -3
  52. package/dist-elements/tag/empty-state.js +1 -1
  53. package/dist-elements/tag/error-page.js +1 -1
  54. package/dist-elements/tag/error-summary.js +1 -1
  55. package/dist-elements/tag/expander.js +2 -2
  56. package/dist-elements/tag/explainer.js +2 -2
  57. package/dist-elements/tag/field.js +1 -1
  58. package/dist-elements/tag/file-upload.js +3 -3
  59. package/dist-elements/tag/filter-bar.js +3 -3
  60. package/dist-elements/tag/filter-sheet.js +3 -3
  61. package/dist-elements/tag/filter-zone.js +2 -2
  62. package/dist-elements/tag/find.js +15 -11
  63. package/dist-elements/tag/footer.js +1 -1
  64. package/dist-elements/tag/form-actions.js +1 -1
  65. package/dist-elements/tag/form-section.js +1 -1
  66. package/dist-elements/tag/form.js +1 -1
  67. package/dist-elements/tag/gallery.js +1 -1
  68. package/dist-elements/tag/grid-item.js +1 -1
  69. package/dist-elements/tag/grid.js +1 -1
  70. package/dist-elements/tag/hero.js +1 -1
  71. package/dist-elements/tag/highlight.js +1 -1
  72. package/dist-elements/tag/icon-button.js +1 -1
  73. package/dist-elements/tag/icon.js +1 -1
  74. package/dist-elements/tag/job-list.js +1 -1
  75. package/dist-elements/tag/kpi-row.js +1 -1
  76. package/dist-elements/tag/kpi.js +38 -36
  77. package/dist-elements/tag/level-meter.js +1 -1
  78. package/dist-elements/tag/list.js +2 -2
  79. package/dist-elements/tag/log-viewer.d.ts +1 -0
  80. package/dist-elements/tag/log-viewer.js +847 -0
  81. package/dist-elements/tag/logo.js +1 -1
  82. package/dist-elements/tag/map.js +184 -183
  83. package/dist-elements/tag/menu-button.js +14 -9
  84. package/dist-elements/tag/modal.js +2 -2
  85. package/dist-elements/tag/multiselect.js +3 -3
  86. package/dist-elements/tag/note.js +1 -1
  87. package/dist-elements/tag/notifications.js +2 -2
  88. package/dist-elements/tag/number-input.js +2 -2
  89. package/dist-elements/tag/page-header.js +1 -1
  90. package/dist-elements/tag/pagination.js +16 -16
  91. package/dist-elements/tag/popover.js +1 -1
  92. package/dist-elements/tag/progress-bar.js +1 -1
  93. package/dist-elements/tag/prose.js +1 -1
  94. package/dist-elements/tag/qr-code.js +1 -1
  95. package/dist-elements/tag/radio-group.js +2 -2
  96. package/dist-elements/tag/range.js +2 -2
  97. package/dist-elements/tag/recording-status.js +1 -1
  98. package/dist-elements/tag/repeater.js +1 -1
  99. package/dist-elements/tag/segmented.js +2 -2
  100. package/dist-elements/tag/select.js +2 -2
  101. package/dist-elements/tag/shell.js +2 -2
  102. package/dist-elements/tag/skeleton.js +1 -1
  103. package/dist-elements/tag/slot-picker.js +2 -2
  104. package/dist-elements/tag/sortable-list.js +1 -1
  105. package/dist-elements/tag/spinner.js +1 -1
  106. package/dist-elements/tag/split-pane.js +1 -1
  107. package/dist-elements/tag/status-dot.js +1 -1
  108. package/dist-elements/tag/stepper.js +1 -1
  109. package/dist-elements/tag/streaming-text.js +1 -1
  110. package/dist-elements/tag/sub-nav.js +1 -1
  111. package/dist-elements/tag/tabs.js +1 -1
  112. package/dist-elements/tag/tag-input.js +2 -2
  113. package/dist-elements/tag/text-editor.js +2 -2
  114. package/dist-elements/tag/text-input.js +2 -2
  115. package/dist-elements/tag/textarea.js +2 -2
  116. package/dist-elements/tag/tile.js +1 -1
  117. package/dist-elements/tag/time-input.js +2 -2
  118. package/dist-elements/tag/toast.js +2 -2
  119. package/dist-elements/tag/toggle.js +2 -2
  120. package/dist-elements/tag/toggletip.js +2 -2
  121. package/dist-elements/tag/token-value.js +1 -1
  122. package/dist-elements/tag/tooltip.js +1 -1
  123. package/dist-elements/tag/transcript.js +1 -1
  124. package/dist-elements/tag/translator.js +1 -1
  125. package/dist-elements/tag/tree-view.js +1 -1
  126. package/dist-elements/tag/user-menu.js +1 -1
  127. package/dist-elements/tag/video-player.js +2 -2
  128. package/dist-elements/tokens.css +2 -0
  129. package/dist-elements/tokens.json +4 -0
  130. package/dist-elements/types/bundle/content.d.ts +1 -0
  131. package/dist-elements/types/bundle/index.d.ts +1 -1
  132. package/dist-elements/types/components/actions/menu-button/menu-button.d.ts +4 -1
  133. package/dist-elements/types/components/content/log-viewer/lines.d.ts +33 -0
  134. package/dist-elements/types/components/content/log-viewer/log-viewer.d.ts +117 -0
  135. package/dist-elements/types/components/index.d.ts +2 -0
  136. package/dist-elements/types/components/inputs/find/find.d.ts +1 -0
  137. package/dist-elements/types/components/shared/charts/shared/axes.d.ts +7 -1
  138. package/dist-elements/types/components/shared/charts/shared/controller.d.ts +0 -1
  139. package/dist-elements/types/components/shared/charts/shared/layer-motion.d.ts +21 -0
  140. package/dist-elements/types/components/shared/download.d.ts +2 -0
  141. package/dist-elements/types/types.d.ts +44 -0
  142. package/package.json +1 -1
  143. package/dist-elements/chunks/download-C68kcwPj.js +0 -206
@@ -1,4 +1,4 @@
1
- import { Ct as e, I as t, Tt as n, bt as r, d as i, en as a, l as o, m as s, n as c, nn as l, p as u, rn as d, t as f, wt as p } from "./base-DRGvkF-r.js";
1
+ import { Ct as e, I as t, Tt as n, bt as r, en as i, f as a, h as o, m as s, n as c, nn as l, rn as u, t as d, u as f, wt as p } from "./base-CVKIPSLx.js";
2
2
  //#region src/components/shared/charts/shared/scale.ts
3
3
  var m = {
4
4
  width: 900,
@@ -9,17 +9,17 @@ var m = {
9
9
  bottom: 28
10
10
  }, h = .25, g = 16, _ = 10, v = .3;
11
11
  function y(e, t, { fontFamily: n = "" } = {}) {
12
- let r = Math.min(320, Math.round(t * v)), i = Math.ceil(Math.max(0, ...e.map((e) => u(e, n)))), a = Math.min(r, i);
12
+ let r = Math.min(320, Math.round(t * v)), i = Math.ceil(Math.max(0, ...e.map((e) => s(e, n)))), a = Math.min(r, i);
13
13
  return {
14
14
  labelEnd: a,
15
15
  barStart: a + _,
16
- fit: (e) => s(e, a, n)
16
+ fit: (e) => o(e, a, n)
17
17
  };
18
18
  }
19
19
  function b(e, t, { minimum: n = g, fontFamily: r = "" } = {}) {
20
- let a = Math.min(96, Math.round(t * h)), s = (t) => Math.ceil(Math.max(0, ...e.map((e) => u(t(e), r))) + 8), c = i, l = s(c);
21
- return l > a && (c = o, l = s(c)), {
22
- width: Math.min(a, Math.max(n, l)),
20
+ let i = Math.min(96, Math.round(t * h)), o = (t) => Math.ceil(Math.max(0, ...e.map((e) => s(t(e), r))) + 8), c = a, l = o(c);
21
+ return l > i && (c = f, l = o(c)), {
22
+ width: Math.min(i, Math.max(n, l)),
23
23
  format: c
24
24
  };
25
25
  }
@@ -66,9 +66,9 @@ function T(e, t = {}) {
66
66
  height: e.controller.height
67
67
  };
68
68
  }
69
- var E = .35, D = 120, O = Array.from({ length: 21 }, (e, t) => t / 20), k = 0, A = class {
69
+ var E = .35, D = 120, O = Array.from({ length: 21 }, (e, t) => t / 20), k = 0, ne = class {
70
70
  constructor(e) {
71
- this.id = `lintje-chart-${++k}`, this.width = m.width, this.height = m.height, this.inView = !1, this.tooltip = null, this.hoverIndex = null, this.status = "", this.hiddenSeries = [], this.emphasis = null, this.hiddenLayers = [], this.hoverSegment = null, this.selectedCell = null, this.dimmedClass = null, this.mapHint = null, this.mapHintTimer = null, this.mapSelection = null, this.mapTool = null, this.mapLastTool = null, this.mapMenuOpen = !1, this.mapMenuFocus = null, this.mapLegendOpen = !1, this.mapArea = null, this.hostArea = void 0, this.hostSelection = void 0, this.leaflet = null, this.leafletView = null, this.element = null, this.measuring = {}, this.resizeObserver = null, this.intersectionObserver = null, this.attach = (e) => {
71
+ this.id = `lintje-chart-${++k}`, this.width = m.width, this.height = m.height, this.inView = !1, this.tooltip = null, this.hoverIndex = null, this.status = "", this.hiddenSeries = [], this.emphasis = null, this.hiddenLayers = [], this.hoverSegment = null, this.selectedCell = null, this.mapHint = null, this.mapHintTimer = null, this.mapSelection = null, this.mapTool = null, this.mapLastTool = null, this.mapMenuOpen = !1, this.mapMenuFocus = null, this.mapLegendOpen = !1, this.mapArea = null, this.hostArea = void 0, this.hostSelection = void 0, this.leaflet = null, this.leafletView = null, this.element = null, this.measuring = {}, this.resizeObserver = null, this.intersectionObserver = null, this.attach = (e) => {
72
72
  e !== this.element && (this.unwatch(), e instanceof HTMLElement && (this.element = e, this.read(), this.watchSize(e), this.watchVisibility(e)));
73
73
  }, this.onWindowKey = (e) => {
74
74
  e.key === "Escape" && this.hideTooltip();
@@ -161,11 +161,11 @@ var E = .35, D = 120, O = Array.from({ length: 21 }, (e, t) => t / 20), k = 0, A
161
161
  enter() {
162
162
  this.intersectionObserver?.disconnect(), this.intersectionObserver = null, !this.inView && (this.inView = !0, this.requestUpdate());
163
163
  }
164
- }, j = f;
165
- function M(e) {
166
- return typeof e == "string" && j.includes(e);
164
+ }, A = d;
165
+ function j(e) {
166
+ return typeof e == "string" && A.includes(e);
167
167
  }
168
- var ne = [
168
+ var re = [
169
169
  "circle",
170
170
  "square",
171
171
  "triangle",
@@ -184,20 +184,20 @@ var ne = [
184
184
  "rectangle",
185
185
  "kite"
186
186
  ];
187
- function re(e) {
188
- return ne[j.indexOf(e)];
189
- }
190
187
  function ie(e) {
188
+ return re[A.indexOf(e)];
189
+ }
190
+ function ae(e) {
191
191
  return Math.sqrt(2 * Math.PI / (e * Math.sin(2 * Math.PI / e)));
192
192
  }
193
- function N(e, t, n) {
194
- let r = ie(e) * n;
193
+ function M(e, t, n) {
194
+ let r = ae(e) * n;
195
195
  return Array.from({ length: e }, (n, i) => {
196
196
  let a = t + i * 2 * Math.PI / e;
197
197
  return [r * Math.cos(a), r * Math.sin(a)];
198
198
  });
199
199
  }
200
- function P(e, t = 0) {
200
+ function N(e, t = 0) {
201
201
  let n = e * Math.sqrt(Math.PI / 5) / 2, r = Math.cos(t), i = Math.sin(t);
202
202
  return [
203
203
  [-n, -3 * n],
@@ -214,14 +214,14 @@ function P(e, t = 0) {
214
214
  [-n, -n]
215
215
  ].map(([e, t]) => [e * r - t * i, e * i + t * r]);
216
216
  }
217
- function F(e, t) {
217
+ function P(e, t) {
218
218
  let n = .5, r = t * Math.sqrt(Math.PI / (e * n * Math.sin(Math.PI / e)));
219
219
  return Array.from({ length: 2 * e }, (t, i) => {
220
220
  let a = i % 2 == 0 ? r : n * r, o = -Math.PI / 2 + i * Math.PI / e;
221
221
  return [a * Math.cos(o), a * Math.sin(o)];
222
222
  });
223
223
  }
224
- function I(e) {
224
+ function F(e) {
225
225
  let t = e * Math.sqrt(Math.PI / 2), n = t / 2;
226
226
  return [
227
227
  [-t, -n],
@@ -230,7 +230,7 @@ function I(e) {
230
230
  [-t, n]
231
231
  ];
232
232
  }
233
- function L(e) {
233
+ function I(e) {
234
234
  let t = e * Math.sqrt(Math.PI / 2.5), n = 1.25 * t;
235
235
  return [
236
236
  [-t, -n],
@@ -241,7 +241,7 @@ function L(e) {
241
241
  [0, 0]
242
242
  ];
243
243
  }
244
- function R(e) {
244
+ function L(e) {
245
245
  let t = e * Math.sqrt(Math.PI);
246
246
  return [
247
247
  [0, -t],
@@ -250,87 +250,88 @@ function R(e) {
250
250
  [-t / 2, 0]
251
251
  ];
252
252
  }
253
- function z(e, t = 1) {
253
+ function R(e, t = 1) {
254
254
  let n = -Math.PI / 2;
255
255
  switch (e) {
256
256
  case "circle": return null;
257
- case "square": return N(4, Math.PI / 4, t);
258
- case "diamond": return N(4, n, t);
259
- case "triangle": return N(3, n, t);
260
- case "triangle-down": return N(3, Math.PI / 2, t);
261
- case "pentagon": return N(5, n, t);
262
- case "hexagon": return N(6, n, t);
263
- case "plus": return P(t);
264
- case "cross": return P(t, Math.PI / 4);
265
- case "octagon": return N(8, n, t);
266
- case "triangle-right": return N(3, 0, t);
267
- case "triangle-left": return N(3, Math.PI, t);
268
- case "star": return F(5, t);
269
- case "star-4": return F(4, t);
270
- case "hourglass": return L(t);
271
- case "rectangle": return I(t);
272
- case "kite": return R(t);
257
+ case "square": return M(4, Math.PI / 4, t);
258
+ case "diamond": return M(4, n, t);
259
+ case "triangle": return M(3, n, t);
260
+ case "triangle-down": return M(3, Math.PI / 2, t);
261
+ case "pentagon": return M(5, n, t);
262
+ case "hexagon": return M(6, n, t);
263
+ case "plus": return N(t);
264
+ case "cross": return N(t, Math.PI / 4);
265
+ case "octagon": return M(8, n, t);
266
+ case "triangle-right": return M(3, 0, t);
267
+ case "triangle-left": return M(3, Math.PI, t);
268
+ case "star": return P(5, t);
269
+ case "star-4": return P(4, t);
270
+ case "hourglass": return I(t);
271
+ case "rectangle": return F(t);
272
+ case "kite": return L(t);
273
273
  }
274
274
  }
275
- function B(e, t = 1, n = 0, r = 0) {
276
- let i = z(e, t);
275
+ function z(e, t = 1, n = 0, r = 0) {
276
+ let i = R(e, t);
277
277
  if (!i) return `M ${n - t} ${r} a ${t} ${t} 0 1 0 ${t * 2} 0 a ${t} ${t} 0 1 0 ${-t * 2} 0 Z`;
278
278
  let a = (e) => Number(e.toFixed(3));
279
279
  return `${i.map(([e, t], i) => `${i === 0 ? "M" : "L"} ${a(n + e)} ${a(r + t)}`).join(" ")} Z`;
280
280
  }
281
- function V(e, t, n = 0, r = 0) {
282
- return B(e ? re(e) : "circle", t, n, r);
281
+ function B(e, t, n = 0, r = 0) {
282
+ return z(e ? ie(e) : "circle", t, n, r);
283
283
  }
284
284
  //#endregion
285
285
  //#region src/components/shared/charts/shared/colors.ts
286
- var H = "var(--color-chart-default)", U = {
287
- ...Object.fromEntries(f.map((e) => [e, c(e)])),
286
+ var V = "var(--color-chart-default)", H = {
287
+ ...Object.fromEntries(d.map((e) => [e, c(e)])),
288
288
  other: "var(--color-chart-other)",
289
289
  remainder: "var(--color-chart-remainder)",
290
290
  emphasis: "var(--color-chart-emphasis)"
291
291
  };
292
+ function U(e) {
293
+ if (e != null) return H[e] ?? e;
294
+ }
292
295
  function W(e) {
293
- if (e != null) return U[e] ?? e;
296
+ return e === H["dark-yellow"] ? "var(--color-chart-dark-yellow-text)" : void 0;
294
297
  }
295
298
  function G(e) {
296
- return e === U["dark-yellow"] ? "var(--color-chart-dark-yellow-text)" : void 0;
297
- }
298
- function K(e) {
299
- if (e != null && M(e)) return U[e];
299
+ if (e != null && j(e)) return H[e];
300
300
  }
301
301
  //#endregion
302
302
  //#region src/components/shared/charts/shared/axes.ts
303
- function q(e, t, n) {
304
- let r = G(t);
305
- return d`<path d=${V(e, 4.5, n, n)} fill="currentColor"
306
- stroke=${r ?? a} stroke-width=${r ? 1 : a} />`;
303
+ var K = "reference:threshold", q = "reference:median";
304
+ function J(e, t, n) {
305
+ let r = W(t);
306
+ return u`<path d=${B(e, 4.5, n, n)} fill="currentColor"
307
+ stroke=${r ?? i} stroke-width=${r ? 1 : i} />`;
307
308
  }
308
- function J({ items: e, onToggle: t, onEmphasis: n, position: i = "top" }) {
309
+ function oe({ items: e, onToggle: t, onEmphasis: n, position: a = "top" }) {
309
310
  let o = (e) => () => n?.(e.key ?? e.label), s = () => n?.(null), c = (e) => l`
310
311
  ${e.symbol && e.shape === "point" ? l`<svg class="lintje-legend__marker lintje-legend__marker--symbol" viewBox="0 0 14 14"
311
312
  ${r({ color: e.color ?? "var(--color-chart-default)" })}
312
313
  aria-hidden="true" focusable="false">
313
- ${q(e.symbol, e.color, 7)}
314
+ ${J(e.symbol, e.color, 7)}
314
315
  </svg>` : e.symbol ? l`<svg class="lintje-legend__marker lintje-legend__marker--symbol" viewBox="0 0 14 14"
315
316
  ${r({ color: e.color ?? "var(--color-chart-default)" })}
316
317
  aria-hidden="true" focusable="false">
317
318
  <line x1="0" x2="14" y1="7" y2="7" stroke="currentColor" stroke-width="3" />
318
- <path d=${V(e.symbol, 4, 7, 7)} fill="currentColor" />
319
+ <path d=${B(e.symbol, 4, 7, 7)} fill="currentColor" />
319
320
  </svg>` : l`<span class="lintje-legend__marker lintje-legend__marker--${e.shape ?? "square"}"
320
321
  ${r({ color: e.color ?? "var(--color-chart-default)" })}
321
322
  aria-hidden="true"></span>`}
322
323
  <span class="lintje-legend__label">${e.label}</span>
323
324
  `;
324
325
  return l`
325
- <ul class="lintje-legend lintje-legend--${i}">
326
+ <ul class="lintje-legend lintje-legend--${a}">
326
327
  ${e.map((e) => l`
327
328
  <li class="lintje-legend__item ${e.hidden ? "is-hidden" : ""}">
328
329
  ${t && !e.fixed ? l`<button type="button" class="lintje-legend__button"
329
330
  @click=${() => t(e.key ?? e.label)}
330
- @mouseenter=${n ? o(e) : a}
331
- @mouseleave=${n ? s : a}
332
- @focus=${n ? o(e) : a}
333
- @blur=${n ? s : a}
331
+ @mouseenter=${n ? o(e) : i}
332
+ @mouseleave=${n ? s : i}
333
+ @focus=${n ? o(e) : i}
334
+ @blur=${n ? s : i}
334
335
  aria-pressed=${!e.hidden}>${c(e)}</button>` : c(e)}
335
336
  </li>
336
337
  `)}
@@ -341,7 +342,7 @@ function Y(e) {
341
342
  return e ? "group" : "img";
342
343
  }
343
344
  function X(e) {
344
- return d`
345
+ return u`
345
346
  <filter id="focus-${e}" filterUnits="userSpaceOnUse" x="-10%" y="-10%" width="120%" height="120%"
346
347
  color-interpolation-filters="sRGB">
347
348
  <feComponentTransfer in="SourceAlpha" result="shape"><feFuncA type="linear" slope="100" /></feComponentTransfer>
@@ -358,11 +359,11 @@ function X(e) {
358
359
  function Z(e) {
359
360
  return { "--lintje-focus-ring": `url(#focus-${e})` };
360
361
  }
361
- var ae = 8, oe = 20;
362
+ var se = 8, ce = 20;
362
363
  function Q(e, t = "") {
363
364
  if (e.length < 2) return e;
364
365
  let n = e.map((e) => {
365
- let n = u(e.label, t), r = e.anchor === "end" ? e.x - n : e.anchor === "start" ? e.x : e.x - n / 2;
366
+ let n = s(e.label, t), r = e.anchor === "end" ? e.x - n : e.anchor === "start" ? e.x : e.x - n / 2;
366
367
  return {
367
368
  left: r,
368
369
  right: r + n
@@ -370,17 +371,17 @@ function Q(e, t = "") {
370
371
  }), r = (t) => {
371
372
  for (let r = 0; r + t < e.length; r += t) {
372
373
  let e = n[r], i = n[r + t];
373
- if (Math.max(i.left - e.right, e.left - i.right) < ae) return !1;
374
+ if (Math.max(i.left - e.right, e.left - i.right) < se) return !1;
374
375
  }
375
376
  return !0;
376
377
  }, i = 1;
377
378
  for (; i < e.length && !r(i);) i += 1;
378
379
  return i === 1 ? e : e.filter((e, t) => t % i === 0);
379
380
  }
380
- function se({ area: e = m, ticks: t, max: n, axisTitle: o, xLabels: s, xTitle: c, description: u, defs: f, zeroLine: p = !0, formatTick: h = i, id: g, height: _, fontFamily: v, interactive: y, keys: b }, x) {
381
+ function le({ area: e = m, ticks: t, max: n, axisTitle: o, xLabels: s, xTitle: c, description: d, defs: f, zeroLine: p = !0, formatTick: h = a, id: g, height: _, fontFamily: v, interactive: y, keys: b }, x) {
381
382
  return l`
382
383
  <figure class="lintje-chart">
383
- ${o ? l`<figcaption class="lintje-chart__axis-title">${o}</figcaption>` : a}
384
+ ${o ? l`<figcaption class="lintje-chart__axis-title">${o}</figcaption>` : i}
384
385
  <!-- The viewBox is set 1:1 to the measured pixels, so 12 px axis text really is
385
386
  12 px — however narrow the tile is. -->
386
387
  <svg
@@ -394,12 +395,12 @@ function se({ area: e = m, ticks: t, max: n, axisTitle: o, xLabels: s, xTitle: c
394
395
  })}
395
396
  role=${Y(y)}
396
397
  aria-labelledby="${g}-desc"
397
- tabindex=${b ? 0 : a}
398
+ tabindex=${b ? 0 : i}
398
399
  @keydown=${b?.keydown}
399
400
  @focus=${b?.focus}
400
401
  @blur=${b?.blur}
401
402
  >
402
- <desc id="${g}-desc">${u}</desc>
403
+ <desc id="${g}-desc">${d}</desc>
403
404
  <defs>
404
405
  <pattern id="hatch-${g}" width="6" height="6" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
405
406
  <line x1="0" y1="0" x2="0" y2="6" stroke="var(--color-chart-hatch)" stroke-width="2" />
@@ -411,7 +412,7 @@ function se({ area: e = m, ticks: t, max: n, axisTitle: o, xLabels: s, xTitle: c
411
412
  <!-- Grid + axis labels -->
412
413
  ${t.map((t) => {
413
414
  let r = C(t, n, e), i = t === 0;
414
- return d`
415
+ return u`
415
416
  <g>
416
417
  <line
417
418
  x1=${e.left} x2=${e.width - e.right} y1=${r} y2=${r}
@@ -427,42 +428,42 @@ function se({ area: e = m, ticks: t, max: n, axisTitle: o, xLabels: s, xTitle: c
427
428
  ${x}
428
429
 
429
430
  <!-- x-axis labels -->
430
- ${Q(s ?? [], v).map((t) => d`
431
- <text x=${t.x} y=${e.height - e.bottom + oe} text-anchor=${t.anchor ?? "middle"} class="lintje-chart__axis-label">
431
+ ${Q(s ?? [], v).map((t) => u`
432
+ <text x=${t.x} y=${e.height - e.bottom + ce} text-anchor=${t.anchor ?? "middle"} class="lintje-chart__axis-label">
432
433
  ${t.label}
433
434
  </text>
434
435
  `)}
435
- ${c ? d`<text x=${e.width - e.right} y=${e.height - e.bottom + 40} text-anchor="end"
436
- class="lintje-chart__x-title">${c}</text>` : a}
436
+ ${c ? u`<text x=${e.width - e.right} y=${e.height - e.bottom + 40} text-anchor="end"
437
+ class="lintje-chart__x-title">${c}</text>` : i}
437
438
  </svg>
438
439
  </figure>
439
440
  `;
440
441
  }
441
- function ce({ area: e = m, index: t, count: n, label: r, lastValue: i, pendingHours: o }) {
442
- let s = e.left + x(e) * t / (n - 1), c = o > 6, l = e.width - e.right - s, u = l > 140;
443
- return c ? d`
442
+ function $({ area: e = m, index: t, count: n, label: r, lastValue: a, pendingHours: o }) {
443
+ let s = e.left + x(e) * t / (n - 1), c = o > 6, l = e.width - e.right - s, d = l > 140;
444
+ return c ? u`
444
445
  <g>
445
446
  <line x1=${s} x2=${s} y1=${e.top} y2=${e.height - e.bottom}
446
447
  stroke="var(--color-text-primary)" stroke-width="1.5" stroke-dasharray="4 3" />
447
- <text x=${u ? s + 6 : s - 6} y=${e.top + 12}
448
- text-anchor=${u ? "start" : "end"} class="lintje-chart__as-of-label">
448
+ <text x=${d ? s + 6 : s - 6} y=${e.top + 12}
449
+ text-anchor=${d ? "start" : "end"} class="lintje-chart__as-of-label">
449
450
  ${r}
450
451
  </text>
451
- ${i ? d`<text x=${u ? s + 6 : s - 6} y=${e.top + 26}
452
- text-anchor=${u ? "start" : "end"} class="lintje-chart__axis-label">${i}</text>` : a}
452
+ ${a ? u`<text x=${d ? s + 6 : s - 6} y=${e.top + 26}
453
+ text-anchor=${d ? "start" : "end"} class="lintje-chart__axis-label">${a}</text>` : i}
453
454
  <text x=${s + l / 2} y=${e.top + (e.height - e.top - e.bottom) / 2}
454
455
  text-anchor="middle" class="lintje-chart__as-of-note">
455
456
  nog geen gegevens · ${o} ${o === 1 ? "uur" : "uren"} volgen
456
457
  </text>
457
458
  </g>
458
- ` : a;
459
+ ` : i;
459
460
  }
460
- var le = e(class extends p {
461
+ var ue = e(class extends p {
461
462
  constructor(e) {
462
463
  if (super(e), e.type !== n.ELEMENT) throw Error("placeTooltip only works on an element");
463
464
  }
464
465
  render(e) {
465
- return a;
466
+ return i;
466
467
  }
467
468
  update(e, [t]) {
468
469
  let n = e.element;
@@ -470,23 +471,23 @@ var le = e(class extends p {
470
471
  if (!n.isConnected) return;
471
472
  let e = n.parentElement?.clientWidth ?? Infinity;
472
473
  n.style.left = `${Math.max(0, Math.min(t.x + 12, e - n.offsetWidth - 8))}px`;
473
- }), a;
474
+ }), i;
474
475
  }
475
476
  });
476
- function $(e) {
477
+ function de(e) {
477
478
  let t = e.tooltip;
478
- if (!t) return a;
479
+ if (!t) return i;
479
480
  let { content: n } = t;
480
481
  return l`
481
- <div class="lintje-chart-tooltip" ${le(t)}>
482
+ <div class="lintje-chart-tooltip" ${ue(t)}>
482
483
  <p class="lintje-chart-tooltip__title">${n.title}</p>
483
484
  ${n.rows.map((e) => l`
484
485
  <p class="lintje-chart-tooltip__row ${e.divider ? "lintje-chart-tooltip__row--divider" : ""}">
485
486
  <span class="lintje-chart-tooltip__label">
486
487
  ${e.symbol ? l`<svg class="lintje-chart-tooltip__marker lintje-chart-tooltip__marker--symbol"
487
488
  viewBox="0 0 14 14" ${r({ color: e.color })}
488
- aria-hidden="true" focusable="false">${q(e.symbol, e.color, 7)}</svg>` : e.marker ? l`<span class="lintje-chart-tooltip__marker lintje-chart-tooltip__marker--${e.marker}"
489
- ${r({ color: e.color })}></span>` : e.color ? l`<span class="lintje-chart-tooltip__marker" ${r({ background: e.color })}></span>` : a}
489
+ aria-hidden="true" focusable="false">${J(e.symbol, e.color, 7)}</svg>` : e.marker ? l`<span class="lintje-chart-tooltip__marker lintje-chart-tooltip__marker--${e.marker}"
490
+ ${r({ color: e.color })}></span>` : e.color ? l`<span class="lintje-chart-tooltip__marker" ${r({ background: e.color })}></span>` : i}
490
491
  ${e.label}
491
492
  </span>
492
493
  <span class="lintje-chart-tooltip__value">${e.value}</span>
@@ -503,12 +504,12 @@ function $(e) {
503
504
  }
504
505
  //#endregion
505
506
  //#region src/components/shared/charts/shared/stagger.ts
506
- function ue(e, t) {
507
+ function fe(e, t) {
507
508
  return { "--lintje-stagger": String(t > 1 ? e / (t - 1) : 0) };
508
509
  }
509
- function de(e, t, n, r) {
510
+ function pe(e, t, n, r) {
510
511
  let i = n > 1 ? e / (n - 1) : 0, a = r > 1 ? t / (r - 1) : 0;
511
512
  return { "--lintje-stagger": String(.7 * i + .3 * a) };
512
513
  }
513
514
  //#endregion
514
- export { x as C, C as E, w as S, te as T, V as _, Z as a, b, X as c, H as d, W as f, M as g, j as h, Y as i, J as l, K as m, ue as n, ce as o, G as p, $ as r, se as s, de as t, Q as u, A as v, y as w, S as x, T as y };
515
+ export { S as C, te as D, y as E, C as O, b as S, x as T, A as _, K as a, ne as b, $ as c, oe as d, Q as f, G as g, W as h, q as i, le as l, U as m, fe as n, Y as o, V as p, de as r, Z as s, pe as t, X as u, j as v, w, T as x, B as y };
@@ -6,5 +6,6 @@ import "./tag/translator.js";
6
6
  import "./tag/audio-player.js";
7
7
  import "./tag/video-player.js";
8
8
  import "./tag/transcript.js";
9
+ import "./tag/log-viewer.js";
9
10
  import "./tag/document-viewer.js";
10
11
  import "./tag/gallery.js";
@@ -1 +1 @@
1
- export { Pt as FrameStateController, Et as ICONS, an as LINTJE_VERSION, Jt as LintjeElement, Gt as MOBILE, Kt as MediaController, qt as WIDE, Dt as ariaKeyShortcuts, Xt as baseStyles, Ot as characterKeys, Yt as define, It as getFrameState, ct as iconGlyph, ft as iconIsMissing, pt as iconSource, lt as iconStyles, kt as isTypingTarget, At as keyLabels, mt as loadIcon, ht as loadedIcon, gt as loadedIconNames, Ht as lockScroll, _t as onIconChange, jt as registerShortcut, ut as renderIcon, Ut as scrollRoot, Mt as setCharacterKeys, Lt as setFrameState, Wt as setHostConfig, yt as setIconSource, Rt as setScrolled, zt as setTitleHidden, Zt as shadowCss, Nt as shortcuts, Bt as subscribeToFrameState, Qt as toShadowCss, $t as tokenStyles } from "./chunks/base-DRGvkF-r.js";
1
+ export { Pt as FrameStateController, Et as ICONS, an as LINTJE_VERSION, Jt as LintjeElement, Gt as MOBILE, Kt as MediaController, qt as WIDE, Dt as ariaKeyShortcuts, Xt as baseStyles, Ot as characterKeys, Yt as define, It as getFrameState, ct as iconGlyph, ft as iconIsMissing, pt as iconSource, lt as iconStyles, kt as isTypingTarget, At as keyLabels, mt as loadIcon, ht as loadedIcon, gt as loadedIconNames, Ht as lockScroll, _t as onIconChange, jt as registerShortcut, ut as renderIcon, Ut as scrollRoot, Mt as setCharacterKeys, Lt as setFrameState, Wt as setHostConfig, yt as setIconSource, Rt as setScrolled, zt as setTitleHidden, Zt as shadowCss, Nt as shortcuts, Bt as subscribeToFrameState, Qt as toShadowCss, $t as tokenStyles } from "./chunks/base-CVKIPSLx.js";
@@ -1197,7 +1197,7 @@
1197
1197
  "text": "string"
1198
1198
  },
1199
1199
  "default": "''",
1200
- "description": "An icon file name before the label, saying what the label is a value of (the speed's \"1×\").",
1200
+ "description": "An icon file name before the label, saying what the label is a value of (the speed's \"1×\").\nWithout a `label` the trigger is this icon alone, in a square; `accessible-label` names it.",
1201
1201
  "attribute": "leading-icon"
1202
1202
  },
1203
1203
  {
@@ -1320,7 +1320,7 @@
1320
1320
  "text": "string"
1321
1321
  },
1322
1322
  "default": "''",
1323
- "description": "An icon file name before the label, saying what the label is a value of (the speed's \"1×\")."
1323
+ "description": "An icon file name before the label, saying what the label is a value of (the speed's \"1×\").\nWithout a `label` the trigger is this icon alone, in a square; `accessible-label` names it."
1324
1324
  },
1325
1325
  {
1326
1326
  "name": "disabled",
@@ -4078,6 +4078,124 @@
4078
4078
  }
4079
4079
  ]
4080
4080
  },
4081
+ {
4082
+ "kind": "javascript-module",
4083
+ "path": "src/components/content/log-viewer/log-viewer.ts",
4084
+ "declarations": [
4085
+ {
4086
+ "kind": "class",
4087
+ "name": "LintjeLogViewer",
4088
+ "tagName": "lintje-log-viewer",
4089
+ "customElement": true,
4090
+ "description": "`<lintje-log-viewer>` — log lines in a tile, oldest first, that follow the newest while live.\n\nThe host holds the filter (level, search term, \"alleen treffers\") and the chosen line, keeps\nthem in the URL and sends only the lines that match; the view, the following and the cleared\nview are the element's own. It finds the hits of the term itself and steps through them. It\nnever guesses: a line without a level has no badge. Lines without time, level or source are\ndrawn as plain output. A danger action is the host's to confirm.\n\nEvents: `lintje-log-filter-change` `{ level, search, onlyHits }`, `lintje-log-select`\n`string | null` (the chosen line), `lintje-log-action` `string` (one of `actions`),\n`lintje-log-retry`.",
4091
+ "superclass": {
4092
+ "name": "LintjeContentTileElement"
4093
+ },
4094
+ "members": [
4095
+ {
4096
+ "kind": "field",
4097
+ "name": "mode",
4098
+ "type": {
4099
+ "text": "'light' | 'dark'"
4100
+ },
4101
+ "attribute": "mode",
4102
+ "inheritedFrom": {
4103
+ "name": "LintjeElement"
4104
+ }
4105
+ },
4106
+ {
4107
+ "kind": "field",
4108
+ "name": "span",
4109
+ "type": {
4110
+ "text": "number"
4111
+ },
4112
+ "description": "Columns of the 12-column grid; default one.",
4113
+ "attribute": "span",
4114
+ "reflects": true,
4115
+ "inheritedFrom": {
4116
+ "name": "LintjeGridItemElement"
4117
+ }
4118
+ },
4119
+ {
4120
+ "kind": "field",
4121
+ "name": "data",
4122
+ "type": {
4123
+ "text": "LogViewerData"
4124
+ }
4125
+ }
4126
+ ],
4127
+ "methods": [],
4128
+ "attributes": [
4129
+ {
4130
+ "name": "mode",
4131
+ "fieldName": "mode",
4132
+ "type": {
4133
+ "text": "'light' | 'dark'"
4134
+ }
4135
+ },
4136
+ {
4137
+ "name": "span",
4138
+ "fieldName": "span",
4139
+ "type": {
4140
+ "text": "number"
4141
+ },
4142
+ "description": "Columns of the 12-column grid; default one."
4143
+ }
4144
+ ],
4145
+ "events": [
4146
+ {
4147
+ "name": "lintje-log-action",
4148
+ "type": {
4149
+ "text": "CustomEvent<event.detail>"
4150
+ }
4151
+ },
4152
+ {
4153
+ "name": "lintje-log-filter-change",
4154
+ "type": {
4155
+ "text": "CustomEvent<next>"
4156
+ }
4157
+ },
4158
+ {
4159
+ "name": "lintje-log-retry",
4160
+ "type": {
4161
+ "text": "CustomEvent"
4162
+ }
4163
+ },
4164
+ {
4165
+ "name": "lintje-log-select",
4166
+ "type": {
4167
+ "text": "CustomEvent<id>"
4168
+ }
4169
+ }
4170
+ ],
4171
+ "slots": [],
4172
+ "draws": [
4173
+ "lintje-announcement",
4174
+ "lintje-badge",
4175
+ "lintje-button",
4176
+ "lintje-code",
4177
+ "lintje-find",
4178
+ "lintje-highlight",
4179
+ "lintje-icon-button",
4180
+ "lintje-menu-button",
4181
+ "lintje-segmented",
4182
+ "lintje-select",
4183
+ "lintje-skeleton",
4184
+ "lintje-tile"
4185
+ ]
4186
+ }
4187
+ ],
4188
+ "exports": [
4189
+ {
4190
+ "kind": "custom-element-definition",
4191
+ "name": "lintje-log-viewer",
4192
+ "declaration": {
4193
+ "name": "LintjeLogViewer",
4194
+ "module": "src/components/content/log-viewer/log-viewer.ts"
4195
+ }
4196
+ }
4197
+ ]
4198
+ },
4081
4199
  {
4082
4200
  "kind": "javascript-module",
4083
4201
  "path": "src/components/content/prose/prose.ts",