@walkeros/explorer 4.8.0 → 4.9.0-next-1791925945414

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.
@@ -31,6 +31,7 @@ __export(components_exports, {
31
31
  Cluster: () => Cluster,
32
32
  DestinationMappingViz: () => DestinationMappingViz,
33
33
  EventLegend: () => EventLegend,
34
+ EventLog: () => EventLog,
34
35
  Eyebrow: () => Eyebrow,
35
36
  FaqItem: () => FaqItem,
36
37
  FeatureItem: () => FeatureItem,
@@ -390,8 +391,10 @@ function Card({
390
391
  }
391
392
 
392
393
  // src/design/components/atoms/InstallCommand.tsx
394
+ var import_react2 = require("react");
395
+
396
+ // src/design/components/atoms/useCopy.ts
393
397
  var import_react = require("react");
394
- var import_jsx_runtime10 = require("react/jsx-runtime");
395
398
  var CONFIRM_MS = 1400;
396
399
  async function copyText(text) {
397
400
  try {
@@ -401,13 +404,7 @@ async function copyText(text) {
401
404
  return false;
402
405
  }
403
406
  }
404
- function InstallCommand({
405
- command = "npm i -g @walkeros/cli",
406
- className,
407
- "aria-describedby": describedBy,
408
- ...rest
409
- }) {
410
- const hintId = (0, import_react.useId)();
407
+ function useCopy() {
411
408
  const [state, setState] = (0, import_react.useState)("idle");
412
409
  const mounted = (0, import_react.useRef)(true);
413
410
  const timer = (0, import_react.useRef)(void 0);
@@ -418,13 +415,31 @@ function InstallCommand({
418
415
  clearTimeout(timer.current);
419
416
  };
420
417
  }, []);
421
- const copy = async () => {
422
- const copied = await copyText(command);
418
+ const copy = async (text) => {
419
+ const copied = await copyText(text);
423
420
  if (!mounted.current) return;
424
421
  clearTimeout(timer.current);
425
422
  setState(copied ? "done" : "failed");
426
423
  if (copied) timer.current = setTimeout(() => setState("idle"), CONFIRM_MS);
427
424
  };
425
+ return [
426
+ state,
427
+ (text) => {
428
+ void copy(text);
429
+ }
430
+ ];
431
+ }
432
+
433
+ // src/design/components/atoms/InstallCommand.tsx
434
+ var import_jsx_runtime10 = require("react/jsx-runtime");
435
+ function InstallCommand({
436
+ command = "npm i -g @walkeros/cli",
437
+ className,
438
+ "aria-describedby": describedBy,
439
+ ...rest
440
+ }) {
441
+ const hintId = (0, import_react2.useId)();
442
+ const [state, copy] = useCopy();
428
443
  return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
429
444
  /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
430
445
  "button",
@@ -433,9 +448,7 @@ function InstallCommand({
433
448
  "aria-describedby": describedBy ? `${hintId} ${describedBy}` : hintId,
434
449
  type: "button",
435
450
  className: cx("elb-cmd", className),
436
- onClick: () => {
437
- void copy();
438
- },
451
+ onClick: () => copy(command),
439
452
  children: [
440
453
  /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { children: [
441
454
  /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: "elb-cmd__prompt", "aria-hidden": "true", children: [
@@ -609,7 +622,7 @@ function FeatureItem({
609
622
  }
610
623
 
611
624
  // src/design/components/molecules/FaqItem.tsx
612
- var import_react2 = require("react");
625
+ var import_react3 = require("react");
613
626
  var import_jsx_runtime16 = require("react/jsx-runtime");
614
627
  function FaqItem({
615
628
  question,
@@ -621,7 +634,7 @@ function FaqItem({
621
634
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("details", { ...rest, className: cx("elb-faq", className), children: [
622
635
  /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("summary", { className: "elb-faq__question", children: question }),
623
636
  /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "elb-faq__answer", children: parts.map(
624
- (part, index) => typeof part === "string" ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { children: part }, index) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_react2.Fragment, { children: part }, index)
637
+ (part, index) => typeof part === "string" ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { children: part }, index) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_react3.Fragment, { children: part }, index)
625
638
  ) })
626
639
  ] });
627
640
  }
@@ -786,8 +799,230 @@ function BrowserFrame({
786
799
  ] });
787
800
  }
788
801
 
789
- // src/design/components/molecules/QuickstartSteps.tsx
802
+ // src/design/components/molecules/EventLog.tsx
803
+ var import_react4 = require("react");
804
+
805
+ // src/design/components/atoms/CodeTokens.tsx
790
806
  var import_jsx_runtime21 = require("react/jsx-runtime");
807
+ function CodeTokens({
808
+ tokens,
809
+ active = false
810
+ }) {
811
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_jsx_runtime21.Fragment, { children: tokens.map((token, index) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
812
+ "span",
813
+ {
814
+ className: cx(
815
+ "elb-viz-tok",
816
+ `elb-viz-tok--${token.kind}`,
817
+ active && token.mark && `elb-viz-tok--mark-${token.mark}`
818
+ ),
819
+ children: token.t
820
+ },
821
+ index
822
+ )) });
823
+ }
824
+
825
+ // src/design/components/codeTokens.ts
826
+ function tok(t, kind, mark) {
827
+ return mark ? { t, kind, mark } : { t, kind };
828
+ }
829
+
830
+ // src/design/components/molecules/EventLog.tsx
831
+ var import_jsx_runtime22 = require("react/jsx-runtime");
832
+ var SECTIONS = [
833
+ "data",
834
+ "context",
835
+ "globals",
836
+ "consent",
837
+ "user",
838
+ "nested"
839
+ ];
840
+ var VIEWS = [
841
+ ["fields", "Fields"],
842
+ ["json", "JSON"]
843
+ ];
844
+ var COPY = {
845
+ idle: { label: "Copy", icon: "copy" },
846
+ done: { label: "Copied", icon: "check" },
847
+ failed: { label: "Copy failed", icon: "warning" }
848
+ };
849
+ var isGroup = (value) => typeof value === "object" && value !== null;
850
+ function timeOf(timestamp) {
851
+ if (typeof timestamp !== "number") return null;
852
+ const date = new Date(timestamp);
853
+ if (Number.isNaN(date.getTime())) return null;
854
+ const clock = [date.getHours(), date.getMinutes(), date.getSeconds()].map((part) => String(part).padStart(2, "0")).join(":");
855
+ return { iso: date.toISOString(), clock };
856
+ }
857
+ function valueToken(value) {
858
+ if (typeof value === "string") return tok(value, "str");
859
+ if (typeof value === "number" || typeof value === "boolean")
860
+ return tok(String(value), "num");
861
+ return tok(String(JSON.stringify(value)), "text");
862
+ }
863
+ function fieldRows(section, group) {
864
+ return Object.entries(group).map(([key, value]) => {
865
+ if (section === "context" && Array.isArray(value) && value.length === 2)
866
+ return { key, value: valueToken(value[0]), sub: `order ${value[1]}` };
867
+ if (section === "consent" && typeof value === "boolean")
868
+ return { key, value: tok(value ? "granted" : "denied", "str") };
869
+ return { key, value: valueToken(value) };
870
+ });
871
+ }
872
+ var JSON_TOKEN = /("(?:[^"\\]|\\.)*")(\s*:)?|-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?|\b(?:true|false|null)\b|[{}[\],]/g;
873
+ function jsonTokens(line) {
874
+ const tokens = [];
875
+ let last = 0;
876
+ for (const match of line.matchAll(JSON_TOKEN)) {
877
+ const [text, quoted, colon] = match;
878
+ const at = match.index ?? 0;
879
+ if (at > last) tokens.push(tok(line.slice(last, at), "text"));
880
+ if (quoted && colon) tokens.push(tok(quoted, "key"), tok(colon, "punct"));
881
+ else if (quoted) tokens.push(tok(quoted, "str"));
882
+ else tokens.push(tok(text, /^[{}[\],]$/.test(text) ? "punct" : "num"));
883
+ last = at + text.length;
884
+ }
885
+ if (last < line.length) tokens.push(tok(line.slice(last), "text"));
886
+ return tokens;
887
+ }
888
+ function EventName({ event }) {
889
+ const { name, entity, action } = event;
890
+ if (!entity || !action || name !== `${entity} ${action}`) return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_jsx_runtime22.Fragment, { children: name });
891
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jsx_runtime22.Fragment, { children: [
892
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "elb-event-log__entity", children: entity }),
893
+ " ",
894
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "elb-event-log__action", children: action })
895
+ ] });
896
+ }
897
+ function Fields({ event }) {
898
+ const fields = new Map(Object.entries(event));
899
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "elb-event-log__sections", children: SECTIONS.map((section) => {
900
+ const group = fields.get(section);
901
+ const rows = isGroup(group) ? fieldRows(section, group) : [];
902
+ if (rows.length === 0 && section !== "consent") return null;
903
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "elb-event-log__section", children: [
904
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "elb-event-log__label", children: section }),
905
+ rows.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "elb-event-log__field elb-event-log__sub", children: "none" }) : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("dl", { className: "elb-event-log__fields", children: rows.map(({ key, value, sub }) => /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "elb-event-log__field", children: [
906
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("dt", { children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(CodeTokens, { tokens: [tok(key, "key")] }) }),
907
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("dd", { children: [
908
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(CodeTokens, { tokens: [value] }),
909
+ sub && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "elb-event-log__sub", children: sub })
910
+ ] })
911
+ ] }, key)) })
912
+ ] }, section);
913
+ }) });
914
+ }
915
+ function Json({ text }) {
916
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "elb-event-log__json", children: text.split("\n").map((line, index) => /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_react4.Fragment, { children: [
917
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(CodeTokens, { tokens: jsonTokens(line) }),
918
+ "\n"
919
+ ] }, index)) });
920
+ }
921
+ function EventLog({
922
+ records,
923
+ selectedSeq,
924
+ onSelect,
925
+ onClear,
926
+ emptyText = "Click, scroll or load something tagged on the page and its events show up here.",
927
+ className,
928
+ ...rest
929
+ }) {
930
+ const [view, setView] = (0, import_react4.useState)("fields");
931
+ const [copyState, copy] = useCopy();
932
+ const newest = records[records.length - 1];
933
+ const selected = records.find((record) => record.seq === selectedSeq) ?? newest;
934
+ const json = selected ? JSON.stringify(selected.event, null, 2) : "";
935
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { ...rest, className: cx("elb-event-log", className), children: [
936
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "elb-event-log__bar", children: [
937
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "elb-event-log__title", children: "Events" }),
938
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "elb-event-log__count", children: records.length }),
939
+ onClear && records.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
940
+ Button,
941
+ {
942
+ variant: "secondary",
943
+ className: "elb-event-log__button elb-event-log__clear",
944
+ onClick: onClear,
945
+ children: "Clear"
946
+ }
947
+ )
948
+ ] }),
949
+ selected === void 0 || newest === void 0 ? /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "elb-event-log__empty", children: [
950
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("p", { className: "elb-event-log__empty-title", children: "No events yet" }),
951
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("p", { className: "elb-event-log__empty-text", children: emptyText })
952
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "elb-event-log__body", children: [
953
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("ul", { className: "elb-event-log__list", children: [...records].reverse().map(({ seq, event }) => {
954
+ const time = timeOf(event.timestamp);
955
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
956
+ "button",
957
+ {
958
+ type: "button",
959
+ className: "elb-event-log__row",
960
+ "aria-pressed": seq === selected.seq,
961
+ disabled: !onSelect,
962
+ onClick: () => onSelect?.(seq === newest.seq ? null : seq),
963
+ children: [
964
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("span", { className: "elb-event-log__seq", children: [
965
+ "#",
966
+ seq
967
+ ] }),
968
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "elb-event-log__name", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(EventName, { event }) }),
969
+ event.trigger && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(InlineCode, { className: "elb-event-log__trigger", children: event.trigger }),
970
+ time && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("time", { className: "elb-event-log__time", dateTime: time.iso, children: time.clock })
971
+ ]
972
+ }
973
+ ) }, seq);
974
+ }) }),
975
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "elb-event-log__detail", "data-theme": "dark", children: [
976
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "elb-event-log__head", children: [
977
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "elb-event-log__summary", children: [
978
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "elb-event-log__detail-name", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(EventName, { event: selected.event }) }),
979
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "elb-event-log__meta", children: [
980
+ `#${selected.seq}`,
981
+ selected.event.trigger,
982
+ timeOf(selected.event.timestamp)?.clock
983
+ ].filter(Boolean).join(" \xB7 ") })
984
+ ] }),
985
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
986
+ "div",
987
+ {
988
+ className: "elb-event-log__views",
989
+ role: "group",
990
+ "aria-label": "View",
991
+ children: VIEWS.map(([id, label]) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
992
+ "button",
993
+ {
994
+ type: "button",
995
+ className: "elb-event-log__view",
996
+ "aria-pressed": view === id,
997
+ onClick: () => setView(id),
998
+ children: label
999
+ },
1000
+ id
1001
+ ))
1002
+ }
1003
+ ),
1004
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
1005
+ Button,
1006
+ {
1007
+ variant: "secondary",
1008
+ className: "elb-event-log__button",
1009
+ onClick: () => copy(json),
1010
+ children: [
1011
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Icon, { name: COPY[copyState].icon, size: 12 }),
1012
+ COPY[copyState].label
1013
+ ]
1014
+ }
1015
+ ),
1016
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "elb-event-log__status", role: "status", children: copyState === "idle" ? "" : COPY[copyState].label })
1017
+ ] }),
1018
+ view === "fields" ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Fields, { event: selected.event }) : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Json, { text: json })
1019
+ ] })
1020
+ ] })
1021
+ ] });
1022
+ }
1023
+
1024
+ // src/design/components/molecules/QuickstartSteps.tsx
1025
+ var import_jsx_runtime23 = require("react/jsx-runtime");
791
1026
  var ARROWS = [
792
1027
  {
793
1028
  kind: "wave",
@@ -805,12 +1040,12 @@ var ARROWS = [
805
1040
  }
806
1041
  ];
807
1042
  function Arrow({ kind, paths }) {
808
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1043
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
809
1044
  "li",
810
1045
  {
811
1046
  className: cx("elb-quickstart__arrow", `elb-quickstart__arrow--${kind}`),
812
1047
  "aria-hidden": "true",
813
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1048
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
814
1049
  "svg",
815
1050
  {
816
1051
  width: "76",
@@ -821,7 +1056,7 @@ function Arrow({ kind, paths }) {
821
1056
  strokeWidth: "2.2",
822
1057
  strokeLinecap: "round",
823
1058
  strokeLinejoin: "round",
824
- children: paths.map((d) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("path", { d }, d))
1059
+ children: paths.map((d) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { d }, d))
825
1060
  }
826
1061
  )
827
1062
  }
@@ -833,18 +1068,18 @@ function QuickstartSteps({
833
1068
  className,
834
1069
  ...rest
835
1070
  }) {
836
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { ...rest, className: cx("elb-quickstart", className), children: [
837
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("ol", { className: "elb-quickstart__steps", children: steps.flatMap((step, index) => {
838
- const item = /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("li", { className: "elb-quickstart__step", children: [
839
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "elb-quickstart__head", children: [
840
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "elb-quickstart__num", "aria-hidden": "true", children: index + 1 }),
841
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("h3", { className: "elb-quickstart__title", children: step.title })
1071
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { ...rest, className: cx("elb-quickstart", className), children: [
1072
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("ol", { className: "elb-quickstart__steps", children: steps.flatMap((step, index) => {
1073
+ const item = /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("li", { className: "elb-quickstart__step", children: [
1074
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "elb-quickstart__head", children: [
1075
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "elb-quickstart__num", "aria-hidden": "true", children: index + 1 }),
1076
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("h3", { className: "elb-quickstart__title", children: step.title })
842
1077
  ] }),
843
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("p", { className: "elb-quickstart__copy", children: step.text })
1078
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("p", { className: "elb-quickstart__copy", children: step.text })
844
1079
  ] }, step.title);
845
1080
  return index < steps.length - 1 ? [
846
1081
  item,
847
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1082
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
848
1083
  Arrow,
849
1084
  {
850
1085
  ...ARROWS[index % ARROWS.length]
@@ -858,14 +1093,14 @@ function QuickstartSteps({
858
1093
  }
859
1094
 
860
1095
  // src/design/components/layout/Section.tsx
861
- var import_jsx_runtime22 = require("react/jsx-runtime");
1096
+ var import_jsx_runtime24 = require("react/jsx-runtime");
862
1097
  function Section({
863
1098
  children,
864
1099
  tone = "default",
865
1100
  className,
866
1101
  ...rest
867
1102
  }) {
868
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1103
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
869
1104
  "section",
870
1105
  {
871
1106
  ...rest,
@@ -874,13 +1109,13 @@ function Section({
874
1109
  tone === "alt" && "elb-section--alt",
875
1110
  className
876
1111
  ),
877
- children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "elb-section__inner", children })
1112
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "elb-section__inner", children })
878
1113
  }
879
1114
  );
880
1115
  }
881
1116
 
882
1117
  // src/design/components/layout/CardGrid.tsx
883
- var import_jsx_runtime23 = require("react/jsx-runtime");
1118
+ var import_jsx_runtime25 = require("react/jsx-runtime");
884
1119
  function CardGrid({
885
1120
  children,
886
1121
  min,
@@ -888,7 +1123,7 @@ function CardGrid({
888
1123
  className,
889
1124
  ...rest
890
1125
  }) {
891
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1126
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
892
1127
  "div",
893
1128
  {
894
1129
  ...rest,
@@ -904,7 +1139,7 @@ function CardGrid({
904
1139
  }
905
1140
 
906
1141
  // src/design/components/layout/Split.tsx
907
- var import_jsx_runtime24 = require("react/jsx-runtime");
1142
+ var import_jsx_runtime26 = require("react/jsx-runtime");
908
1143
  function Split({
909
1144
  start,
910
1145
  end,
@@ -912,7 +1147,7 @@ function Split({
912
1147
  className,
913
1148
  ...rest
914
1149
  }) {
915
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
1150
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
916
1151
  "div",
917
1152
  {
918
1153
  ...rest,
@@ -922,15 +1157,15 @@ function Split({
922
1157
  className
923
1158
  ),
924
1159
  children: [
925
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "elb-split__start", children: start }),
926
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "elb-split__end", children: end })
1160
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "elb-split__start", children: start }),
1161
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "elb-split__end", children: end })
927
1162
  ]
928
1163
  }
929
1164
  );
930
1165
  }
931
1166
 
932
1167
  // src/design/components/layout/Cluster.tsx
933
- var import_jsx_runtime25 = require("react/jsx-runtime");
1168
+ var import_jsx_runtime27 = require("react/jsx-runtime");
934
1169
  function Cluster({
935
1170
  children,
936
1171
  gap = "actions",
@@ -939,7 +1174,7 @@ function Cluster({
939
1174
  className,
940
1175
  ...rest
941
1176
  }) {
942
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1177
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
943
1178
  "div",
944
1179
  {
945
1180
  ...rest,
@@ -956,7 +1191,7 @@ function Cluster({
956
1191
  }
957
1192
 
958
1193
  // src/design/components/layout/Hero.tsx
959
- var import_jsx_runtime26 = require("react/jsx-runtime");
1194
+ var import_jsx_runtime28 = require("react/jsx-runtime");
960
1195
  function Hero({
961
1196
  eyebrow,
962
1197
  title,
@@ -968,8 +1203,8 @@ function Hero({
968
1203
  className,
969
1204
  ...rest
970
1205
  }) {
971
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("section", { ...rest, className: cx("elb-hero", className), children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "elb-hero__inner", children: [
972
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
1206
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("section", { ...rest, className: cx("elb-hero", className), children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "elb-hero__inner", children: [
1207
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
973
1208
  SectionHeading,
974
1209
  {
975
1210
  level: 1,
@@ -979,14 +1214,14 @@ function Hero({
979
1214
  lead
980
1215
  }
981
1216
  ),
982
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "elb-hero__actions", children: actions }),
983
- proof !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "elb-hero__proof", children: proof }),
984
- children !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "elb-hero__demo", children })
1217
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "elb-hero__actions", children: actions }),
1218
+ proof !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "elb-hero__proof", children: proof }),
1219
+ children !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "elb-hero__demo", children })
985
1220
  ] }) });
986
1221
  }
987
1222
 
988
1223
  // src/design/components/viz/DestinationMappingViz.tsx
989
- var import_react3 = require("react");
1224
+ var import_react5 = require("react");
990
1225
 
991
1226
  // src/design/components/viz/data/destination-mapping.ts
992
1227
  var GENERATED_ID = "\u2026";
@@ -1353,58 +1588,6 @@ var MAPPING_EVENTS = [
1353
1588
  }
1354
1589
  ];
1355
1590
 
1356
- // src/design/components/viz/parts/CodeTokens.tsx
1357
- var import_jsx_runtime27 = require("react/jsx-runtime");
1358
- function CodeTokens({
1359
- tokens,
1360
- active = false
1361
- }) {
1362
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_jsx_runtime27.Fragment, { children: tokens.map((token, index) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1363
- "span",
1364
- {
1365
- className: cx(
1366
- "elb-viz-tok",
1367
- `elb-viz-tok--${token.kind}`,
1368
- active && token.mark && `elb-viz-tok--mark-${token.mark}`
1369
- ),
1370
- children: token.t
1371
- },
1372
- index
1373
- )) });
1374
- }
1375
- function CodeLine({ number, bar, className, children }) {
1376
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: cx("elb-viz-line", className), children: [
1377
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1378
- "span",
1379
- {
1380
- className: cx("elb-viz-line__bar", bar && `elb-viz-line__bar--${bar}`),
1381
- "aria-hidden": "true"
1382
- }
1383
- ),
1384
- number !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "elb-viz-line__number", children: number }),
1385
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "elb-viz-line__code", children })
1386
- ] });
1387
- }
1388
-
1389
- // src/design/components/viz/parts/tokens.ts
1390
- function tok(t, kind, mark) {
1391
- return mark ? { t, kind, mark } : { t, kind };
1392
- }
1393
- function typedLength(tokens) {
1394
- return tokens.reduce((length, token) => length + token.t.length, 0);
1395
- }
1396
- function truncate(tokens, n) {
1397
- const out = [];
1398
- let left = n;
1399
- for (const token of tokens) {
1400
- if (left <= 0) break;
1401
- const t = token.t.slice(0, left);
1402
- out.push({ ...token, t });
1403
- left -= t.length;
1404
- }
1405
- return out;
1406
- }
1407
-
1408
1591
  // src/design/components/viz/parts/format.ts
