@walkeros/explorer 4.8.0 → 4.8.1-next-1792019907609

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.
@@ -337,13 +337,10 @@ function Card({
337
337
  }
338
338
 
339
339
  // src/design/components/atoms/InstallCommand.tsx
340
- import {
341
- useEffect,
342
- useId,
343
- useRef,
344
- useState
345
- } from "react";
346
- import { Fragment as Fragment4, jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
340
+ import { useId } from "react";
341
+
342
+ // src/design/components/atoms/useCopy.ts
343
+ import { useEffect, useRef, useState } from "react";
347
344
  var CONFIRM_MS = 1400;
348
345
  async function copyText(text) {
349
346
  try {
@@ -353,13 +350,7 @@ async function copyText(text) {
353
350
  return false;
354
351
  }
355
352
  }
356
- function InstallCommand({
357
- command = "npm i -g @walkeros/cli",
358
- className,
359
- "aria-describedby": describedBy,
360
- ...rest
361
- }) {
362
- const hintId = useId();
353
+ function useCopy() {
363
354
  const [state, setState] = useState("idle");
364
355
  const mounted = useRef(true);
365
356
  const timer = useRef(void 0);
@@ -370,13 +361,31 @@ function InstallCommand({
370
361
  clearTimeout(timer.current);
371
362
  };
372
363
  }, []);
373
- const copy = async () => {
374
- const copied = await copyText(command);
364
+ const copy = async (text) => {
365
+ const copied = await copyText(text);
375
366
  if (!mounted.current) return;
376
367
  clearTimeout(timer.current);
377
368
  setState(copied ? "done" : "failed");
378
369
  if (copied) timer.current = setTimeout(() => setState("idle"), CONFIRM_MS);
379
370
  };
371
+ return [
372
+ state,
373
+ (text) => {
374
+ void copy(text);
375
+ }
376
+ ];
377
+ }
378
+
379
+ // src/design/components/atoms/InstallCommand.tsx
380
+ import { Fragment as Fragment4, jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
381
+ function InstallCommand({
382
+ command = "npm i -g @walkeros/cli",
383
+ className,
384
+ "aria-describedby": describedBy,
385
+ ...rest
386
+ }) {
387
+ const hintId = useId();
388
+ const [state, copy] = useCopy();
380
389
  return /* @__PURE__ */ jsxs6(Fragment4, { children: [
381
390
  /* @__PURE__ */ jsxs6(
382
391
  "button",
@@ -385,9 +394,7 @@ function InstallCommand({
385
394
  "aria-describedby": describedBy ? `${hintId} ${describedBy}` : hintId,
386
395
  type: "button",
387
396
  className: cx("elb-cmd", className),
388
- onClick: () => {
389
- void copy();
390
- },
397
+ onClick: () => copy(command),
391
398
  children: [
392
399
  /* @__PURE__ */ jsxs6("span", { children: [
393
400
  /* @__PURE__ */ jsxs6("span", { className: "elb-cmd__prompt", "aria-hidden": "true", children: [
@@ -740,8 +747,233 @@ function BrowserFrame({
740
747
  ] });
741
748
  }
742
749
 
750
+ // src/design/components/molecules/EventLog.tsx
751
+ import {
752
+ Fragment as Fragment8,
753
+ useState as useState2
754
+ } from "react";
755
+
756
+ // src/design/components/atoms/CodeTokens.tsx
757
+ import { Fragment as Fragment7, jsx as jsx21 } from "react/jsx-runtime";
758
+ function CodeTokens({
759
+ tokens,
760
+ active = false
761
+ }) {
762
+ return /* @__PURE__ */ jsx21(Fragment7, { children: tokens.map((token, index) => /* @__PURE__ */ jsx21(
763
+ "span",
764
+ {
765
+ className: cx(
766
+ "elb-viz-tok",
767
+ `elb-viz-tok--${token.kind}`,
768
+ active && token.mark && `elb-viz-tok--mark-${token.mark}`
769
+ ),
770
+ children: token.t
771
+ },
772
+ index
773
+ )) });
774
+ }
775
+
776
+ // src/design/components/codeTokens.ts
777
+ function tok(t, kind, mark) {
778
+ return mark ? { t, kind, mark } : { t, kind };
779
+ }
780
+
781
+ // src/design/components/molecules/EventLog.tsx
782
+ import { Fragment as Fragment9, jsx as jsx22, jsxs as jsxs16 } from "react/jsx-runtime";
783
+ var SECTIONS = [
784
+ "data",
785
+ "context",
786
+ "globals",
787
+ "consent",
788
+ "user",
789
+ "nested"
790
+ ];
791
+ var VIEWS = [
792
+ ["fields", "Fields"],
793
+ ["json", "JSON"]
794
+ ];
795
+ var COPY = {
796
+ idle: { label: "Copy", icon: "copy" },
797
+ done: { label: "Copied", icon: "check" },
798
+ failed: { label: "Copy failed", icon: "warning" }
799
+ };
800
+ var isGroup = (value) => typeof value === "object" && value !== null;
801
+ function timeOf(timestamp) {
802
+ if (typeof timestamp !== "number") return null;
803
+ const date = new Date(timestamp);
804
+ if (Number.isNaN(date.getTime())) return null;
805
+ const clock = [date.getHours(), date.getMinutes(), date.getSeconds()].map((part) => String(part).padStart(2, "0")).join(":");
806
+ return { iso: date.toISOString(), clock };
807
+ }
808
+ function valueToken(value) {
809
+ if (typeof value === "string") return tok(value, "str");
810
+ if (typeof value === "number" || typeof value === "boolean")
811
+ return tok(String(value), "num");
812
+ return tok(String(JSON.stringify(value)), "text");
813
+ }
814
+ function fieldRows(section, group) {
815
+ return Object.entries(group).map(([key, value]) => {
816
+ if (section === "context" && Array.isArray(value) && value.length === 2)
817
+ return { key, value: valueToken(value[0]), sub: `order ${value[1]}` };
818
+ if (section === "consent" && typeof value === "boolean")
819
+ return { key, value: tok(value ? "granted" : "denied", "str") };
820
+ return { key, value: valueToken(value) };
821
+ });
822
+ }
823
+ var JSON_TOKEN = /("(?:[^"\\]|\\.)*")(\s*:)?|-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?|\b(?:true|false|null)\b|[{}[\],]/g;
824
+ function jsonTokens(line) {
825
+ const tokens = [];
826
+ let last = 0;
827
+ for (const match of line.matchAll(JSON_TOKEN)) {
828
+ const [text, quoted, colon] = match;
829
+ const at = match.index ?? 0;
830
+ if (at > last) tokens.push(tok(line.slice(last, at), "text"));
831
+ if (quoted && colon) tokens.push(tok(quoted, "key"), tok(colon, "punct"));
832
+ else if (quoted) tokens.push(tok(quoted, "str"));
833
+ else tokens.push(tok(text, /^[{}[\],]$/.test(text) ? "punct" : "num"));
834
+ last = at + text.length;
835
+ }
836
+ if (last < line.length) tokens.push(tok(line.slice(last), "text"));
837
+ return tokens;
838
+ }
839
+ function EventName({ event }) {
840
+ const { name, entity, action } = event;
841
+ if (!entity || !action || name !== `${entity} ${action}`) return /* @__PURE__ */ jsx22(Fragment9, { children: name });
842
+ return /* @__PURE__ */ jsxs16(Fragment9, { children: [
843
+ /* @__PURE__ */ jsx22("span", { className: "elb-event-log__entity", children: entity }),
844
+ " ",
845
+ /* @__PURE__ */ jsx22("span", { className: "elb-event-log__action", children: action })
846
+ ] });
847
+ }
848
+ function Fields({ event }) {
849
+ const fields = new Map(Object.entries(event));
850
+ return /* @__PURE__ */ jsx22("div", { className: "elb-event-log__sections", children: SECTIONS.map((section) => {
851
+ const group = fields.get(section);
852
+ const rows = isGroup(group) ? fieldRows(section, group) : [];
853
+ if (rows.length === 0 && section !== "consent") return null;
854
+ return /* @__PURE__ */ jsxs16("div", { className: "elb-event-log__section", children: [
855
+ /* @__PURE__ */ jsx22("span", { className: "elb-event-log__label", children: section }),
856
+ rows.length === 0 ? /* @__PURE__ */ jsx22("span", { className: "elb-event-log__field elb-event-log__sub", children: "none" }) : /* @__PURE__ */ jsx22("dl", { className: "elb-event-log__fields", children: rows.map(({ key, value, sub }) => /* @__PURE__ */ jsxs16("div", { className: "elb-event-log__field", children: [
857
+ /* @__PURE__ */ jsx22("dt", { children: /* @__PURE__ */ jsx22(CodeTokens, { tokens: [tok(key, "key")] }) }),
858
+ /* @__PURE__ */ jsxs16("dd", { children: [
859
+ /* @__PURE__ */ jsx22(CodeTokens, { tokens: [value] }),
860
+ sub && /* @__PURE__ */ jsx22("span", { className: "elb-event-log__sub", children: sub })
861
+ ] })
862
+ ] }, key)) })
863
+ ] }, section);
864
+ }) });
865
+ }
866
+ function Json({ text }) {
867
+ return /* @__PURE__ */ jsx22("div", { className: "elb-event-log__json", children: text.split("\n").map((line, index) => /* @__PURE__ */ jsxs16(Fragment8, { children: [
868
+ /* @__PURE__ */ jsx22(CodeTokens, { tokens: jsonTokens(line) }),
869
+ "\n"
870
+ ] }, index)) });
871
+ }
872
+ function EventLog({
873
+ records,
874
+ selectedSeq,
875
+ onSelect,
876
+ onClear,
877
+ emptyText = "Click, scroll or load something tagged on the page and its events show up here.",
878
+ className,
879
+ ...rest
880
+ }) {
881
+ const [view, setView] = useState2("fields");
882
+ const [copyState, copy] = useCopy();
883
+ const newest = records[records.length - 1];
884
+ const selected = records.find((record) => record.seq === selectedSeq) ?? newest;
885
+ const json = selected ? JSON.stringify(selected.event, null, 2) : "";
886
+ return /* @__PURE__ */ jsxs16("div", { ...rest, className: cx("elb-event-log", className), children: [
887
+ /* @__PURE__ */ jsxs16("div", { className: "elb-event-log__bar", children: [
888
+ /* @__PURE__ */ jsx22("span", { className: "elb-event-log__title", children: "Events" }),
889
+ /* @__PURE__ */ jsx22("span", { className: "elb-event-log__count", children: records.length }),
890
+ onClear && records.length > 0 && /* @__PURE__ */ jsx22(
891
+ Button,
892
+ {
893
+ variant: "secondary",
894
+ className: "elb-event-log__button elb-event-log__clear",
895
+ onClick: onClear,
896
+ children: "Clear"
897
+ }
898
+ )
899
+ ] }),
900
+ selected === void 0 || newest === void 0 ? /* @__PURE__ */ jsxs16("div", { className: "elb-event-log__empty", children: [
901
+ /* @__PURE__ */ jsx22("p", { className: "elb-event-log__empty-title", children: "No events yet" }),
902
+ /* @__PURE__ */ jsx22("p", { className: "elb-event-log__empty-text", children: emptyText })
903
+ ] }) : /* @__PURE__ */ jsxs16("div", { className: "elb-event-log__body", children: [
904
+ /* @__PURE__ */ jsx22("ul", { className: "elb-event-log__list", children: [...records].reverse().map(({ seq, event }) => {
905
+ const time = timeOf(event.timestamp);
906
+ return /* @__PURE__ */ jsx22("li", { children: /* @__PURE__ */ jsxs16(
907
+ "button",
908
+ {
909
+ type: "button",
910
+ className: "elb-event-log__row",
911
+ "aria-pressed": seq === selected.seq,
912
+ disabled: !onSelect,
913
+ onClick: () => onSelect?.(seq === newest.seq ? null : seq),
914
+ children: [
915
+ /* @__PURE__ */ jsxs16("span", { className: "elb-event-log__seq", children: [
916
+ "#",
917
+ seq
918
+ ] }),
919
+ /* @__PURE__ */ jsx22("span", { className: "elb-event-log__name", children: /* @__PURE__ */ jsx22(EventName, { event }) }),
920
+ event.trigger && /* @__PURE__ */ jsx22(InlineCode, { className: "elb-event-log__trigger", children: event.trigger }),
921
+ time && /* @__PURE__ */ jsx22("time", { className: "elb-event-log__time", dateTime: time.iso, children: time.clock })
922
+ ]
923
+ }
924
+ ) }, seq);
925
+ }) }),
926
+ /* @__PURE__ */ jsxs16("div", { className: "elb-event-log__detail", "data-theme": "dark", children: [
927
+ /* @__PURE__ */ jsxs16("div", { className: "elb-event-log__head", children: [
928
+ /* @__PURE__ */ jsxs16("div", { className: "elb-event-log__summary", children: [
929
+ /* @__PURE__ */ jsx22("span", { className: "elb-event-log__detail-name", children: /* @__PURE__ */ jsx22(EventName, { event: selected.event }) }),
930
+ /* @__PURE__ */ jsx22("span", { className: "elb-event-log__meta", children: [
931
+ `#${selected.seq}`,
932
+ selected.event.trigger,
933
+ timeOf(selected.event.timestamp)?.clock
934
+ ].filter(Boolean).join(" \xB7 ") })
935
+ ] }),
936
+ /* @__PURE__ */ jsx22(
937
+ "div",
938
+ {
939
+ className: "elb-event-log__views",
940
+ role: "group",
941
+ "aria-label": "View",
942
+ children: VIEWS.map(([id, label]) => /* @__PURE__ */ jsx22(
943
+ "button",
944
+ {
945
+ type: "button",
946
+ className: "elb-event-log__view",
947
+ "aria-pressed": view === id,
948
+ onClick: () => setView(id),
949
+ children: label
950
+ },
951
+ id
952
+ ))
953
+ }
954
+ ),
955
+ /* @__PURE__ */ jsxs16(
956
+ Button,
957
+ {
958
+ variant: "secondary",
959
+ className: "elb-event-log__button",
960
+ onClick: () => copy(json),
961
+ children: [
962
+ /* @__PURE__ */ jsx22(Icon, { name: COPY[copyState].icon, size: 12 }),
963
+ COPY[copyState].label
964
+ ]
965
+ }
966
+ ),
967
+ /* @__PURE__ */ jsx22("span", { className: "elb-event-log__status", role: "status", children: copyState === "idle" ? "" : COPY[copyState].label })
968
+ ] }),
969
+ view === "fields" ? /* @__PURE__ */ jsx22(Fields, { event: selected.event }) : /* @__PURE__ */ jsx22(Json, { text: json })
970
+ ] })
971
+ ] })
972
+ ] });
973
+ }
974
+
743
975
  // src/design/components/molecules/QuickstartSteps.tsx
744
- import { jsx as jsx21, jsxs as jsxs16 } from "react/jsx-runtime";
976
+ import { jsx as jsx23, jsxs as jsxs17 } from "react/jsx-runtime";
745
977
  var ARROWS = [
746
978
  {
747
979
  kind: "wave",
@@ -759,12 +991,12 @@ var ARROWS = [
759
991
  }
760
992
  ];
761
993
  function Arrow({ kind, paths }) {
762
- return /* @__PURE__ */ jsx21(
994
+ return /* @__PURE__ */ jsx23(
763
995
  "li",
764
996
  {
765
997
  className: cx("elb-quickstart__arrow", `elb-quickstart__arrow--${kind}`),
766
998
  "aria-hidden": "true",
767
- children: /* @__PURE__ */ jsx21(
999
+ children: /* @__PURE__ */ jsx23(
768
1000
  "svg",
769
1001
  {
770
1002
  width: "76",
@@ -775,7 +1007,7 @@ function Arrow({ kind, paths }) {
775
1007
  strokeWidth: "2.2",
776
1008
  strokeLinecap: "round",
777
1009
  strokeLinejoin: "round",
778
- children: paths.map((d) => /* @__PURE__ */ jsx21("path", { d }, d))
1010
+ children: paths.map((d) => /* @__PURE__ */ jsx23("path", { d }, d))
779
1011
  }
780
1012
  )
781
1013
  }
@@ -787,18 +1019,18 @@ function QuickstartSteps({
787
1019
  className,
788
1020
  ...rest
789
1021
  }) {
790
- return /* @__PURE__ */ jsxs16("div", { ...rest, className: cx("elb-quickstart", className), children: [
791
- /* @__PURE__ */ jsx21("ol", { className: "elb-quickstart__steps", children: steps.flatMap((step, index) => {
792
- const item = /* @__PURE__ */ jsxs16("li", { className: "elb-quickstart__step", children: [
793
- /* @__PURE__ */ jsxs16("div", { className: "elb-quickstart__head", children: [
794
- /* @__PURE__ */ jsx21("span", { className: "elb-quickstart__num", "aria-hidden": "true", children: index + 1 }),
795
- /* @__PURE__ */ jsx21("h3", { className: "elb-quickstart__title", children: step.title })
1022
+ return /* @__PURE__ */ jsxs17("div", { ...rest, className: cx("elb-quickstart", className), children: [
1023
+ /* @__PURE__ */ jsx23("ol", { className: "elb-quickstart__steps", children: steps.flatMap((step, index) => {
1024
+ const item = /* @__PURE__ */ jsxs17("li", { className: "elb-quickstart__step", children: [
1025
+ /* @__PURE__ */ jsxs17("div", { className: "elb-quickstart__head", children: [
1026
+ /* @__PURE__ */ jsx23("span", { className: "elb-quickstart__num", "aria-hidden": "true", children: index + 1 }),
1027
+ /* @__PURE__ */ jsx23("h3", { className: "elb-quickstart__title", children: step.title })
796
1028
  ] }),
797
- /* @__PURE__ */ jsx21("p", { className: "elb-quickstart__copy", children: step.text })
1029
+ /* @__PURE__ */ jsx23("p", { className: "elb-quickstart__copy", children: step.text })
798
1030
  ] }, step.title);
799
1031
  return index < steps.length - 1 ? [
800
1032
  item,
801
- /* @__PURE__ */ jsx21(
1033
+ /* @__PURE__ */ jsx23(
802
1034
  Arrow,
803
1035
  {
804
1036
  ...ARROWS[index % ARROWS.length]
@@ -812,14 +1044,14 @@ function QuickstartSteps({
812
1044
  }
813
1045
 
814
1046
  // src/design/components/layout/Section.tsx
815
- import { jsx as jsx22 } from "react/jsx-runtime";
1047
+ import { jsx as jsx24 } from "react/jsx-runtime";
816
1048
  function Section({
817
1049
  children,
818
1050
  tone = "default",
819
1051
  className,
820
1052
  ...rest
821
1053
  }) {
822
- return /* @__PURE__ */ jsx22(
1054
+ return /* @__PURE__ */ jsx24(
823
1055
  "section",
824
1056
  {
825
1057
  ...rest,
@@ -828,13 +1060,13 @@ function Section({
828
1060
  tone === "alt" && "elb-section--alt",
829
1061
  className
830
1062
  ),
831
- children: /* @__PURE__ */ jsx22("div", { className: "elb-section__inner", children })
1063
+ children: /* @__PURE__ */ jsx24("div", { className: "elb-section__inner", children })
832
1064
  }
833
1065
  );
834
1066
  }
835
1067
 
836
1068
  // src/design/components/layout/CardGrid.tsx
837
- import { jsx as jsx23 } from "react/jsx-runtime";
1069
+ import { jsx as jsx25 } from "react/jsx-runtime";
838
1070
  function CardGrid({
839
1071
  children,
840
1072
  min,
@@ -842,7 +1074,7 @@ function CardGrid({
842
1074
  className,
843
1075
  ...rest
844
1076
  }) {
845
- return /* @__PURE__ */ jsx23(
1077
+ return /* @__PURE__ */ jsx25(
846
1078
  "div",
847
1079
  {
848
1080
  ...rest,
@@ -858,7 +1090,7 @@ function CardGrid({
858
1090
  }
859
1091
 
860
1092
  // src/design/components/layout/Split.tsx
861
- import { jsx as jsx24, jsxs as jsxs17 } from "react/jsx-runtime";
1093
+ import { jsx as jsx26, jsxs as jsxs18 } from "react/jsx-runtime";
862
1094
  function Split({
863
1095
  start,
864
1096
  end,
@@ -866,7 +1098,7 @@ function Split({
866
1098
  className,
867
1099
  ...rest
868
1100
  }) {
869
- return /* @__PURE__ */ jsxs17(
1101
+ return /* @__PURE__ */ jsxs18(
870
1102
  "div",
871
1103
  {
872
1104
  ...rest,
@@ -876,15 +1108,15 @@ function Split({
876
1108
  className
877
1109
  ),
878
1110
  children: [
879
- /* @__PURE__ */ jsx24("div", { className: "elb-split__start", children: start }),
880
- /* @__PURE__ */ jsx24("div", { className: "elb-split__end", children: end })
1111
+ /* @__PURE__ */ jsx26("div", { className: "elb-split__start", children: start }),
1112
+ /* @__PURE__ */ jsx26("div", { className: "elb-split__end", children: end })
881
1113
  ]
882
1114
  }
883
1115
  );
884
1116
  }
885
1117
 
886
1118
  // src/design/components/layout/Cluster.tsx
887
- import { jsx as jsx25 } from "react/jsx-runtime";
1119
+ import { jsx as jsx27 } from "react/jsx-runtime";
888
1120
  function Cluster({
889
1121
  children,
890
1122
  gap = "actions",
@@ -893,7 +1125,7 @@ function Cluster({
893
1125
  className,
894
1126
  ...rest
895
1127
  }) {
896
- return /* @__PURE__ */ jsx25(
1128
+ return /* @__PURE__ */ jsx27(
897
1129
  "div",
898
1130
  {
899
1131
  ...rest,
@@ -910,7 +1142,7 @@ function Cluster({
910
1142
  }
911
1143
 
912
1144
  // src/design/components/layout/Hero.tsx
913
- import { jsx as jsx26, jsxs as jsxs18 } from "react/jsx-runtime";
1145
+ import { jsx as jsx28, jsxs as jsxs19 } from "react/jsx-runtime";
914
1146
  function Hero({
915
1147
  eyebrow,
916
1148
  title,
@@ -922,8 +1154,8 @@ function Hero({
922
1154
  className,
923
1155
  ...rest
924
1156
  }) {
925
- return /* @__PURE__ */ jsx26("section", { ...rest, className: cx("elb-hero", className), children: /* @__PURE__ */ jsxs18("div", { className: "elb-hero__inner", children: [
926
- /* @__PURE__ */ jsx26(
1157
+ return /* @__PURE__ */ jsx28("section", { ...rest, className: cx("elb-hero", className), children: /* @__PURE__ */ jsxs19("div", { className: "elb-hero__inner", children: [
1158
+ /* @__PURE__ */ jsx28(
927
1159
  SectionHeading,
928
1160
  {
929
1161
  level: 1,
@@ -933,14 +1165,14 @@ function Hero({
933
1165
  lead
934
1166
  }
935
1167
  ),
936
- /* @__PURE__ */ jsx26("div", { className: "elb-hero__actions", children: actions }),
937
- proof !== void 0 && /* @__PURE__ */ jsx26("div", { className: "elb-hero__proof", children: proof }),
938
- children !== void 0 && /* @__PURE__ */ jsx26("div", { className: "elb-hero__demo", children })
1168
+ /* @__PURE__ */ jsx28("div", { className: "elb-hero__actions", children: actions }),
1169
+ proof !== void 0 && /* @__PURE__ */ jsx28("div", { className: "elb-hero__proof", children: proof }),
1170
+ children !== void 0 && /* @__PURE__ */ jsx28("div", { className: "elb-hero__demo", children })
939
1171
  ] }) });
940
1172
  }
941
1173
 
942
1174
  // src/design/components/viz/DestinationMappingViz.tsx
943
- import { useState as useState2 } from "react";
1175
+ import { useState as useState3 } from "react";
944
1176
 
945
1177
  // src/design/components/viz/data/destination-mapping.ts
946
1178
  var GENERATED_ID = "\u2026";
@@ -1307,58 +1539,6 @@ var MAPPING_EVENTS = [
1307
1539
  }
1308
1540
  ];
1309
1541
 
1310
- // src/design/components/viz/parts/CodeTokens.tsx
1311
- import { Fragment as Fragment7, jsx as jsx27, jsxs as jsxs19 } from "react/jsx-runtime";
1312
- function CodeTokens({
1313
- tokens,
1314
- active = false
1315
- }) {
1316
- return /* @__PURE__ */ jsx27(Fragment7, { children: tokens.map((token, index) => /* @__PURE__ */ jsx27(
1317
- "span",
1318
- {
1319
- className: cx(
1320
- "elb-viz-tok",
1321
- `elb-viz-tok--${token.kind}`,
1322
- active && token.mark && `elb-viz-tok--mark-${token.mark}`
1323
- ),
1324
- children: token.t
1325
- },
1326
- index
1327
- )) });
1328
- }
1329
- function CodeLine({ number, bar, className, children }) {
1330
- return /* @__PURE__ */ jsxs19("div", { className: cx("elb-viz-line", className), children: [
1331
- /* @__PURE__ */ jsx27(
1332
- "span",
1333
- {
1334
- className: cx("elb-viz-line__bar", bar && `elb-viz-line__bar--${bar}`),
1335
- "aria-hidden": "true"
1336
- }
1337
- ),
1338
- number !== void 0 && /* @__PURE__ */ jsx27("span", { className: "elb-viz-line__number", children: number }),
1339
- /* @__PURE__ */ jsx27("span", { className: "elb-viz-line__code", children })
1340
- ] });
1341
- }
1342
-
1343
- // src/design/components/viz/parts/tokens.ts
1344
- function tok(t, kind, mark) {
1345
- return mark ? { t, kind, mark } : { t, kind };
1346
- }
1347
- function typedLength(tokens) {
1348
- return tokens.reduce((length, token) => length + token.t.length, 0);
1349
- }
1350
- function truncate(tokens, n) {
1351
- const out = [];
1352
- let left = n;
1353
- for (const token of tokens) {
1354
- if (left <= 0) break;
1355
- const t = token.t.slice(0, left);
1356
- out.push({ ...token, t });
1357
- left -= t.length;
1358
- }
1359
- return out;
1360
- }
1361
-
1362
1542
  // src/design/components/viz/parts/format.ts
1363
1543
  var ELIDED = "{\u2026}";
1364
1544
  function isRecord(value) {
@@ -1410,13 +1590,17 @@ function formatCall(record) {
1410
1590
  ];
1411
1591
  }
1412
1592
  function formatElb(event) {
1413
- const name = literal(`${event.entity} ${event.action}`);
1414
- const data = literal(event.data);
1415
- if (!event.nested?.length) return `elb(${name}, ${data})`;
1416
- const nested = event.nested.map(
1417
- (entity) => `{ entity: ${literal(entity.entity)}, \u2026 }`
1418
- );
1419
- return `elb({ name: ${name}, data: ${data}, nested: [${nested.join(", ")}] })`;
1593
+ const fields = [
1594
+ `name: ${literal(`${event.entity} ${event.action}`)}`,
1595
+ `data: ${literal(event.data)}`
1596
+ ];
1597
+ if (event.nested?.length) {
1598
+ const nested = event.nested.map(
1599
+ (entity) => `{ entity: ${literal(entity.entity)}, \u2026 }`
1600
+ );
1601
+ fields.push(`nested: [${nested.join(", ")}]`);
1602
+ }
1603
+ return `elb({ ${fields.join(", ")} })`;
1420
1604
  }
1421
1605
  var TOKEN = /"[^"]*"|'[^']*'|\d+(?:\.\d+)?|[A-Za-z_]\w*|\s+|./g;
1422
1606
  var CALLS = /^(?:gtag|fbq|elb|ttq|track|amplitude|revenue|Revenue|set[A-Z]\w*)$/;
@@ -1446,38 +1630,38 @@ function tokenizeCode(line, highlight) {
1446
1630
  }
1447
1631
 
1448
1632
  // src/design/components/viz/parts/VizFrame.tsx
1449
- import { jsx as jsx28 } from "react/jsx-runtime";
1633
+ import { jsx as jsx29 } from "react/jsx-runtime";
1450
1634
  function VizFrame({
1451
1635
  variant,
1452
1636
  children,
1453
1637
  className,
1454
1638
  ...rest
1455
1639
  }) {
1456
- return /* @__PURE__ */ jsx28(
1640
+ return /* @__PURE__ */ jsx29(
1457
1641
  "div",
1458
1642
  {
1459
1643
  ...rest,
1460
1644
  "data-theme": "dark",
1461
1645
  className: cx("elb-viz", `elb-viz--${variant}`, className),
1462
- children: /* @__PURE__ */ jsx28("div", { className: "elb-viz__body", children })
1646
+ children: /* @__PURE__ */ jsx29("div", { className: "elb-viz__body", children })
1463
1647
  }
1464
1648
  );
1465
1649
  }
1466
1650
 
1467
1651
  // src/design/components/viz/DestinationMappingViz.tsx
1468
- import { jsx as jsx29, jsxs as jsxs20 } from "react/jsx-runtime";
1652
+ import { jsx as jsx30, jsxs as jsxs20 } from "react/jsx-runtime";
1469
1653
  function DestinationMappingViz({
1470
1654
  initialEvent = 0,
1471
1655
  caption = MAPPING_CAPTION,
1472
1656
  ...rest
1473
1657
  }) {
1474
- const [index, setIndex] = useState2(initialEvent);
1658
+ const [index, setIndex] = useState3(initialEvent);
1475
1659
  const event = MAPPING_EVENTS[index];
1476
1660
  const name = `${event.entity} ${event.action}`;
1477
- return /* @__PURE__ */ jsx29(VizFrame, { ...rest, variant: "mapping", children: /* @__PURE__ */ jsxs20("div", { className: "elb-viz-mapping", children: [
1661
+ return /* @__PURE__ */ jsx30(VizFrame, { ...rest, variant: "mapping", children: /* @__PURE__ */ jsxs20("div", { className: "elb-viz-mapping", children: [
1478
1662
  /* @__PURE__ */ jsxs20("div", { className: "elb-viz-mapping__pick", children: [
1479
- /* @__PURE__ */ jsx29("div", { className: "elb-viz-mapping__label", children: "Pick an event" }),
1480
- /* @__PURE__ */ jsx29("div", { className: "elb-viz-mapping__chips", children: MAPPING_EVENTS.map((item, position) => /* @__PURE__ */ jsxs20(
1663
+ /* @__PURE__ */ jsx30("div", { className: "elb-viz-mapping__label", children: "Pick an event" }),
1664
+ /* @__PURE__ */ jsx30("div", { className: "elb-viz-mapping__chips", children: MAPPING_EVENTS.map((item, position) => /* @__PURE__ */ jsxs20(
1481
1665
  "button",
1482
1666
  {
1483
1667
  type: "button",
@@ -1489,21 +1673,21 @@ function DestinationMappingViz({
1489
1673
  ),
1490
1674
  onClick: () => setIndex(position),
1491
1675
  children: [
1492
- /* @__PURE__ */ jsx29("span", { className: "elb-viz-mapping__chip-entity", children: item.entity }),
1493
- /* @__PURE__ */ jsx29("span", { className: "elb-viz-mapping__chip-action", children: item.action })
1676
+ /* @__PURE__ */ jsx30("span", { className: "elb-viz-mapping__chip-entity", children: item.entity }),
1677
+ /* @__PURE__ */ jsx30("span", { className: "elb-viz-mapping__chip-action", children: item.action })
1494
1678
  ]
1495
1679
  },
1496
1680
  `${item.entity} ${item.action}`
1497
1681
  )) })
1498
1682
  ] }),
1499
- /* @__PURE__ */ jsx29("div", { className: "elb-viz-mapping__event", children: /* @__PURE__ */ jsx29(CodeTokens, { tokens: tokenizeCode(formatElb(event), name), active: true }) }),
1683
+ /* @__PURE__ */ jsx30("div", { className: "elb-viz-mapping__event", children: /* @__PURE__ */ jsx30(CodeTokens, { tokens: tokenizeCode(formatElb(event), name), active: true }) }),
1500
1684
  /* @__PURE__ */ jsxs20("div", { className: "elb-viz-mapping__body", children: [
1501
- /* @__PURE__ */ jsx29("div", { className: "elb-viz-mapping__comment", children: "// same event, four destinations, zero app code touched" }),
1502
- /* @__PURE__ */ jsx29("div", { className: "elb-viz-mapping__cards", children: event.destinations.map((destination) => /* @__PURE__ */ jsxs20("div", { className: "elb-viz-mapping__card", children: [
1503
- /* @__PURE__ */ jsx29("span", { className: "elb-viz-mapping__name", children: destination.label }),
1685
+ /* @__PURE__ */ jsx30("div", { className: "elb-viz-mapping__comment", children: "// same event, four destinations, zero app code touched" }),
1686
+ /* @__PURE__ */ jsx30("div", { className: "elb-viz-mapping__cards", children: event.destinations.map((destination) => /* @__PURE__ */ jsxs20("div", { className: "elb-viz-mapping__card", children: [
1687
+ /* @__PURE__ */ jsx30("span", { className: "elb-viz-mapping__name", children: destination.label }),
1504
1688
  /* @__PURE__ */ jsxs20("div", { className: "elb-viz-mapping__row", children: [
1505
- /* @__PURE__ */ jsx29("span", { className: "elb-viz-mapping__tag", children: "mapping" }),
1506
- /* @__PURE__ */ jsx29("span", { className: "elb-viz-mapping__rule", children: /* @__PURE__ */ jsx29(
1689
+ /* @__PURE__ */ jsx30("span", { className: "elb-viz-mapping__tag", children: "mapping" }),
1690
+ /* @__PURE__ */ jsx30("span", { className: "elb-viz-mapping__rule", children: /* @__PURE__ */ jsx30(
1507
1691
  CodeTokens,
1508
1692
  {
1509
1693
  tokens: tokenizeCode(
@@ -1519,8 +1703,8 @@ function DestinationMappingViz({
1519
1703
  ) })
1520
1704
  ] }),
1521
1705
  /* @__PURE__ */ jsxs20("div", { className: "elb-viz-mapping__row elb-viz-mapping__row--sends", children: [
1522
- /* @__PURE__ */ jsx29("span", { className: "elb-viz-mapping__tag", children: "sends" }),
1523
- /* @__PURE__ */ jsx29("div", { className: "elb-viz-mapping__calls", children: destination.calls.flatMap((call) => formatCall(call)).map((line, position) => /* @__PURE__ */ jsx29("div", { className: "elb-viz-mapping__line", children: /* @__PURE__ */ jsx29(
1706
+ /* @__PURE__ */ jsx30("span", { className: "elb-viz-mapping__tag", children: "sends" }),
1707
+ /* @__PURE__ */ jsx30("div", { className: "elb-viz-mapping__calls", children: destination.calls.flatMap((call) => formatCall(call)).map((line, position) => /* @__PURE__ */ jsx30("div", { className: "elb-viz-mapping__line", children: /* @__PURE__ */ jsx30(
1524
1708
  CodeTokens,
1525
1709
  {
1526
1710
  tokens: tokenizeCode(line, destination.rule.name),
@@ -1530,12 +1714,12 @@ function DestinationMappingViz({
1530
1714
  ] })
1531
1715
  ] }, destination.id)) })
1532
1716
  ] }),
1533
- caption !== "" && /* @__PURE__ */ jsx29("p", { className: "elb-viz-mapping__caption", children: caption })
1717
+ caption !== "" && /* @__PURE__ */ jsx30("p", { className: "elb-viz-mapping__caption", children: caption })
1534
1718
  ] }) });
1535
1719
  }
1536
1720
 
1537
1721
  // src/design/components/viz/HeroTaggingViz.tsx
1538
- import { useEffect as useEffect3, useRef as useRef2, useState as useState4 } from "react";
1722
+ import { useEffect as useEffect3, useRef as useRef2, useState as useState5 } from "react";
1539
1723
 
1540
1724
  // src/design/components/viz/parts/timeline.ts
1541
1725
  function clamp(x) {
@@ -1545,6 +1729,22 @@ function ease(x) {
1545
1729
  return x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2;
1546
1730
  }
1547
1731
 
1732
+ // src/design/components/viz/parts/tokens.ts
1733
+ function typedLength(tokens) {
1734
+ return tokens.reduce((length, token) => length + token.t.length, 0);
1735
+ }
1736
+ function truncate(tokens, n) {
1737
+ const out = [];
1738
+ let left = n;
1739
+ for (const token of tokens) {
1740
+ if (left <= 0) break;
1741
+ const t = token.t.slice(0, left);
1742
+ out.push({ ...token, t });
1743
+ left -= t.length;
1744
+ }
1745
+ return out;
1746
+ }
1747
+
1548
1748
  // src/design/components/viz/data/hero.ts
1549
1749
  var HERO_ARTICLES = [
1550
1750
  { kicker: "Tech", title: "Return of the Bug", thumb: "bug" },
@@ -1805,8 +2005,24 @@ function heroFrame(t) {
1805
2005
  };
1806
2006
  }
1807
2007
 
2008
+ // src/design/components/viz/parts/CodeLine.tsx
2009
+ import { jsx as jsx31, jsxs as jsxs21 } from "react/jsx-runtime";
2010
+ function CodeLine({ number, bar, className, children }) {
2011
+ return /* @__PURE__ */ jsxs21("div", { className: cx("elb-viz-line", className), children: [
2012
+ /* @__PURE__ */ jsx31(
2013
+ "span",
2014
+ {
2015
+ className: cx("elb-viz-line__bar", bar && `elb-viz-line__bar--${bar}`),
2016
+ "aria-hidden": "true"
2017
+ }
2018
+ ),
2019
+ number !== void 0 && /* @__PURE__ */ jsx31("span", { className: "elb-viz-line__number", children: number }),
2020
+ /* @__PURE__ */ jsx31("span", { className: "elb-viz-line__code", children })
2021
+ ] });
2022
+ }
2023
+
1808
2024
  // src/design/components/viz/parts/EventsTable.tsx
1809
- import { Fragment as Fragment8 } from "react";
2025
+ import { Fragment as Fragment10 } from "react";
1810
2026
 
1811
2027
  // src/design/components/viz/parts/style.ts
1812
2028
  function vizStyle(vars) {
@@ -1815,38 +2031,38 @@ function vizStyle(vars) {
1815
2031
  }
1816
2032
 
1817
2033
  // src/design/components/viz/parts/EventsTable.tsx
1818
- import { jsx as jsx30, jsxs as jsxs21 } from "react/jsx-runtime";
2034
+ import { jsx as jsx32, jsxs as jsxs22 } from "react/jsx-runtime";
1819
2035
  var SKELETON_ROWS = 6;
1820
2036
  function EventsTable({ rows }) {
1821
2037
  const skeletons = Math.max(0, SKELETON_ROWS - rows.length);
1822
- return /* @__PURE__ */ jsxs21("div", { className: "elb-viz-table", children: [
1823
- /* @__PURE__ */ jsxs21("div", { className: "elb-viz-table__head", children: [
1824
- /* @__PURE__ */ jsxs21("span", { className: "elb-viz-table__query", children: [
1825
- /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__keyword", children: "SELECT" }),
2038
+ return /* @__PURE__ */ jsxs22("div", { className: "elb-viz-table", children: [
2039
+ /* @__PURE__ */ jsxs22("div", { className: "elb-viz-table__head", children: [
2040
+ /* @__PURE__ */ jsxs22("span", { className: "elb-viz-table__query", children: [
2041
+ /* @__PURE__ */ jsx32("span", { className: "elb-viz-table__keyword", children: "SELECT" }),
1826
2042
  " *",
1827
2043
  " ",
1828
- /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__keyword", children: "FROM" }),
2044
+ /* @__PURE__ */ jsx32("span", { className: "elb-viz-table__keyword", children: "FROM" }),
1829
2045
  " ",
1830
- /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__source", children: "walkerOS.events" })
2046
+ /* @__PURE__ */ jsx32("span", { className: "elb-viz-table__source", children: "walkerOS.events" })
1831
2047
  ] }),
1832
- /* @__PURE__ */ jsxs21("span", { className: "elb-viz-table__live", children: [
1833
- /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__dot", "aria-hidden": "true" }),
2048
+ /* @__PURE__ */ jsxs22("span", { className: "elb-viz-table__live", children: [
2049
+ /* @__PURE__ */ jsx32("span", { className: "elb-viz-table__dot", "aria-hidden": "true" }),
1834
2050
  "live"
1835
2051
  ] })
1836
2052
  ] }),
1837
- /* @__PURE__ */ jsx30("div", { className: "elb-viz-table__body", children: /* @__PURE__ */ jsx30("div", { className: "elb-viz-table__scroll", children: /* @__PURE__ */ jsxs21("div", { className: "elb-viz-table__rows", children: [
1838
- /* @__PURE__ */ jsxs21("div", { className: "elb-viz-table__row elb-viz-table__row--header", children: [
1839
- /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__cell elb-viz-table__cell--n", children: "Row" }),
1840
- /* @__PURE__ */ jsxs21("span", { className: "elb-viz-table__cell", children: [
2053
+ /* @__PURE__ */ jsx32("div", { className: "elb-viz-table__body", children: /* @__PURE__ */ jsx32("div", { className: "elb-viz-table__scroll", children: /* @__PURE__ */ jsxs22("div", { className: "elb-viz-table__rows", children: [
2054
+ /* @__PURE__ */ jsxs22("div", { className: "elb-viz-table__row elb-viz-table__row--header", children: [
2055
+ /* @__PURE__ */ jsx32("span", { className: "elb-viz-table__cell elb-viz-table__cell--n", children: "Row" }),
2056
+ /* @__PURE__ */ jsxs22("span", { className: "elb-viz-table__cell", children: [
1841
2057
  "name",
1842
- /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__type", children: "STRING" })
2058
+ /* @__PURE__ */ jsx32("span", { className: "elb-viz-table__type", children: "STRING" })
1843
2059
  ] }),
1844
- /* @__PURE__ */ jsxs21("span", { className: "elb-viz-table__cell", children: [
2060
+ /* @__PURE__ */ jsxs22("span", { className: "elb-viz-table__cell", children: [
1845
2061
  "data",
1846
- /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__type", children: "JSON" })
2062
+ /* @__PURE__ */ jsx32("span", { className: "elb-viz-table__type", children: "JSON" })
1847
2063
  ] })
1848
2064
  ] }),
1849
- rows.map((row, index) => /* @__PURE__ */ jsxs21(
2065
+ rows.map((row, index) => /* @__PURE__ */ jsxs22(
1850
2066
  "div",
1851
2067
  {
1852
2068
  className: "elb-viz-table__row elb-viz-table__row--event",
@@ -1856,15 +2072,15 @@ function EventsTable({ rows }) {
1856
2072
  "--elb-viz-row-shift": (1 - ease(clamp(row.age / 500))) * -80
1857
2073
  }),
1858
2074
  children: [
1859
- /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__cell elb-viz-table__cell--n", children: index + 1 }),
1860
- /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__cell", children: row.name }),
1861
- /* @__PURE__ */ jsxs21("span", { className: "elb-viz-table__cell elb-viz-table__json", children: [
2075
+ /* @__PURE__ */ jsx32("span", { className: "elb-viz-table__cell elb-viz-table__cell--n", children: index + 1 }),
2076
+ /* @__PURE__ */ jsx32("span", { className: "elb-viz-table__cell", children: row.name }),
2077
+ /* @__PURE__ */ jsxs22("span", { className: "elb-viz-table__cell elb-viz-table__json", children: [
1862
2078
  "{",
1863
- Object.entries(row.data).map(([key, value], position) => /* @__PURE__ */ jsxs21(Fragment8, { children: [
2079
+ Object.entries(row.data).map(([key, value], position) => /* @__PURE__ */ jsxs22(Fragment10, { children: [
1864
2080
  position === 0 ? '"' : ',"',
1865
- /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__json-key", children: key }),
2081
+ /* @__PURE__ */ jsx32("span", { className: "elb-viz-table__json-key", children: key }),
1866
2082
  '":"',
1867
- /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__json-value", children: value }),
2083
+ /* @__PURE__ */ jsx32("span", { className: "elb-viz-table__json-value", children: value }),
1868
2084
  '"'
1869
2085
  ] }, key)),
1870
2086
  "}"
@@ -1873,15 +2089,15 @@ function EventsTable({ rows }) {
1873
2089
  },
1874
2090
  row.key
1875
2091
  )),
1876
- Array.from({ length: skeletons }, (_, index) => /* @__PURE__ */ jsxs21(
2092
+ Array.from({ length: skeletons }, (_, index) => /* @__PURE__ */ jsxs22(
1877
2093
  "div",
1878
2094
  {
1879
2095
  className: "elb-viz-table__row elb-viz-table__row--skeleton",
1880
2096
  "aria-hidden": "true",
1881
2097
  children: [
1882
- /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__cell elb-viz-table__cell--n", children: rows.length + index + 1 }),
1883
- /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__cell", children: /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__bar" }) }),
1884
- /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__cell", children: /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__bar" }) })
2098
+ /* @__PURE__ */ jsx32("span", { className: "elb-viz-table__cell elb-viz-table__cell--n", children: rows.length + index + 1 }),
2099
+ /* @__PURE__ */ jsx32("span", { className: "elb-viz-table__cell", children: /* @__PURE__ */ jsx32("span", { className: "elb-viz-table__bar" }) }),
2100
+ /* @__PURE__ */ jsx32("span", { className: "elb-viz-table__cell", children: /* @__PURE__ */ jsx32("span", { className: "elb-viz-table__bar" }) })
1885
2101
  ]
1886
2102
  },
1887
2103
  `skeleton-${index}`
@@ -1891,10 +2107,10 @@ function EventsTable({ rows }) {
1891
2107
  }
1892
2108
 
1893
2109
  // src/design/components/viz/parts/hooks.ts
1894
- import { useEffect as useEffect2, useState as useState3 } from "react";
2110
+ import { useEffect as useEffect2, useState as useState4 } from "react";
1895
2111
  var REDUCED_MOTION = "(prefers-reduced-motion: reduce)";
1896
2112
  function useInView(ref, threshold) {
1897
- const [inView, setInView] = useState3(false);
2113
+ const [inView, setInView] = useState4(false);
1898
2114
  useEffect2(() => {
1899
2115
  const element = ref.current;
1900
2116
  if (!element || typeof IntersectionObserver === "undefined") {
@@ -1917,7 +2133,7 @@ function useInView(ref, threshold) {
1917
2133
  return inView;
1918
2134
  }
1919
2135
  function useReducedMotion() {
1920
- const [reduced, setReduced] = useState3(false);
2136
+ const [reduced, setReduced] = useState4(false);
1921
2137
  useEffect2(() => {
1922
2138
  if (typeof window.matchMedia !== "function") return void 0;
1923
2139
  const media = window.matchMedia(REDUCED_MOTION);
@@ -1930,14 +2146,14 @@ function useReducedMotion() {
1930
2146
  }
1931
2147
 
1932
2148
  // src/design/components/viz/parts/Pill.tsx
1933
- import { jsx as jsx31 } from "react/jsx-runtime";
2149
+ import { jsx as jsx33 } from "react/jsx-runtime";
1934
2150
  function Pill({
1935
2151
  part,
1936
2152
  variant = "solid",
1937
2153
  className,
1938
2154
  children
1939
2155
  }) {
1940
- return /* @__PURE__ */ jsx31(
2156
+ return /* @__PURE__ */ jsx33(
1941
2157
  "span",
1942
2158
  {
1943
2159
  className: cx(
@@ -1952,7 +2168,7 @@ function Pill({
1952
2168
  }
1953
2169
 
1954
2170
  // src/design/components/viz/parts/Thumb.tsx
1955
- import { Fragment as Fragment9, jsx as jsx32, jsxs as jsxs22 } from "react/jsx-runtime";
2171
+ import { Fragment as Fragment11, jsx as jsx34, jsxs as jsxs23 } from "react/jsx-runtime";
1956
2172
  var BUG_LINES = [
1957
2173
  "M36 46 L28 42",
1958
2174
  "M35 54 L27 56",
@@ -1970,9 +2186,9 @@ var BUG_SPOTS = [
1970
2186
  [67, 56, 2.8]
1971
2187
  ];
1972
2188
  function Bug() {
1973
- return /* @__PURE__ */ jsxs22(Fragment9, { children: [
1974
- /* @__PURE__ */ jsx32("rect", { className: "elb-viz-thumb__ground", width: 112, height: 86 }),
1975
- /* @__PURE__ */ jsx32(
2189
+ return /* @__PURE__ */ jsxs23(Fragment11, { children: [
2190
+ /* @__PURE__ */ jsx34("rect", { className: "elb-viz-thumb__ground", width: 112, height: 86 }),
2191
+ /* @__PURE__ */ jsx34(
1976
2192
  "ellipse",
1977
2193
  {
1978
2194
  className: "elb-viz-thumb__shadow",
@@ -1982,18 +2198,18 @@ function Bug() {
1982
2198
  ry: 6
1983
2199
  }
1984
2200
  ),
1985
- /* @__PURE__ */ jsx32(
2201
+ /* @__PURE__ */ jsx34(
1986
2202
  "g",
1987
2203
  {
1988
2204
  className: "elb-viz-thumb__legs",
1989
2205
  strokeWidth: 2.4,
1990
2206
  strokeLinecap: "round",
1991
- children: BUG_LINES.map((d) => /* @__PURE__ */ jsx32("path", { d }, d))
2207
+ children: BUG_LINES.map((d) => /* @__PURE__ */ jsx34("path", { d }, d))
1992
2208
  }
1993
2209
  ),
1994
- /* @__PURE__ */ jsx32("circle", { className: "elb-viz-thumb__ink", cx: 42, cy: 16, r: 2 }),
1995
- /* @__PURE__ */ jsx32("circle", { className: "elb-viz-thumb__ink", cx: 70, cy: 16, r: 2 }),
1996
- /* @__PURE__ */ jsx32(
2210
+ /* @__PURE__ */ jsx34("circle", { className: "elb-viz-thumb__ink", cx: 42, cy: 16, r: 2 }),
2211
+ /* @__PURE__ */ jsx34("circle", { className: "elb-viz-thumb__ink", cx: 70, cy: 16, r: 2 }),
2212
+ /* @__PURE__ */ jsx34(
1997
2213
  "ellipse",
1998
2214
  {
1999
2215
  className: "elb-viz-thumb__ink",
@@ -2003,9 +2219,9 @@ function Bug() {
2003
2219
  ry: 7.5
2004
2220
  }
2005
2221
  ),
2006
- /* @__PURE__ */ jsx32("circle", { className: "elb-viz-thumb__eye", cx: 52, cy: 29, r: 1.6 }),
2007
- /* @__PURE__ */ jsx32("circle", { className: "elb-viz-thumb__eye", cx: 60, cy: 29, r: 1.6 }),
2008
- /* @__PURE__ */ jsx32(
2222
+ /* @__PURE__ */ jsx34("circle", { className: "elb-viz-thumb__eye", cx: 52, cy: 29, r: 1.6 }),
2223
+ /* @__PURE__ */ jsx34("circle", { className: "elb-viz-thumb__eye", cx: 60, cy: 29, r: 1.6 }),
2224
+ /* @__PURE__ */ jsx34(
2009
2225
  "ellipse",
2010
2226
  {
2011
2227
  className: "elb-viz-thumb__shell",
@@ -2015,8 +2231,8 @@ function Bug() {
2015
2231
  ry: 18
2016
2232
  }
2017
2233
  ),
2018
- /* @__PURE__ */ jsx32("path", { className: "elb-viz-thumb__seam", d: "M56 33 L56 68", strokeWidth: 2 }),
2019
- BUG_SPOTS.map(([x, y, r]) => /* @__PURE__ */ jsx32(
2234
+ /* @__PURE__ */ jsx34("path", { className: "elb-viz-thumb__seam", d: "M56 33 L56 68", strokeWidth: 2 }),
2235
+ BUG_SPOTS.map(([x, y, r]) => /* @__PURE__ */ jsx34(
2020
2236
  "circle",
2021
2237
  {
2022
2238
  className: "elb-viz-thumb__ink",
@@ -2026,7 +2242,7 @@ function Bug() {
2026
2242
  },
2027
2243
  `${x}-${y}`
2028
2244
  )),
2029
- /* @__PURE__ */ jsx32(
2245
+ /* @__PURE__ */ jsx34(
2030
2246
  "path",
2031
2247
  {
2032
2248
  className: "elb-viz-thumb__shine",
@@ -2038,9 +2254,9 @@ function Bug() {
2038
2254
  ] });
2039
2255
  }
2040
2256
  function Tech() {
2041
- return /* @__PURE__ */ jsxs22(Fragment9, { children: [
2042
- /* @__PURE__ */ jsx32("rect", { className: "elb-viz-thumb__ground", width: 112, height: 86 }),
2043
- /* @__PURE__ */ jsx32(
2257
+ return /* @__PURE__ */ jsxs23(Fragment11, { children: [
2258
+ /* @__PURE__ */ jsx34("rect", { className: "elb-viz-thumb__ground", width: 112, height: 86 }),
2259
+ /* @__PURE__ */ jsx34(
2044
2260
  "rect",
2045
2261
  {
2046
2262
  className: "elb-viz-thumb__badge",
@@ -2051,8 +2267,8 @@ function Tech() {
2051
2267
  rx: 8
2052
2268
  }
2053
2269
  ),
2054
- /* @__PURE__ */ jsx32("circle", { className: "elb-viz-thumb__dot", cx: 47, cy: 52, r: 3.2 }),
2055
- /* @__PURE__ */ jsx32(
2270
+ /* @__PURE__ */ jsx34("circle", { className: "elb-viz-thumb__dot", cx: 47, cy: 52, r: 3.2 }),
2271
+ /* @__PURE__ */ jsx34(
2056
2272
  "path",
2057
2273
  {
2058
2274
  className: "elb-viz-thumb__wave",
@@ -2061,7 +2277,7 @@ function Tech() {
2061
2277
  strokeLinecap: "round"
2062
2278
  }
2063
2279
  ),
2064
- /* @__PURE__ */ jsx32(
2280
+ /* @__PURE__ */ jsx34(
2065
2281
  "path",
2066
2282
  {
2067
2283
  className: "elb-viz-thumb__wave",
@@ -2073,9 +2289,9 @@ function Tech() {
2073
2289
  ] });
2074
2290
  }
2075
2291
  function Food() {
2076
- return /* @__PURE__ */ jsxs22(Fragment9, { children: [
2077
- /* @__PURE__ */ jsx32("rect", { className: "elb-viz-thumb__ground", width: 112, height: 86 }),
2078
- /* @__PURE__ */ jsx32(
2292
+ return /* @__PURE__ */ jsxs23(Fragment11, { children: [
2293
+ /* @__PURE__ */ jsx34("rect", { className: "elb-viz-thumb__ground", width: 112, height: 86 }),
2294
+ /* @__PURE__ */ jsx34(
2079
2295
  "ellipse",
2080
2296
  {
2081
2297
  className: "elb-viz-thumb__plate",
@@ -2085,7 +2301,7 @@ function Food() {
2085
2301
  ry: 10
2086
2302
  }
2087
2303
  ),
2088
- /* @__PURE__ */ jsx32(
2304
+ /* @__PURE__ */ jsx34(
2089
2305
  "ellipse",
2090
2306
  {
2091
2307
  className: "elb-viz-thumb__loaf",
@@ -2095,7 +2311,7 @@ function Food() {
2095
2311
  ry: 19
2096
2312
  }
2097
2313
  ),
2098
- /* @__PURE__ */ jsx32(
2314
+ /* @__PURE__ */ jsx34(
2099
2315
  "ellipse",
2100
2316
  {
2101
2317
  className: "elb-viz-thumb__crust",
@@ -2105,7 +2321,7 @@ function Food() {
2105
2321
  ry: 13
2106
2322
  }
2107
2323
  ),
2108
- /* @__PURE__ */ jsx32(
2324
+ /* @__PURE__ */ jsx34(
2109
2325
  "path",
2110
2326
  {
2111
2327
  className: "elb-viz-thumb__score",
@@ -2114,7 +2330,7 @@ function Food() {
2114
2330
  strokeLinecap: "round"
2115
2331
  }
2116
2332
  ),
2117
- /* @__PURE__ */ jsx32(
2333
+ /* @__PURE__ */ jsx34(
2118
2334
  "path",
2119
2335
  {
2120
2336
  className: "elb-viz-thumb__score",
@@ -2126,7 +2342,7 @@ function Food() {
2126
2342
  ] });
2127
2343
  }
2128
2344
  function Thumb({ kind }) {
2129
- return /* @__PURE__ */ jsx32(
2345
+ return /* @__PURE__ */ jsx34(
2130
2346
  "svg",
2131
2347
  {
2132
2348
  className: cx("elb-viz-thumb", `elb-viz-thumb--${kind}`),
@@ -2134,13 +2350,13 @@ function Thumb({ kind }) {
2134
2350
  preserveAspectRatio: "xMidYMid slice",
2135
2351
  "aria-hidden": "true",
2136
2352
  focusable: "false",
2137
- children: kind === "bug" ? /* @__PURE__ */ jsx32(Bug, {}) : kind === "tech" ? /* @__PURE__ */ jsx32(Tech, {}) : /* @__PURE__ */ jsx32(Food, {})
2353
+ children: kind === "bug" ? /* @__PURE__ */ jsx34(Bug, {}) : kind === "tech" ? /* @__PURE__ */ jsx34(Tech, {}) : /* @__PURE__ */ jsx34(Food, {})
2138
2354
  }
2139
2355
  );
2140
2356
  }
2141
2357
 
2142
2358
  // src/design/components/viz/HeroTaggingViz.tsx
2143
- import { Fragment as Fragment10, jsx as jsx33, jsxs as jsxs23 } from "react/jsx-runtime";
2359
+ import { Fragment as Fragment12, jsx as jsx35, jsxs as jsxs24 } from "react/jsx-runtime";
2144
2360
  var MAX_STEP = 64;
2145
2361
  function HeroTaggingViz({
2146
2362
  playing = true,
@@ -2151,7 +2367,7 @@ function HeroTaggingViz({
2151
2367
  const paneRef = useRef2(null);
2152
2368
  const inView = useInView(paneRef, 0);
2153
2369
  const reduced = useReducedMotion();
2154
- const [time, setTime] = useState4(startAt);
2370
+ const [time, setTime] = useState5(startAt);
2155
2371
  const animate = playing && inView && !reduced;
2156
2372
  useEffect3(() => {
2157
2373
  if (!animate) return void 0;
@@ -2167,22 +2383,22 @@ function HeroTaggingViz({
2167
2383
  return () => cancelAnimationFrame(frame);
2168
2384
  }, [animate, speed]);
2169
2385
  const { article, lines, fade: fade2, caretOn, card, cursor, rows } = heroFrame(time);
2170
- return /* @__PURE__ */ jsx33(VizFrame, { ...rest, variant: "hero", children: /* @__PURE__ */ jsxs23("div", { className: "elb-viz-hero", children: [
2171
- /* @__PURE__ */ jsxs23("div", { ref: paneRef, className: "elb-viz-hero__pane", children: [
2172
- /* @__PURE__ */ jsxs23("div", { className: "elb-viz-hero__bar", children: [
2173
- /* @__PURE__ */ jsxs23("span", { className: "elb-viz-hero__dots", "aria-hidden": "true", children: [
2174
- /* @__PURE__ */ jsx33("span", {}),
2175
- /* @__PURE__ */ jsx33("span", {}),
2176
- /* @__PURE__ */ jsx33("span", {})
2386
+ return /* @__PURE__ */ jsx35(VizFrame, { ...rest, variant: "hero", children: /* @__PURE__ */ jsxs24("div", { className: "elb-viz-hero", children: [
2387
+ /* @__PURE__ */ jsxs24("div", { ref: paneRef, className: "elb-viz-hero__pane", children: [
2388
+ /* @__PURE__ */ jsxs24("div", { className: "elb-viz-hero__bar", children: [
2389
+ /* @__PURE__ */ jsxs24("span", { className: "elb-viz-hero__dots", "aria-hidden": "true", children: [
2390
+ /* @__PURE__ */ jsx35("span", {}),
2391
+ /* @__PURE__ */ jsx35("span", {}),
2392
+ /* @__PURE__ */ jsx35("span", {})
2177
2393
  ] }),
2178
- /* @__PURE__ */ jsx33("span", { className: "elb-viz-hero__file", children: "ArticleTeaser.html" })
2394
+ /* @__PURE__ */ jsx35("span", { className: "elb-viz-hero__file", children: "ArticleTeaser.html" })
2179
2395
  ] }),
2180
- /* @__PURE__ */ jsx33(
2396
+ /* @__PURE__ */ jsx35(
2181
2397
  "div",
2182
2398
  {
2183
2399
  className: "elb-viz-hero__code",
2184
2400
  style: vizStyle({ "--elb-viz-fade": fade2 }),
2185
- children: lines.map((line) => /* @__PURE__ */ jsx33(
2401
+ children: lines.map((line) => /* @__PURE__ */ jsx35(
2186
2402
  CodeLine,
2187
2403
  {
2188
2404
  number: line.n,
@@ -2191,23 +2407,23 @@ function HeroTaggingViz({
2191
2407
  "elb-viz-hero__line",
2192
2408
  line.on && "elb-viz-hero__line--on"
2193
2409
  ),
2194
- children: line.caret === null ? /* @__PURE__ */ jsx33(CodeTokens, { tokens: line.tokens }) : /* @__PURE__ */ jsxs23(Fragment10, { children: [
2195
- /* @__PURE__ */ jsx33(CodeTokens, { tokens: line.tokens.slice(0, line.caret) }),
2196
- /* @__PURE__ */ jsx33(
2410
+ children: line.caret === null ? /* @__PURE__ */ jsx35(CodeTokens, { tokens: line.tokens }) : /* @__PURE__ */ jsxs24(Fragment12, { children: [
2411
+ /* @__PURE__ */ jsx35(CodeTokens, { tokens: line.tokens.slice(0, line.caret) }),
2412
+ /* @__PURE__ */ jsx35(
2197
2413
  "span",
2198
2414
  {
2199
2415
  className: "elb-viz-caret",
2200
2416
  style: vizStyle({ "--elb-viz-caret": caretOn ? 1 : 0 })
2201
2417
  }
2202
2418
  ),
2203
- /* @__PURE__ */ jsx33(CodeTokens, { tokens: line.tokens.slice(line.caret) })
2419
+ /* @__PURE__ */ jsx35(CodeTokens, { tokens: line.tokens.slice(line.caret) })
2204
2420
  ] })
2205
2421
  },
2206
2422
  line.id
2207
2423
  ))
2208
2424
  }
2209
2425
  ),
2210
- /* @__PURE__ */ jsx33("div", { className: "elb-viz-hero__stage", children: /* @__PURE__ */ jsxs23(
2426
+ /* @__PURE__ */ jsx35("div", { className: "elb-viz-hero__stage", children: /* @__PURE__ */ jsxs24(
2211
2427
  "div",
2212
2428
  {
2213
2429
  className: cx(
@@ -2219,13 +2435,13 @@ function HeroTaggingViz({
2219
2435
  "--elb-viz-card-offset": card.offset
2220
2436
  }),
2221
2437
  children: [
2222
- /* @__PURE__ */ jsxs23("div", { className: "elb-viz-hero__pills", children: [
2223
- card.entity && /* @__PURE__ */ jsx33(Pill, { part: "entity", children: "article" }),
2224
- card.impression && /* @__PURE__ */ jsx33(Pill, { part: "action", children: "impression" })
2438
+ /* @__PURE__ */ jsxs24("div", { className: "elb-viz-hero__pills", children: [
2439
+ card.entity && /* @__PURE__ */ jsx35(Pill, { part: "entity", children: "article" }),
2440
+ card.impression && /* @__PURE__ */ jsx35(Pill, { part: "action", children: "impression" })
2225
2441
  ] }),
2226
- /* @__PURE__ */ jsx33("div", { className: "elb-viz-hero__thumb", children: /* @__PURE__ */ jsx33(Thumb, { kind: article.thumb }) }),
2227
- /* @__PURE__ */ jsxs23("div", { className: "elb-viz-hero__text", children: [
2228
- /* @__PURE__ */ jsx33(
2442
+ /* @__PURE__ */ jsx35("div", { className: "elb-viz-hero__thumb", children: /* @__PURE__ */ jsx35(Thumb, { kind: article.thumb }) }),
2443
+ /* @__PURE__ */ jsxs24("div", { className: "elb-viz-hero__text", children: [
2444
+ /* @__PURE__ */ jsx35(
2229
2445
  "span",
2230
2446
  {
2231
2447
  className: cx(
@@ -2235,7 +2451,7 @@ function HeroTaggingViz({
2235
2451
  children: article.kicker
2236
2452
  }
2237
2453
  ),
2238
- /* @__PURE__ */ jsx33("span", { className: "elb-viz-hero__title", children: /* @__PURE__ */ jsx33(
2454
+ /* @__PURE__ */ jsx35("span", { className: "elb-viz-hero__title", children: /* @__PURE__ */ jsx35(
2239
2455
  "span",
2240
2456
  {
2241
2457
  className: cx(
@@ -2245,7 +2461,7 @@ function HeroTaggingViz({
2245
2461
  children: article.title
2246
2462
  }
2247
2463
  ) }),
2248
- /* @__PURE__ */ jsx33("div", { className: "elb-viz-hero__foot", children: /* @__PURE__ */ jsxs23(
2464
+ /* @__PURE__ */ jsx35("div", { className: "elb-viz-hero__foot", children: /* @__PURE__ */ jsxs24(
2249
2465
  "span",
2250
2466
  {
2251
2467
  className: cx(
@@ -2254,7 +2470,7 @@ function HeroTaggingViz({
2254
2470
  ),
2255
2471
  children: [
2256
2472
  "Open \u2192",
2257
- /* @__PURE__ */ jsxs23(
2473
+ /* @__PURE__ */ jsxs24(
2258
2474
  "span",
2259
2475
  {
2260
2476
  className: "elb-viz-hero__cursor",
@@ -2268,8 +2484,8 @@ function HeroTaggingViz({
2268
2484
  "--elb-viz-press": cursor.pressed ? 0.8 : 1
2269
2485
  }),
2270
2486
  children: [
2271
- /* @__PURE__ */ jsx33("span", { className: "elb-viz-hero__ring" }),
2272
- /* @__PURE__ */ jsx33("span", { className: "elb-viz-hero__pointer" })
2487
+ /* @__PURE__ */ jsx35("span", { className: "elb-viz-hero__ring" }),
2488
+ /* @__PURE__ */ jsx35("span", { className: "elb-viz-hero__pointer" })
2273
2489
  ]
2274
2490
  }
2275
2491
  )
@@ -2281,12 +2497,12 @@ function HeroTaggingViz({
2281
2497
  }
2282
2498
  ) })
2283
2499
  ] }),
2284
- /* @__PURE__ */ jsx33(EventsTable, { rows })
2500
+ /* @__PURE__ */ jsx35(EventsTable, { rows })
2285
2501
  ] }) });
2286
2502
  }
2287
2503
 
2288
2504
  // src/design/components/viz/ArticleTeaserTracking.tsx
2289
- import { useEffect as useEffect4, useRef as useRef3, useState as useState5 } from "react";
2505
+ import { useEffect as useEffect4, useRef as useRef3, useState as useState6 } from "react";
2290
2506
 
2291
2507
  // src/design/components/viz/data/article-teaser.ts
2292
2508
  var TEASER_ENTITY = "article";
@@ -2549,7 +2765,7 @@ function teaserAdvance(n) {
2549
2765
  }
2550
2766
 
2551
2767
  // src/design/components/viz/ArticleTeaserTracking.tsx
2552
- import { jsx as jsx34, jsxs as jsxs24 } from "react/jsx-runtime";
2768
+ import { jsx as jsx36, jsxs as jsxs25 } from "react/jsx-runtime";
2553
2769
  var FIRST_DELAY = 800;
2554
2770
  var JUMP_DELAY = 250;
2555
2771
  var SCROLL_DELAY = 400;
@@ -2562,7 +2778,7 @@ function TeaserCard({
2562
2778
  seen,
2563
2779
  ahead
2564
2780
  }) {
2565
- return /* @__PURE__ */ jsxs24(
2781
+ return /* @__PURE__ */ jsxs25(
2566
2782
  "div",
2567
2783
  {
2568
2784
  className: cx(
@@ -2571,9 +2787,9 @@ function TeaserCard({
2571
2787
  ahead && "elb-viz-teaser__card--ahead"
2572
2788
  ),
2573
2789
  children: [
2574
- /* @__PURE__ */ jsxs24("span", { className: "elb-viz-teaser__pills", children: [
2575
- /* @__PURE__ */ jsx34(Pill, { part: "entity", className: fade(seen.has("entity")), children: TEASER_ENTITY }),
2576
- /* @__PURE__ */ jsx34(
2790
+ /* @__PURE__ */ jsxs25("span", { className: "elb-viz-teaser__pills", children: [
2791
+ /* @__PURE__ */ jsx36(Pill, { part: "entity", className: fade(seen.has("entity")), children: TEASER_ENTITY }),
2792
+ /* @__PURE__ */ jsx36(
2577
2793
  Pill,
2578
2794
  {
2579
2795
  part: "property",
@@ -2583,14 +2799,14 @@ function TeaserCard({
2583
2799
  }
2584
2800
  )
2585
2801
  ] }),
2586
- /* @__PURE__ */ jsx34(
2802
+ /* @__PURE__ */ jsx36(
2587
2803
  PhotoPlaceholder,
2588
2804
  {
2589
2805
  tone: "viz",
2590
2806
  className: cx("elb-viz-teaser__photo", fade(seen.has("image")))
2591
2807
  }
2592
2808
  ),
2593
- /* @__PURE__ */ jsx34(
2809
+ /* @__PURE__ */ jsx36(
2594
2810
  "span",
2595
2811
  {
2596
2812
  className: cx(
@@ -2601,7 +2817,7 @@ function TeaserCard({
2601
2817
  children: article.kicker
2602
2818
  }
2603
2819
  ),
2604
- /* @__PURE__ */ jsx34(
2820
+ /* @__PURE__ */ jsx36(
2605
2821
  "span",
2606
2822
  {
2607
2823
  className: cx(
@@ -2612,7 +2828,7 @@ function TeaserCard({
2612
2828
  children: article.title
2613
2829
  }
2614
2830
  ),
2615
- /* @__PURE__ */ jsx34(
2831
+ /* @__PURE__ */ jsx36(
2616
2832
  "span",
2617
2833
  {
2618
2834
  className: cx(
@@ -2636,7 +2852,7 @@ function TeaserGroup({
2636
2852
  const globalsOn = seen.has(page.globalsEffect);
2637
2853
  const listOn = seen.has(page.listEffect);
2638
2854
  const reached = page.step <= current;
2639
- return /* @__PURE__ */ jsxs24(
2855
+ return /* @__PURE__ */ jsxs25(
2640
2856
  "div",
2641
2857
  {
2642
2858
  className: cx(
@@ -2645,7 +2861,7 @@ function TeaserGroup({
2645
2861
  !reached && !lead && "elb-viz-teaser__page--ahead"
2646
2862
  ),
2647
2863
  children: [
2648
- /* @__PURE__ */ jsx34("span", { className: "elb-viz-teaser__page-pill", children: /* @__PURE__ */ jsx34(
2864
+ /* @__PURE__ */ jsx36("span", { className: "elb-viz-teaser__page-pill", children: /* @__PURE__ */ jsx36(
2649
2865
  Pill,
2650
2866
  {
2651
2867
  part: "globals",
@@ -2653,7 +2869,7 @@ function TeaserGroup({
2653
2869
  children: `pagetype:${page.pagetype}`
2654
2870
  }
2655
2871
  ) }),
2656
- /* @__PURE__ */ jsxs24(
2872
+ /* @__PURE__ */ jsxs25(
2657
2873
  "div",
2658
2874
  {
2659
2875
  className: cx(
@@ -2661,14 +2877,14 @@ function TeaserGroup({
2661
2877
  listOn && "elb-viz-teaser__list--on"
2662
2878
  ),
2663
2879
  children: [
2664
- /* @__PURE__ */ jsxs24("div", { className: cx("elb-viz-teaser__list-head", fade(listOn)), children: [
2665
- /* @__PURE__ */ jsxs24("span", { className: "elb-viz-teaser__list-label", children: [
2666
- /* @__PURE__ */ jsx34("span", { className: "elb-viz-teaser__list-name", children: page.header }),
2667
- page.heading !== void 0 && /* @__PURE__ */ jsx34("span", { className: "elb-viz-teaser__list-heading", children: page.heading })
2880
+ /* @__PURE__ */ jsxs25("div", { className: cx("elb-viz-teaser__list-head", fade(listOn)), children: [
2881
+ /* @__PURE__ */ jsxs25("span", { className: "elb-viz-teaser__list-label", children: [
2882
+ /* @__PURE__ */ jsx36("span", { className: "elb-viz-teaser__list-name", children: page.header }),
2883
+ page.heading !== void 0 && /* @__PURE__ */ jsx36("span", { className: "elb-viz-teaser__list-heading", children: page.heading })
2668
2884
  ] }),
2669
- /* @__PURE__ */ jsx34(Pill, { part: "context", children: `list:${page.list}` })
2885
+ /* @__PURE__ */ jsx36(Pill, { part: "context", children: `list:${page.list}` })
2670
2886
  ] }),
2671
- /* @__PURE__ */ jsx34("div", { className: "elb-viz-teaser__cards", children: page.articles.map((article, index) => /* @__PURE__ */ jsx34(
2887
+ /* @__PURE__ */ jsx36("div", { className: "elb-viz-teaser__cards", children: page.articles.map((article, index) => /* @__PURE__ */ jsx36(
2672
2888
  TeaserCard,
2673
2889
  {
2674
2890
  article,
@@ -2694,11 +2910,11 @@ function ArticleTeaserTracking({
2694
2910
  const codeRef = useRef3(null);
2695
2911
  const inView = useInView(codeRef, 0.35);
2696
2912
  const reduced = useReducedMotion();
2697
- const [shown, setShown] = useState5(
2913
+ const [shown, setShown] = useState6(
2698
2914
  () => initialStep ? teaserStepEnd(initialStep) : 0
2699
2915
  );
2700
- const [delay, setDelay] = useState5(FIRST_DELAY);
2701
- const [pinned, setPinned] = useState5(null);
2916
+ const [delay, setDelay] = useState6(FIRST_DELAY);
2917
+ const [pinned, setPinned] = useState6(null);
2702
2918
  const playing = autoplay && inView && !reduced;
2703
2919
  const end = pinned === null ? TEASER_ITEMS.length : teaserStepEnd(pinned);
2704
2920
  useEffect4(() => {
@@ -2763,15 +2979,15 @@ function ArticleTeaserTracking({
2763
2979
  separated && "elb-viz-teaser__file--separated"
2764
2980
  );
2765
2981
  separated = true;
2766
- return /* @__PURE__ */ jsx34("div", { "data-line": index, className: lineClass, children: /* @__PURE__ */ jsxs24("div", { className: fileClass, children: [
2767
- /* @__PURE__ */ jsx34("span", { className: "elb-viz-teaser__file-name", children: item.name }),
2768
- /* @__PURE__ */ jsx34("span", { className: "elb-viz-teaser__file-level", children: item.level })
2982
+ return /* @__PURE__ */ jsx36("div", { "data-line": index, className: lineClass, children: /* @__PURE__ */ jsxs25("div", { className: fileClass, children: [
2983
+ /* @__PURE__ */ jsx36("span", { className: "elb-viz-teaser__file-name", children: item.name }),
2984
+ /* @__PURE__ */ jsx36("span", { className: "elb-viz-teaser__file-level", children: item.level })
2769
2985
  ] }) }, index);
2770
2986
  }
2771
2987
  lineNumber += 1;
2772
2988
  const reached = index < count;
2773
2989
  const isCurrent = index === count - 1 && item.effect !== void 0;
2774
- return /* @__PURE__ */ jsx34("div", { "data-line": index, className: lineClass, children: /* @__PURE__ */ jsx34(
2990
+ return /* @__PURE__ */ jsx36("div", { "data-line": index, className: lineClass, children: /* @__PURE__ */ jsx36(
2775
2991
  CodeLine,
2776
2992
  {
2777
2993
  number: lineNumber,
@@ -2780,13 +2996,13 @@ function ArticleTeaserTracking({
2780
2996
  "elb-viz-teaser__code",
2781
2997
  isCurrent && `elb-viz-teaser__code--current-${item.part ?? "plain"}`
2782
2998
  ),
2783
- children: /* @__PURE__ */ jsx34(CodeTokens, { tokens: item.tokens, active: reached })
2999
+ children: /* @__PURE__ */ jsx36(CodeTokens, { tokens: item.tokens, active: reached })
2784
3000
  }
2785
3001
  ) }, index);
2786
3002
  });
2787
- return /* @__PURE__ */ jsx34(VizFrame, { ...rest, variant: "teaser", children: /* @__PURE__ */ jsxs24("div", { className: "elb-viz-teaser", children: [
2788
- /* @__PURE__ */ jsxs24("div", { className: "elb-viz-teaser__header", children: [
2789
- /* @__PURE__ */ jsx34("div", { className: "elb-viz-teaser__steps", children: TEASER_STEPS.map(({ step, label }) => /* @__PURE__ */ jsxs24(
3003
+ return /* @__PURE__ */ jsx36(VizFrame, { ...rest, variant: "teaser", children: /* @__PURE__ */ jsxs25("div", { className: "elb-viz-teaser", children: [
3004
+ /* @__PURE__ */ jsxs25("div", { className: "elb-viz-teaser__header", children: [
3005
+ /* @__PURE__ */ jsx36("div", { className: "elb-viz-teaser__steps", children: TEASER_STEPS.map(({ step, label }) => /* @__PURE__ */ jsxs25(
2790
3006
  "button",
2791
3007
  {
2792
3008
  type: "button",
@@ -2799,18 +3015,18 @@ function ArticleTeaserTracking({
2799
3015
  ),
2800
3016
  onClick: () => jump(step),
2801
3017
  children: [
2802
- /* @__PURE__ */ jsx34("span", { className: "elb-viz-teaser__step-number", children: step }),
2803
- /* @__PURE__ */ jsx34("span", { children: label })
3018
+ /* @__PURE__ */ jsx36("span", { className: "elb-viz-teaser__step-number", children: step }),
3019
+ /* @__PURE__ */ jsx36("span", { children: label })
2804
3020
  ]
2805
3021
  },
2806
3022
  step
2807
3023
  )) }),
2808
- /* @__PURE__ */ jsx34("div", { className: "elb-viz-teaser__legend", children: /* @__PURE__ */ jsx34(EventLegend, {}) })
3024
+ /* @__PURE__ */ jsx36("div", { className: "elb-viz-teaser__legend", children: /* @__PURE__ */ jsx36(EventLegend, {}) })
2809
3025
  ] }),
2810
- /* @__PURE__ */ jsx34("p", { className: "elb-viz-teaser__caption", children: TEASER_CAPTIONS[current] }),
2811
- /* @__PURE__ */ jsxs24("div", { className: "elb-viz-teaser__body", children: [
2812
- /* @__PURE__ */ jsx34("div", { className: "elb-viz-teaser__pane", children: /* @__PURE__ */ jsx34("div", { ref: codeRef, className: "elb-viz-teaser__scroll", children: lines }) }),
2813
- /* @__PURE__ */ jsx34("div", { className: "elb-viz-teaser__pages", children: TEASER_PAGE_IDS.map((id, index) => /* @__PURE__ */ jsx34(
3026
+ /* @__PURE__ */ jsx36("p", { className: "elb-viz-teaser__caption", children: TEASER_CAPTIONS[current] }),
3027
+ /* @__PURE__ */ jsxs25("div", { className: "elb-viz-teaser__body", children: [
3028
+ /* @__PURE__ */ jsx36("div", { className: "elb-viz-teaser__pane", children: /* @__PURE__ */ jsx36("div", { ref: codeRef, className: "elb-viz-teaser__scroll", children: lines }) }),
3029
+ /* @__PURE__ */ jsx36("div", { className: "elb-viz-teaser__pages", children: TEASER_PAGE_IDS.map((id, index) => /* @__PURE__ */ jsx36(
2814
3030
  TeaserGroup,
2815
3031
  {
2816
3032
  page: TEASER_PAGES[id],
@@ -2834,6 +3050,7 @@ export {
2834
3050
  Cluster,
2835
3051
  DestinationMappingViz,
2836
3052
  EventLegend,
3053
+ EventLog,
2837
3054
  Eyebrow,
2838
3055
  FaqItem,
2839
3056
  FeatureItem,