1409
1592
  var ELIDED = "{\u2026}";
1410
1593
  function isRecord(value) {
@@ -1492,38 +1675,38 @@ function tokenizeCode(line, highlight) {
1492
1675
  }
1493
1676
 
1494
1677
  // src/design/components/viz/parts/VizFrame.tsx
1495
- var import_jsx_runtime28 = require("react/jsx-runtime");
1678
+ var import_jsx_runtime29 = require("react/jsx-runtime");
1496
1679
  function VizFrame({
1497
1680
  variant,
1498
1681
  children,
1499
1682
  className,
1500
1683
  ...rest
1501
1684
  }) {
1502
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1685
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1503
1686
  "div",
1504
1687
  {
1505
1688
  ...rest,
1506
1689
  "data-theme": "dark",
1507
1690
  className: cx("elb-viz", `elb-viz--${variant}`, className),
1508
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "elb-viz__body", children })
1691
+ children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "elb-viz__body", children })
1509
1692
  }
1510
1693
  );
1511
1694
  }
1512
1695
 
1513
1696
  // src/design/components/viz/DestinationMappingViz.tsx
1514
- var import_jsx_runtime29 = require("react/jsx-runtime");
1697
+ var import_jsx_runtime30 = require("react/jsx-runtime");
1515
1698
  function DestinationMappingViz({
1516
1699
  initialEvent = 0,
1517
1700
  caption = MAPPING_CAPTION,
1518
1701
  ...rest
1519
1702
  }) {
1520
- const [index, setIndex] = (0, import_react3.useState)(initialEvent);
1703
+ const [index, setIndex] = (0, import_react5.useState)(initialEvent);
1521
1704
  const event = MAPPING_EVENTS[index];
1522
1705
  const name = `${event.entity} ${event.action}`;
1523
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(VizFrame, { ...rest, variant: "mapping", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "elb-viz-mapping", children: [
1524
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "elb-viz-mapping__pick", children: [
1525
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "elb-viz-mapping__label", children: "Pick an event" }),
1526
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "elb-viz-mapping__chips", children: MAPPING_EVENTS.map((item, position) => /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
1706
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(VizFrame, { ...rest, variant: "mapping", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "elb-viz-mapping", children: [
1707
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "elb-viz-mapping__pick", children: [
1708
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "elb-viz-mapping__label", children: "Pick an event" }),
1709
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "elb-viz-mapping__chips", children: MAPPING_EVENTS.map((item, position) => /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
1527
1710
  "button",
1528
1711
  {
1529
1712
  type: "button",
@@ -1535,21 +1718,21 @@ function DestinationMappingViz({
1535
1718
  ),
1536
1719
  onClick: () => setIndex(position),
1537
1720
  children: [
1538
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "elb-viz-mapping__chip-entity", children: item.entity }),
1539
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "elb-viz-mapping__chip-action", children: item.action })
1721
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "elb-viz-mapping__chip-entity", children: item.entity }),
1722
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "elb-viz-mapping__chip-action", children: item.action })
1540
1723
  ]
1541
1724
  },
1542
1725
  `${item.entity} ${item.action}`
1543
1726
  )) })
1544
1727
  ] }),
1545
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "elb-viz-mapping__event", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(CodeTokens, { tokens: tokenizeCode(formatElb(event), name), active: true }) }),
1546
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "elb-viz-mapping__body", children: [
1547
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "elb-viz-mapping__comment", children: "// same event, four destinations, zero app code touched" }),
1548
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "elb-viz-mapping__cards", children: event.destinations.map((destination) => /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "elb-viz-mapping__card", children: [
1549
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "elb-viz-mapping__name", children: destination.label }),
1550
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "elb-viz-mapping__row", children: [
1551
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "elb-viz-mapping__tag", children: "mapping" }),
1552
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "elb-viz-mapping__rule", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1728
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "elb-viz-mapping__event", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(CodeTokens, { tokens: tokenizeCode(formatElb(event), name), active: true }) }),
1729
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "elb-viz-mapping__body", children: [
1730
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "elb-viz-mapping__comment", children: "// same event, four destinations, zero app code touched" }),
1731
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "elb-viz-mapping__cards", children: event.destinations.map((destination) => /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "elb-viz-mapping__card", children: [
1732
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "elb-viz-mapping__name", children: destination.label }),
1733
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "elb-viz-mapping__row", children: [
1734
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "elb-viz-mapping__tag", children: "mapping" }),
1735
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "elb-viz-mapping__rule", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1553
1736
  CodeTokens,
1554
1737
  {
1555
1738
  tokens: tokenizeCode(
@@ -1564,9 +1747,9 @@ function DestinationMappingViz({
1564
1747
  }
1565
1748
  ) })
1566
1749
  ] }),
1567
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "elb-viz-mapping__row elb-viz-mapping__row--sends", children: [
1568
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "elb-viz-mapping__tag", children: "sends" }),
1569
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "elb-viz-mapping__calls", children: destination.calls.flatMap((call) => formatCall(call)).map((line, position) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "elb-viz-mapping__line", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1750
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "elb-viz-mapping__row elb-viz-mapping__row--sends", children: [
1751
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "elb-viz-mapping__tag", children: "sends" }),
1752
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "elb-viz-mapping__calls", children: destination.calls.flatMap((call) => formatCall(call)).map((line, position) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "elb-viz-mapping__line", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1570
1753
  CodeTokens,
1571
1754
  {
1572
1755
  tokens: tokenizeCode(line, destination.rule.name),
@@ -1576,12 +1759,12 @@ function DestinationMappingViz({
1576
1759
  ] })
1577
1760
  ] }, destination.id)) })
1578
1761
  ] }),
1579
- caption !== "" && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { className: "elb-viz-mapping__caption", children: caption })
1762
+ caption !== "" && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { className: "elb-viz-mapping__caption", children: caption })
1580
1763
  ] }) });
1581
1764
  }
1582
1765
 
1583
1766
  // src/design/components/viz/HeroTaggingViz.tsx
1584
- var import_react6 = require("react");
1767
+ var import_react8 = require("react");
1585
1768
 
1586
1769
  // src/design/components/viz/parts/timeline.ts
1587
1770
  function clamp(x) {
@@ -1591,6 +1774,22 @@ function ease(x) {
1591
1774
  return x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2;
1592
1775
  }
1593
1776
 
1777
+ // src/design/components/viz/parts/tokens.ts
1778
+ function typedLength(tokens) {
1779
+ return tokens.reduce((length, token) => length + token.t.length, 0);
1780
+ }
1781
+ function truncate(tokens, n) {
1782
+ const out = [];
1783
+ let left = n;
1784
+ for (const token of tokens) {
1785
+ if (left <= 0) break;
1786
+ const t = token.t.slice(0, left);
1787
+ out.push({ ...token, t });
1788
+ left -= t.length;
1789
+ }
1790
+ return out;
1791
+ }
1792
+
1594
1793
  // src/design/components/viz/data/hero.ts
1595
1794
  var HERO_ARTICLES = [
1596
1795
  { kicker: "Tech", title: "Return of the Bug", thumb: "bug" },
@@ -1851,8 +2050,24 @@ function heroFrame(t) {
1851
2050
  };
1852
2051
  }
1853
2052
 
2053
+ // src/design/components/viz/parts/CodeLine.tsx
2054
+ var import_jsx_runtime31 = require("react/jsx-runtime");
2055
+ function CodeLine({ number, bar, className, children }) {
2056
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: cx("elb-viz-line", className), children: [
2057
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2058
+ "span",
2059
+ {
2060
+ className: cx("elb-viz-line__bar", bar && `elb-viz-line__bar--${bar}`),
2061
+ "aria-hidden": "true"
2062
+ }
2063
+ ),
2064
+ number !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "elb-viz-line__number", children: number }),
2065
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "elb-viz-line__code", children })
2066
+ ] });
2067
+ }
2068
+
1854
2069
  // src/design/components/viz/parts/EventsTable.tsx
1855
- var import_react4 = require("react");
2070
+ var import_react6 = require("react");
1856
2071
 
1857
2072
  // src/design/components/viz/parts/style.ts
1858
2073
  function vizStyle(vars) {
@@ -1861,38 +2076,38 @@ function vizStyle(vars) {
1861
2076
  }
1862
2077
 
1863
2078
  // src/design/components/viz/parts/EventsTable.tsx
1864
- var import_jsx_runtime30 = require("react/jsx-runtime");
2079
+ var import_jsx_runtime32 = require("react/jsx-runtime");
1865
2080
  var SKELETON_ROWS = 6;
1866
2081
  function EventsTable({ rows }) {
1867
2082
  const skeletons = Math.max(0, SKELETON_ROWS - rows.length);
1868
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "elb-viz-table", children: [
1869
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "elb-viz-table__head", children: [
1870
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("span", { className: "elb-viz-table__query", children: [
1871
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "elb-viz-table__keyword", children: "SELECT" }),
2083
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "elb-viz-table", children: [
2084
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "elb-viz-table__head", children: [
2085
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("span", { className: "elb-viz-table__query", children: [
2086
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "elb-viz-table__keyword", children: "SELECT" }),
1872
2087
  " *",
1873
2088
  " ",
1874
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "elb-viz-table__keyword", children: "FROM" }),
2089
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "elb-viz-table__keyword", children: "FROM" }),
1875
2090
  " ",
1876
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "elb-viz-table__source", children: "walkerOS.events" })
2091
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "elb-viz-table__source", children: "walkerOS.events" })
1877
2092
  ] }),
1878
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("span", { className: "elb-viz-table__live", children: [
1879
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "elb-viz-table__dot", "aria-hidden": "true" }),
2093
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("span", { className: "elb-viz-table__live", children: [
2094
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "elb-viz-table__dot", "aria-hidden": "true" }),
1880
2095
  "live"
1881
2096
  ] })
1882
2097
  ] }),
1883
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "elb-viz-table__body", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "elb-viz-table__scroll", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "elb-viz-table__rows", children: [
1884
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "elb-viz-table__row elb-viz-table__row--header", children: [
1885
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "elb-viz-table__cell elb-viz-table__cell--n", children: "Row" }),
1886
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("span", { className: "elb-viz-table__cell", children: [
2098
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "elb-viz-table__body", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "elb-viz-table__scroll", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "elb-viz-table__rows", children: [
2099
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "elb-viz-table__row elb-viz-table__row--header", children: [
2100
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "elb-viz-table__cell elb-viz-table__cell--n", children: "Row" }),
2101
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("span", { className: "elb-viz-table__cell", children: [
1887
2102
  "name",
1888
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "elb-viz-table__type", children: "STRING" })
2103
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "elb-viz-table__type", children: "STRING" })
1889
2104
  ] }),
1890
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("span", { className: "elb-viz-table__cell", children: [
2105
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("span", { className: "elb-viz-table__cell", children: [
1891
2106
  "data",
1892
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "elb-viz-table__type", children: "JSON" })
2107
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "elb-viz-table__type", children: "JSON" })
1893
2108
  ] })
1894
2109
  ] }),
1895
- rows.map((row, index) => /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
2110
+ rows.map((row, index) => /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
1896
2111
  "div",
1897
2112
  {
1898
2113
  className: "elb-viz-table__row elb-viz-table__row--event",
@@ -1902,15 +2117,15 @@ function EventsTable({ rows }) {
1902
2117
  "--elb-viz-row-shift": (1 - ease(clamp(row.age / 500))) * -80
1903
2118
  }),
1904
2119
  children: [
1905
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "elb-viz-table__cell elb-viz-table__cell--n", children: index + 1 }),
1906
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "elb-viz-table__cell", children: row.name }),
1907
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("span", { className: "elb-viz-table__cell elb-viz-table__json", children: [
2120
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "elb-viz-table__cell elb-viz-table__cell--n", children: index + 1 }),
2121
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "elb-viz-table__cell", children: row.name }),
2122
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("span", { className: "elb-viz-table__cell elb-viz-table__json", children: [
1908
2123
  "{",
1909
- Object.entries(row.data).map(([key, value], position) => /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_react4.Fragment, { children: [
2124
+ Object.entries(row.data).map(([key, value], position) => /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_react6.Fragment, { children: [
1910
2125
  position === 0 ? '"' : ',"',
1911
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "elb-viz-table__json-key", children: key }),
2126
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "elb-viz-table__json-key", children: key }),
1912
2127
  '":"',
1913
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "elb-viz-table__json-value", children: value }),
2128
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "elb-viz-table__json-value", children: value }),
1914
2129
  '"'
1915
2130
  ] }, key)),
1916
2131
  "}"
@@ -1919,15 +2134,15 @@ function EventsTable({ rows }) {
1919
2134
  },
1920
2135
  row.key
1921
2136
  )),
1922
- Array.from({ length: skeletons }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
2137
+ Array.from({ length: skeletons }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
1923
2138
  "div",
1924
2139
  {
1925
2140
  className: "elb-viz-table__row elb-viz-table__row--skeleton",
1926
2141
  "aria-hidden": "true",
1927
2142
  children: [
1928
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "elb-viz-table__cell elb-viz-table__cell--n", children: rows.length + index + 1 }),
1929
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "elb-viz-table__cell", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "elb-viz-table__bar" }) }),
1930
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "elb-viz-table__cell", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "elb-viz-table__bar" }) })
2143
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "elb-viz-table__cell elb-viz-table__cell--n", children: rows.length + index + 1 }),
2144
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "elb-viz-table__cell", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "elb-viz-table__bar" }) }),
2145
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "elb-viz-table__cell", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "elb-viz-table__bar" }) })
1931
2146
  ]
1932
2147
  },
1933
2148
  `skeleton-${index}`
@@ -1937,11 +2152,11 @@ function EventsTable({ rows }) {
1937
2152
  }
1938
2153
 
1939
2154
  // src/design/components/viz/parts/hooks.ts
1940
- var import_react5 = require("react");
2155
+ var import_react7 = require("react");
1941
2156
  var REDUCED_MOTION = "(prefers-reduced-motion: reduce)";
1942
2157
  function useInView(ref, threshold) {
1943
- const [inView, setInView] = (0, import_react5.useState)(false);
1944
- (0, import_react5.useEffect)(() => {
2158
+ const [inView, setInView] = (0, import_react7.useState)(false);
2159
+ (0, import_react7.useEffect)(() => {
1945
2160
  const element = ref.current;
1946
2161
  if (!element || typeof IntersectionObserver === "undefined") {
1947
2162
  setInView(true);
@@ -1963,8 +2178,8 @@ function useInView(ref, threshold) {
1963
2178
  return inView;
1964
2179
  }
1965
2180
  function useReducedMotion() {
1966
- const [reduced, setReduced] = (0, import_react5.useState)(false);
1967
- (0, import_react5.useEffect)(() => {
2181
+ const [reduced, setReduced] = (0, import_react7.useState)(false);
2182
+ (0, import_react7.useEffect)(() => {
1968
2183
  if (typeof window.matchMedia !== "function") return void 0;
1969
2184
  const media = window.matchMedia(REDUCED_MOTION);
1970
2185
  const update = () => setReduced(media.matches);
@@ -1976,14 +2191,14 @@ function useReducedMotion() {
1976
2191
  }
1977
2192
 
1978
2193
  // src/design/components/viz/parts/Pill.tsx
1979
- var import_jsx_runtime31 = require("react/jsx-runtime");
2194
+ var import_jsx_runtime33 = require("react/jsx-runtime");
1980
2195
  function Pill({
1981
2196
  part,
1982
2197
  variant = "solid",
1983
2198
  className,
1984
2199
  children
1985
2200
  }) {
1986
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2201
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
1987
2202
  "span",
1988
2203
  {
1989
2204
  className: cx(
@@ -1998,7 +2213,7 @@ function Pill({
1998
2213
  }
1999
2214
 
2000
2215
  // src/design/components/viz/parts/Thumb.tsx
2001
- var import_jsx_runtime32 = require("react/jsx-runtime");
2216
+ var import_jsx_runtime34 = require("react/jsx-runtime");
2002
2217
  var BUG_LINES = [
2003
2218
  "M36 46 L28 42",
2004
2219
  "M35 54 L27 56",
@@ -2016,9 +2231,9 @@ var BUG_SPOTS = [
2016
2231
  [67, 56, 2.8]
2017
2232
  ];
2018
2233
  function Bug() {
2019
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
2020
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("rect", { className: "elb-viz-thumb__ground", width: 112, height: 86 }),
2021
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2234
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_jsx_runtime34.Fragment, { children: [
2235
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("rect", { className: "elb-viz-thumb__ground", width: 112, height: 86 }),
2236
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2022
2237
  "ellipse",
2023
2238
  {
2024
2239
  className: "elb-viz-thumb__shadow",
@@ -2028,18 +2243,18 @@ function Bug() {
2028
2243
  ry: 6
2029
2244
  }
2030
2245
  ),
2031
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2246
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2032
2247
  "g",
2033
2248
  {
2034
2249
  className: "elb-viz-thumb__legs",
2035
2250
  strokeWidth: 2.4,
2036
2251
  strokeLinecap: "round",
2037
- children: BUG_LINES.map((d) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("path", { d }, d))
2252
+ children: BUG_LINES.map((d) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("path", { d }, d))
2038
2253
  }
2039
2254
  ),
2040
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("circle", { className: "elb-viz-thumb__ink", cx: 42, cy: 16, r: 2 }),
2041
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("circle", { className: "elb-viz-thumb__ink", cx: 70, cy: 16, r: 2 }),
2042
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2255
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("circle", { className: "elb-viz-thumb__ink", cx: 42, cy: 16, r: 2 }),
2256
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("circle", { className: "elb-viz-thumb__ink", cx: 70, cy: 16, r: 2 }),
2257
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2043
2258
  "ellipse",
2044
2259
  {
2045
2260
  className: "elb-viz-thumb__ink",
@@ -2049,9 +2264,9 @@ function Bug() {
2049
2264
  ry: 7.5
2050
2265
  }
2051
2266
  ),
2052
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("circle", { className: "elb-viz-thumb__eye", cx: 52, cy: 29, r: 1.6 }),
2053
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("circle", { className: "elb-viz-thumb__eye", cx: 60, cy: 29, r: 1.6 }),
2054
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2267
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("circle", { className: "elb-viz-thumb__eye", cx: 52, cy: 29, r: 1.6 }),
2268
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("circle", { className: "elb-viz-thumb__eye", cx: 60, cy: 29, r: 1.6 }),
2269
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2055
2270
  "ellipse",
2056
2271
  {
2057
2272
  className: "elb-viz-thumb__shell",
@@ -2061,8 +2276,8 @@ function Bug() {
2061
2276
  ry: 18
2062
2277
  }
2063
2278
  ),
2064
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("path", { className: "elb-viz-thumb__seam", d: "M56 33 L56 68", strokeWidth: 2 }),
2065
- BUG_SPOTS.map(([x, y, r]) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2279
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("path", { className: "elb-viz-thumb__seam", d: "M56 33 L56 68", strokeWidth: 2 }),
2280
+ BUG_SPOTS.map(([x, y, r]) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2066
2281
  "circle",
2067
2282
  {
2068
2283
  className: "elb-viz-thumb__ink",
@@ -2072,7 +2287,7 @@ function Bug() {
2072
2287
  },
2073
2288
  `${x}-${y}`
2074
2289
  )),
2075
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2290
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2076
2291
  "path",
2077
2292
  {
2078
2293
  className: "elb-viz-thumb__shine",
@@ -2084,9 +2299,9 @@ function Bug() {
2084
2299
  ] });
2085
2300
  }
2086
2301
  function Tech() {
2087
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
2088
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("rect", { className: "elb-viz-thumb__ground", width: 112, height: 86 }),
2089
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2302
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_jsx_runtime34.Fragment, { children: [
2303
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("rect", { className: "elb-viz-thumb__ground", width: 112, height: 86 }),
2304
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2090
2305
  "rect",
2091
2306
  {
2092
2307
  className: "elb-viz-thumb__badge",
@@ -2097,8 +2312,8 @@ function Tech() {
2097
2312
  rx: 8
2098
2313
  }
2099
2314
  ),
2100
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("circle", { className: "elb-viz-thumb__dot", cx: 47, cy: 52, r: 3.2 }),
2101
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2315
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("circle", { className: "elb-viz-thumb__dot", cx: 47, cy: 52, r: 3.2 }),
2316
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2102
2317
  "path",
2103
2318
  {
2104
2319
  className: "elb-viz-thumb__wave",
@@ -2107,7 +2322,7 @@ function Tech() {
2107
2322
  strokeLinecap: "round"
2108
2323
  }
2109
2324
  ),
2110
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2325
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2111
2326
  "path",
2112
2327
  {
2113
2328
  className: "elb-viz-thumb__wave",
@@ -2119,9 +2334,9 @@ function Tech() {
2119
2334
  ] });
2120
2335
  }
2121
2336
  function Food() {
2122
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
2123
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("rect", { className: "elb-viz-thumb__ground", width: 112, height: 86 }),
2124
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2337
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_jsx_runtime34.Fragment, { children: [
2338
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("rect", { className: "elb-viz-thumb__ground", width: 112, height: 86 }),
2339
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2125
2340
  "ellipse",
2126
2341
  {
2127
2342
  className: "elb-viz-thumb__plate",
@@ -2131,7 +2346,7 @@ function Food() {
2131
2346
  ry: 10
2132
2347
  }
2133
2348
  ),
2134
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2349
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2135
2350
  "ellipse",
2136
2351
  {
2137
2352
  className: "elb-viz-thumb__loaf",
@@ -2141,7 +2356,7 @@ function Food() {
2141
2356
  ry: 19
2142
2357
  }
2143
2358
  ),
2144
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2359
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2145
2360
  "ellipse",
2146
2361
  {
2147
2362
  className: "elb-viz-thumb__crust",
@@ -2151,7 +2366,7 @@ function Food() {
2151
2366
  ry: 13
2152
2367
  }
2153
2368
  ),
2154
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2369
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2155
2370
  "path",
2156
2371
  {
2157
2372
  className: "elb-viz-thumb__score",
@@ -2160,7 +2375,7 @@ function Food() {
2160
2375
  strokeLinecap: "round"
2161
2376
  }
2162
2377
  ),
2163
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2378
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2164
2379
  "path",
2165
2380
  {
2166
2381
  className: "elb-viz-thumb__score",
@@ -2172,7 +2387,7 @@ function Food() {
2172
2387
  ] });
2173
2388
  }
2174
2389
  function Thumb({ kind }) {
2175
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2390
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2176
2391
  "svg",
2177
2392
  {
2178
2393
  className: cx("elb-viz-thumb", `elb-viz-thumb--${kind}`),
@@ -2180,13 +2395,13 @@ function Thumb({ kind }) {
2180
2395
  preserveAspectRatio: "xMidYMid slice",
2181
2396
  "aria-hidden": "true",
2182
2397
  focusable: "false",
2183
- children: kind === "bug" ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Bug, {}) : kind === "tech" ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Tech, {}) : /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Food, {})
2398
+ children: kind === "bug" ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Bug, {}) : kind === "tech" ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Tech, {}) : /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Food, {})
2184
2399
  }
2185
2400
  );
2186
2401
  }
2187
2402
 
2188
2403
  // src/design/components/viz/HeroTaggingViz.tsx
2189
- var import_jsx_runtime33 = require("react/jsx-runtime");
2404
+ var import_jsx_runtime35 = require("react/jsx-runtime");
2190
2405
  var MAX_STEP = 64;
2191
2406
  function HeroTaggingViz({
2192
2407
  playing = true,
@@ -2194,12 +2409,12 @@ function HeroTaggingViz({
2194
2409
  startAt = HERO_START,
2195
2410
  ...rest
2196
2411
  }) {
2197
- const paneRef = (0, import_react6.useRef)(null);
2412
+ const paneRef = (0, import_react8.useRef)(null);
2198
2413
  const inView = useInView(paneRef, 0);
2199
2414
  const reduced = useReducedMotion();
2200
- const [time, setTime] = (0, import_react6.useState)(startAt);
2415
+ const [time, setTime] = (0, import_react8.useState)(startAt);
2201
2416
  const animate = playing && inView && !reduced;
2202
- (0, import_react6.useEffect)(() => {
2417
+ (0, import_react8.useEffect)(() => {
2203
2418
  if (!animate) return void 0;
2204
2419
  let frame = 0;
2205
2420
  let last = performance.now();
@@ -2213,22 +2428,22 @@ function HeroTaggingViz({
2213
2428
  return () => cancelAnimationFrame(frame);
2214
2429
  }, [animate, speed]);
2215
2430
  const { article, lines, fade: fade2, caretOn, card, cursor, rows } = heroFrame(time);
2216
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(VizFrame, { ...rest, variant: "hero", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "elb-viz-hero", children: [
2217
- /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { ref: paneRef, className: "elb-viz-hero__pane", children: [
2218
- /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "elb-viz-hero__bar", children: [
2219
- /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("span", { className: "elb-viz-hero__dots", "aria-hidden": "true", children: [
2220
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", {}),
2221
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", {}),
2222
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", {})
2431
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(VizFrame, { ...rest, variant: "hero", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "elb-viz-hero", children: [
2432
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { ref: paneRef, className: "elb-viz-hero__pane", children: [
2433
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "elb-viz-hero__bar", children: [
2434
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("span", { className: "elb-viz-hero__dots", "aria-hidden": "true", children: [
2435
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", {}),
2436
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", {}),
2437
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", {})
2223
2438
  ] }),
2224
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "elb-viz-hero__file", children: "ArticleTeaser.html" })
2439
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "elb-viz-hero__file", children: "ArticleTeaser.html" })
2225
2440
  ] }),
2226
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2441
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2227
2442
  "div",
2228
2443
  {
2229
2444
  className: "elb-viz-hero__code",
2230
2445
  style: vizStyle({ "--elb-viz-fade": fade2 }),
2231
- children: lines.map((line) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2446
+ children: lines.map((line) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2232
2447
  CodeLine,
2233
2448
  {
2234
2449
  number: line.n,
@@ -2237,23 +2452,23 @@ function HeroTaggingViz({
2237
2452
  "elb-viz-hero__line",
2238
2453
  line.on && "elb-viz-hero__line--on"
2239
2454
  ),
2240
- children: line.caret === null ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(CodeTokens, { tokens: line.tokens }) : /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
2241
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(CodeTokens, { tokens: line.tokens.slice(0, line.caret) }),
2242
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2455
+ children: line.caret === null ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(CodeTokens, { tokens: line.tokens }) : /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [
2456
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(CodeTokens, { tokens: line.tokens.slice(0, line.caret) }),
2457
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2243
2458
  "span",
2244
2459
  {
2245
2460
  className: "elb-viz-caret",
2246
2461
  style: vizStyle({ "--elb-viz-caret": caretOn ? 1 : 0 })
2247
2462
  }
2248
2463
  ),
2249
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(CodeTokens, { tokens: line.tokens.slice(line.caret) })
2464
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(CodeTokens, { tokens: line.tokens.slice(line.caret) })
2250
2465
  ] })
2251
2466
  },
2252
2467
  line.id
2253
2468
  ))
2254
2469
  }
2255
2470
  ),
2256
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "elb-viz-hero__stage", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
2471
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "elb-viz-hero__stage", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
2257
2472
  "div",
2258
2473
  {
2259
2474
  className: cx(
@@ -2265,13 +2480,13 @@ function HeroTaggingViz({
2265
2480
  "--elb-viz-card-offset": card.offset
2266
2481
  }),
2267
2482
  children: [
2268
- /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "elb-viz-hero__pills", children: [
2269
- card.entity && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Pill, { part: "entity", children: "article" }),
2270
- card.impression && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Pill, { part: "action", children: "impression" })
2483
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "elb-viz-hero__pills", children: [
2484
+ card.entity && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Pill, { part: "entity", children: "article" }),
2485
+ card.impression && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Pill, { part: "action", children: "impression" })
2271
2486
  ] }),
2272
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "elb-viz-hero__thumb", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Thumb, { kind: article.thumb }) }),
2273
- /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "elb-viz-hero__text", children: [
2274
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2487
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "elb-viz-hero__thumb", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Thumb, { kind: article.thumb }) }),
2488
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "elb-viz-hero__text", children: [
2489
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2275
2490
  "span",
2276
2491
  {
2277
2492
  className: cx(
@@ -2281,7 +2496,7 @@ function HeroTaggingViz({
2281
2496
  children: article.kicker
2282
2497
  }
2283
2498
  ),
2284
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "elb-viz-hero__title", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2499
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "elb-viz-hero__title", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2285
2500
  "span",
2286
2501
  {
2287
2502
  className: cx(
@@ -2291,7 +2506,7 @@ function HeroTaggingViz({
2291
2506
  children: article.title
2292
2507
  }
2293
2508
  ) }),
2294
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "elb-viz-hero__foot", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
2509
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "elb-viz-hero__foot", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
2295
2510
  "span",
2296
2511
  {
2297
2512
  className: cx(
@@ -2300,7 +2515,7 @@ function HeroTaggingViz({
2300
2515
  ),
2301
2516
  children: [
2302
2517
  "Open \u2192",
2303
- /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
2518
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
2304
2519
  "span",
2305
2520
  {
2306
2521
  className: "elb-viz-hero__cursor",
@@ -2314,8 +2529,8 @@ function HeroTaggingViz({
2314
2529
  "--elb-viz-press": cursor.pressed ? 0.8 : 1
2315
2530
  }),
2316
2531
  children: [
2317
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "elb-viz-hero__ring" }),
2318
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "elb-viz-hero__pointer" })
2532
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "elb-viz-hero__ring" }),
2533
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "elb-viz-hero__pointer" })
2319
2534
  ]
2320
2535
  }
2321
2536
  )
@@ -2327,12 +2542,12 @@ function HeroTaggingViz({
2327
2542
  }
2328
2543
  ) })
2329
2544
  ] }),
2330
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(EventsTable, { rows })
2545
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(EventsTable, { rows })
2331
2546
  ] }) });
2332
2547
  }
2333
2548
 
2334
2549
  // src/design/components/viz/ArticleTeaserTracking.tsx
2335
- var import_react7 = require("react");
2550
+ var import_react9 = require("react");
2336
2551
 
2337
2552
  // src/design/components/viz/data/article-teaser.ts
2338
2553
  var TEASER_ENTITY = "article";
@@ -2595,7 +2810,7 @@ function teaserAdvance(n) {
2595
2810
  }
2596
2811
 
2597
2812
  // src/design/components/viz/ArticleTeaserTracking.tsx
2598
- var import_jsx_runtime34 = require("react/jsx-runtime");
2813
+ var import_jsx_runtime36 = require("react/jsx-runtime");
2599
2814
  var FIRST_DELAY = 800;
2600
2815
  var JUMP_DELAY = 250;
2601
2816
  var SCROLL_DELAY = 400;
@@ -2608,7 +2823,7 @@ function TeaserCard({
2608
2823
  seen,
2609
2824
  ahead
2610
2825
  }) {
2611
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
2826
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
2612
2827
  "div",
2613
2828
  {
2614
2829
  className: cx(
@@ -2617,9 +2832,9 @@ function TeaserCard({
2617
2832
  ahead && "elb-viz-teaser__card--ahead"
2618
2833
  ),
2619
2834
  children: [
2620
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("span", { className: "elb-viz-teaser__pills", children: [
2621
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Pill, { part: "entity", className: fade(seen.has("entity")), children: TEASER_ENTITY }),
2622
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2835
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("span", { className: "elb-viz-teaser__pills", children: [
2836
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Pill, { part: "entity", className: fade(seen.has("entity")), children: TEASER_ENTITY }),
2837
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2623
2838
  Pill,
2624
2839
  {
2625
2840
  part: "property",
@@ -2629,14 +2844,14 @@ function TeaserCard({
2629
2844
  }
2630
2845
  )
2631
2846
  ] }),
2632
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2847
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2633
2848
  PhotoPlaceholder,
2634
2849
  {
2635
2850
  tone: "viz",
2636
2851
  className: cx("elb-viz-teaser__photo", fade(seen.has("image")))
2637
2852
  }
2638
2853
  ),
2639
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2854
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2640
2855
  "span",
2641
2856
  {
2642
2857
  className: cx(
@@ -2647,7 +2862,7 @@ function TeaserCard({
2647
2862
  children: article.kicker
2648
2863
  }
2649
2864
  ),
2650
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2865
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2651
2866
  "span",
2652
2867
  {
2653
2868
  className: cx(
@@ -2658,7 +2873,7 @@ function TeaserCard({
2658
2873
  children: article.title
2659
2874
  }
2660
2875
  ),
2661
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2876
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2662
2877
  "span",
2663
2878
  {
2664
2879
  className: cx(
@@ -2682,7 +2897,7 @@ function TeaserGroup({
2682
2897
  const globalsOn = seen.has(page.globalsEffect);
2683
2898
  const listOn = seen.has(page.listEffect);
2684
2899
  const reached = page.step <= current;
2685
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
2900
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
2686
2901
  "div",
2687
2902
  {
2688
2903
  className: cx(
@@ -2691,7 +2906,7 @@ function TeaserGroup({
2691
2906
  !reached && !lead && "elb-viz-teaser__page--ahead"
2692
2907
  ),
2693
2908
  children: [
2694
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "elb-viz-teaser__page-pill", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2909
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "elb-viz-teaser__page-pill", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2695
2910
  Pill,
2696
2911
  {
2697
2912
  part: "globals",
@@ -2699,7 +2914,7 @@ function TeaserGroup({
2699
2914
  children: `pagetype:${page.pagetype}`
2700
2915
  }
2701
2916
  ) }),
2702
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
2917
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
2703
2918
  "div",
2704
2919
  {
2705
2920
  className: cx(
@@ -2707,14 +2922,14 @@ function TeaserGroup({
2707
2922
  listOn && "elb-viz-teaser__list--on"
2708
2923
  ),
2709
2924
  children: [
2710
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: cx("elb-viz-teaser__list-head", fade(listOn)), children: [
2711
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("span", { className: "elb-viz-teaser__list-label", children: [
2712
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "elb-viz-teaser__list-name", children: page.header }),
2713
- page.heading !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "elb-viz-teaser__list-heading", children: page.heading })
2925
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: cx("elb-viz-teaser__list-head", fade(listOn)), children: [
2926
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("span", { className: "elb-viz-teaser__list-label", children: [
2927
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "elb-viz-teaser__list-name", children: page.header }),
2928
+ page.heading !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "elb-viz-teaser__list-heading", children: page.heading })
2714
2929
  ] }),
2715
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Pill, { part: "context", children: `list:${page.list}` })
2930
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Pill, { part: "context", children: `list:${page.list}` })
2716
2931
  ] }),
2717
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "elb-viz-teaser__cards", children: page.articles.map((article, index) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2932
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "elb-viz-teaser__cards", children: page.articles.map((article, index) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2718
2933
  TeaserCard,
2719
2934
  {
2720
2935
  article,
@@ -2737,20 +2952,20 @@ function ArticleTeaserTracking({
2737
2952
  initialStep,
2738
2953
  ...rest
2739
2954
  }) {
2740
- const codeRef = (0, import_react7.useRef)(null);
2955
+ const codeRef = (0, import_react9.useRef)(null);
2741
2956
  const inView = useInView(codeRef, 0.35);
2742
2957
  const reduced = useReducedMotion();
2743
- const [shown, setShown] = (0, import_react7.useState)(
2958
+ const [shown, setShown] = (0, import_react9.useState)(
2744
2959
  () => initialStep ? teaserStepEnd(initialStep) : 0
2745
2960
  );
2746
- const [delay, setDelay] = (0, import_react7.useState)(FIRST_DELAY);
2747
- const [pinned, setPinned] = (0, import_react7.useState)(null);
2961
+ const [delay, setDelay] = (0, import_react9.useState)(FIRST_DELAY);
2962
+ const [pinned, setPinned] = (0, import_react9.useState)(null);
2748
2963
  const playing = autoplay && inView && !reduced;
2749
2964
  const end = pinned === null ? TEASER_ITEMS.length : teaserStepEnd(pinned);
2750
- (0, import_react7.useEffect)(() => {
2965
+ (0, import_react9.useEffect)(() => {
2751
2966
  if (reduced) setShown(TEASER_ITEMS.length);
2752
2967
  }, [reduced]);
2753
- (0, import_react7.useEffect)(() => {
2968
+ (0, import_react9.useEffect)(() => {
2754
2969
  if (!playing || delay === null) return void 0;
2755
2970
  const timer = setTimeout(() => {
2756
2971
  const advance = teaserAdvance(shown);
@@ -2763,7 +2978,7 @@ function ArticleTeaserTracking({
2763
2978
  }, delay / speed);
2764
2979
  return () => clearTimeout(timer);
2765
2980
  }, [playing, delay, shown, speed, end]);
2766
- (0, import_react7.useEffect)(() => {
2981
+ (0, import_react9.useEffect)(() => {
2767
2982
  const pane = codeRef.current;
2768
2983
  if (!pane || shown === 0 || typeof pane.scrollTo !== "function")
2769
2984
  return void 0;
@@ -2809,15 +3024,15 @@ function ArticleTeaserTracking({
2809
3024
  separated && "elb-viz-teaser__file--separated"
2810
3025
  );
2811
3026
  separated = true;
2812
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { "data-line": index, className: lineClass, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: fileClass, children: [
2813
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "elb-viz-teaser__file-name", children: item.name }),
2814
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "elb-viz-teaser__file-level", children: item.level })
3027
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { "data-line": index, className: lineClass, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: fileClass, children: [
3028
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "elb-viz-teaser__file-name", children: item.name }),
3029
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "elb-viz-teaser__file-level", children: item.level })
2815
3030
  ] }) }, index);
2816
3031
  }
2817
3032
  lineNumber += 1;
2818
3033
  const reached = index < count;
2819
3034
  const isCurrent = index === count - 1 && item.effect !== void 0;
2820
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { "data-line": index, className: lineClass, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3035
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { "data-line": index, className: lineClass, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2821
3036
  CodeLine,
2822
3037
  {
2823
3038
  number: lineNumber,
@@ -2826,13 +3041,13 @@ function ArticleTeaserTracking({
2826
3041
  "elb-viz-teaser__code",
2827
3042
  isCurrent && `elb-viz-teaser__code--current-${item.part ?? "plain"}`
2828
3043
  ),
2829
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(CodeTokens, { tokens: item.tokens, active: reached })
3044
+ children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(CodeTokens, { tokens: item.tokens, active: reached })
2830
3045
  }
2831
3046
  ) }, index);
2832
3047
  });
2833
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(VizFrame, { ...rest, variant: "teaser", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "elb-viz-teaser", children: [
2834
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "elb-viz-teaser__header", children: [
2835
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "elb-viz-teaser__steps", children: TEASER_STEPS.map(({ step, label }) => /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
3048
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(VizFrame, { ...rest, variant: "teaser", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "elb-viz-teaser", children: [
3049
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "elb-viz-teaser__header", children: [
3050
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "elb-viz-teaser__steps", children: TEASER_STEPS.map(({ step, label }) => /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
2836
3051
  "button",
2837
3052
  {
2838
3053
  type: "button",
@@ -2845,18 +3060,18 @@ function ArticleTeaserTracking({
2845
3060
  ),
2846
3061
  onClick: () => jump(step),
2847
3062
  children: [
2848
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "elb-viz-teaser__step-number", children: step }),
2849
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { children: label })
3063
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "elb-viz-teaser__step-number", children: step }),
3064
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { children: label })
2850
3065
  ]
2851
3066
  },
2852
3067
  step
2853
3068
  )) }),
2854
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "elb-viz-teaser__legend", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(EventLegend, {}) })
3069
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "elb-viz-teaser__legend", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(EventLegend, {}) })
2855
3070
  ] }),
2856
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("p", { className: "elb-viz-teaser__caption", children: TEASER_CAPTIONS[current] }),
2857
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "elb-viz-teaser__body", children: [
2858
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "elb-viz-teaser__pane", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { ref: codeRef, className: "elb-viz-teaser__scroll", children: lines }) }),
2859
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "elb-viz-teaser__pages", children: TEASER_PAGE_IDS.map((id, index) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3071
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("p", { className: "elb-viz-teaser__caption", children: TEASER_CAPTIONS[current] }),
3072
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "elb-viz-teaser__body", children: [
3073
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "elb-viz-teaser__pane", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { ref: codeRef, className: "elb-viz-teaser__scroll", children: lines }) }),
3074
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "elb-viz-teaser__pages", children: TEASER_PAGE_IDS.map((id, index) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2860
3075
  TeaserGroup,
2861
3076
  {
2862
3077
  page: TEASER_PAGES[id],