@walkeros/explorer 4.8.0-next-1791441510508 → 4.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -96,50 +96,130 @@ function EventLegend({ parts, className, ...rest }) {
96
96
  }
97
97
 
98
98
  // src/design/components/atoms/Icon.tsx
99
- import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
100
- function Icon({ name, size = 16, className, ...rest }) {
101
- const svg = {
102
- "aria-hidden": true,
103
- focusable: false,
104
- ...rest,
105
- width: size,
106
- height: size,
107
- className: cx("elb-icon", `elb-icon--${name}`, className)
108
- };
109
- return name === "check" ? /* @__PURE__ */ jsx4("svg", { ...svg, viewBox: "0 0 16 16", children: /* @__PURE__ */ jsx4(
110
- "path",
111
- {
112
- d: "M3 8.5l3 3 7-7",
113
- fill: "none",
114
- stroke: "currentColor",
115
- strokeWidth: 2,
116
- strokeLinecap: "round",
117
- strokeLinejoin: "round"
118
- }
119
- ) }) : /* @__PURE__ */ jsxs3("svg", { ...svg, viewBox: "0 0 24 24", children: [
120
- /* @__PURE__ */ jsx4(
121
- "rect",
99
+ import { Fragment as Fragment2, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
100
+ var GLYPHS = {
101
+ check: {
102
+ viewBox: "0 0 16 16",
103
+ strokes: /* @__PURE__ */ jsx4(
104
+ "path",
122
105
  {
123
- x: 9,
124
- y: 9,
125
- width: 12,
126
- height: 12,
127
- rx: 2,
106
+ d: "M3 8.5l3 3 7-7",
128
107
  fill: "none",
129
108
  stroke: "currentColor",
130
- strokeWidth: 2
109
+ strokeWidth: 2,
110
+ strokeLinecap: "round",
111
+ strokeLinejoin: "round"
131
112
  }
132
- ),
133
- /* @__PURE__ */ jsx4(
113
+ )
114
+ },
115
+ copy: {
116
+ viewBox: "0 0 24 24",
117
+ strokes: /* @__PURE__ */ jsxs3(Fragment2, { children: [
118
+ /* @__PURE__ */ jsx4(
119
+ "rect",
120
+ {
121
+ x: 9,
122
+ y: 9,
123
+ width: 12,
124
+ height: 12,
125
+ rx: 2,
126
+ fill: "none",
127
+ stroke: "currentColor",
128
+ strokeWidth: 2
129
+ }
130
+ ),
131
+ /* @__PURE__ */ jsx4(
132
+ "path",
133
+ {
134
+ d: "M5 15V5a2 2 0 0 1 2-2h10",
135
+ fill: "none",
136
+ stroke: "currentColor",
137
+ strokeWidth: 2
138
+ }
139
+ )
140
+ ] })
141
+ },
142
+ lock: {
143
+ viewBox: "0 0 24 24",
144
+ strokes: /* @__PURE__ */ jsxs3(
145
+ "g",
146
+ {
147
+ fill: "none",
148
+ stroke: "currentColor",
149
+ strokeWidth: 2,
150
+ strokeLinecap: "round",
151
+ strokeLinejoin: "round",
152
+ children: [
153
+ /* @__PURE__ */ jsx4("rect", { x: 5, y: 11, width: 14, height: 10, rx: 2 }),
154
+ /* @__PURE__ */ jsx4("path", { d: "M8 11V7a4 4 0 0 1 8 0v4" })
155
+ ]
156
+ }
157
+ )
158
+ },
159
+ reload: {
160
+ viewBox: "0 0 24 24",
161
+ strokes: /* @__PURE__ */ jsxs3(
162
+ "g",
163
+ {
164
+ fill: "none",
165
+ stroke: "currentColor",
166
+ strokeWidth: 2,
167
+ strokeLinecap: "round",
168
+ strokeLinejoin: "round",
169
+ children: [
170
+ /* @__PURE__ */ jsx4("path", { d: "M21 4v6h-6" }),
171
+ /* @__PURE__ */ jsx4("path", { d: "M20.5 15a9 9 0 1 1-2.1-9.4L21 10" })
172
+ ]
173
+ }
174
+ )
175
+ },
176
+ bookmark: {
177
+ viewBox: "0 0 24 24",
178
+ strokes: /* @__PURE__ */ jsx4(
134
179
  "path",
135
180
  {
136
- d: "M5 15V5a2 2 0 0 1 2-2h10",
181
+ d: "M6 3h12v18l-6-4-6 4z",
137
182
  fill: "none",
138
183
  stroke: "currentColor",
139
- strokeWidth: 2
184
+ strokeWidth: 2,
185
+ strokeLinejoin: "round"
140
186
  }
141
187
  )
142
- ] });
188
+ },
189
+ warning: {
190
+ viewBox: "0 0 24 24",
191
+ strokes: /* @__PURE__ */ jsxs3(
192
+ "g",
193
+ {
194
+ fill: "none",
195
+ stroke: "currentColor",
196
+ strokeWidth: 2,
197
+ strokeLinecap: "round",
198
+ strokeLinejoin: "round",
199
+ children: [
200
+ /* @__PURE__ */ jsx4("path", { d: "M10.3 3.9 2.4 18a2 2 0 0 0 1.7 3h15.8a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0z" }),
201
+ /* @__PURE__ */ jsx4("path", { d: "M12 9v4" }),
202
+ /* @__PURE__ */ jsx4("path", { d: "M12 17h.01" })
203
+ ]
204
+ }
205
+ )
206
+ }
207
+ };
208
+ function Icon({ name, size = 16, className, ...rest }) {
209
+ const { viewBox, strokes } = GLYPHS[name];
210
+ return /* @__PURE__ */ jsx4(
211
+ "svg",
212
+ {
213
+ "aria-hidden": true,
214
+ focusable: false,
215
+ ...rest,
216
+ width: size,
217
+ height: size,
218
+ className: cx("elb-icon", `elb-icon--${name}`, className),
219
+ viewBox,
220
+ children: strokes
221
+ }
222
+ );
143
223
  }
144
224
 
145
225
  // src/design/components/atoms/Eyebrow.tsx
@@ -200,7 +280,7 @@ function Text({
200
280
  }
201
281
 
202
282
  // src/design/components/atoms/TextLink.tsx
203
- import { Fragment as Fragment2, jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
283
+ import { Fragment as Fragment3, jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
204
284
  function TextLink({
205
285
  href,
206
286
  children,
@@ -219,7 +299,7 @@ function TextLink({
219
299
  className
220
300
  )
221
301
  };
222
- const content = /* @__PURE__ */ jsxs5(Fragment2, { children: [
302
+ const content = /* @__PURE__ */ jsxs5(Fragment3, { children: [
223
303
  children,
224
304
  arrow && /* @__PURE__ */ jsx8("span", { "aria-hidden": "true", children: " \u2192" })
225
305
  ] });
@@ -263,7 +343,7 @@ import {
263
343
  useRef,
264
344
  useState
265
345
  } from "react";
266
- import { Fragment as Fragment3, jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
346
+ import { Fragment as Fragment4, jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
267
347
  var CONFIRM_MS = 1400;
268
348
  async function copyText(text) {
269
349
  try {
@@ -297,7 +377,7 @@ function InstallCommand({
297
377
  setState(copied ? "done" : "failed");
298
378
  if (copied) timer.current = setTimeout(() => setState("idle"), CONFIRM_MS);
299
379
  };
300
- return /* @__PURE__ */ jsxs6(Fragment3, { children: [
380
+ return /* @__PURE__ */ jsxs6(Fragment4, { children: [
301
381
  /* @__PURE__ */ jsxs6(
302
382
  "button",
303
383
  {
@@ -334,8 +414,29 @@ function InstallCommand({
334
414
  ] });
335
415
  }
336
416
 
417
+ // src/design/components/atoms/PhotoPlaceholder.tsx
418
+ import { jsx as jsx11 } from "react/jsx-runtime";
419
+ function PhotoPlaceholder({
420
+ label = "photo",
421
+ tone = "theme",
422
+ className,
423
+ ...rest
424
+ }) {
425
+ const named = rest.role !== void 0 || rest["aria-label"] !== void 0 || rest["aria-labelledby"] !== void 0;
426
+ return /* @__PURE__ */ jsx11(
427
+ "div",
428
+ {
429
+ "aria-hidden": named ? void 0 : true,
430
+ ...rest,
431
+ className: cx("elb-photo", tone === "viz" && "elb-photo--viz", className),
432
+ ...tone === "viz" ? { "data-theme": "dark" } : {},
433
+ children: label
434
+ }
435
+ );
436
+ }
437
+
337
438
  // src/design/components/molecules/CheckList.tsx
338
- import { jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
439
+ import { jsx as jsx12, jsxs as jsxs7 } from "react/jsx-runtime";
339
440
  function CheckList({
340
441
  items,
341
442
  layout = "inline",
@@ -344,7 +445,7 @@ function CheckList({
344
445
  ...rest
345
446
  }) {
346
447
  const stack = layout === "stack";
347
- return /* @__PURE__ */ jsx11(
448
+ return /* @__PURE__ */ jsx12(
348
449
  "ul",
349
450
  {
350
451
  ...rest,
@@ -355,7 +456,7 @@ function CheckList({
355
456
  className
356
457
  ),
357
458
  children: items.map((item, index) => /* @__PURE__ */ jsxs7("li", { className: "elb-checklist__item", children: [
358
- /* @__PURE__ */ jsx11(Icon, { name: "check", size: stack ? 14 : 16 }),
459
+ /* @__PURE__ */ jsx12(Icon, { name: "check", size: stack ? 14 : 16 }),
359
460
  item
360
461
  ] }, index))
361
462
  }
@@ -363,7 +464,7 @@ function CheckList({
363
464
  }
364
465
 
365
466
  // src/design/components/molecules/SectionHeading.tsx
366
- import { Fragment as Fragment4, jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
467
+ import { Fragment as Fragment5, jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
367
468
  function SectionHeading({
368
469
  title,
369
470
  eyebrow,
@@ -386,22 +487,22 @@ function SectionHeading({
386
487
  className
387
488
  ),
388
489
  children: [
389
- eyebrow !== void 0 && /* @__PURE__ */ jsx12(Eyebrow, { children: eyebrow }),
490
+ eyebrow !== void 0 && /* @__PURE__ */ jsx13(Eyebrow, { children: eyebrow }),
390
491
  hero ? /* @__PURE__ */ jsxs8("h1", { className: "elb-sh__title elb-sh__title--display", children: [
391
492
  title,
392
- highlight !== void 0 && /* @__PURE__ */ jsxs8(Fragment4, { children: [
493
+ highlight !== void 0 && /* @__PURE__ */ jsxs8(Fragment5, { children: [
393
494
  " ",
394
- /* @__PURE__ */ jsx12("span", { className: "elb-sh__highlight", children: highlight })
495
+ /* @__PURE__ */ jsx13("span", { className: "elb-sh__highlight", children: highlight })
395
496
  ] })
396
- ] }) : /* @__PURE__ */ jsx12("h2", { className: cx("elb-sh__title", `elb-sh__title--${size}`), children: title }),
397
- lead !== void 0 && /* @__PURE__ */ jsx12("p", { className: cx("elb-sh__lead", hero && "elb-sh__lead--hero"), children: lead })
497
+ ] }) : /* @__PURE__ */ jsx13("h2", { className: cx("elb-sh__title", `elb-sh__title--${size}`), children: title }),
498
+ lead !== void 0 && /* @__PURE__ */ jsx13("p", { className: cx("elb-sh__lead", hero && "elb-sh__lead--hero"), children: lead })
398
499
  ]
399
500
  }
400
501
  );
401
502
  }
402
503
 
403
504
  // src/design/components/molecules/ProblemCard.tsx
404
- import { jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
505
+ import { jsx as jsx14, jsxs as jsxs9 } from "react/jsx-runtime";
405
506
  function ProblemCard({
406
507
  number,
407
508
  title,
@@ -418,17 +519,17 @@ function ProblemCard({
418
519
  className: cx("elb-problem-card", className),
419
520
  children: [
420
521
  /* @__PURE__ */ jsxs9("h3", { className: "elb-problem-card__title", children: [
421
- /* @__PURE__ */ jsx13("span", { className: "elb-problem-card__number", children: number }),
522
+ /* @__PURE__ */ jsx14("span", { className: "elb-problem-card__number", children: number }),
422
523
  title
423
524
  ] }),
424
- /* @__PURE__ */ jsx13("p", { className: "elb-problem-card__text", children })
525
+ /* @__PURE__ */ jsx14("p", { className: "elb-problem-card__text", children })
425
526
  ]
426
527
  }
427
528
  );
428
529
  }
429
530
 
430
531
  // src/design/components/molecules/FeatureItem.tsx
431
- import { jsx as jsx14, jsxs as jsxs10 } from "react/jsx-runtime";
532
+ import { jsx as jsx15, jsxs as jsxs10 } from "react/jsx-runtime";
432
533
  function FeatureItem({
433
534
  title,
434
535
  children,
@@ -440,11 +541,11 @@ function FeatureItem({
440
541
  ...rest
441
542
  }) {
442
543
  return /* @__PURE__ */ jsxs10("div", { ...rest, className: cx("elb-feature", className), children: [
443
- /* @__PURE__ */ jsx14(Icon, { name: "check", size: 20 }),
544
+ /* @__PURE__ */ jsx15(Icon, { name: "check", size: 20 }),
444
545
  /* @__PURE__ */ jsxs10("div", { children: [
445
- /* @__PURE__ */ jsx14("h3", { className: "elb-feature__title", children: title }),
446
- /* @__PURE__ */ jsx14("p", { className: "elb-feature__text", children }),
447
- href !== void 0 && /* @__PURE__ */ jsx14(
546
+ /* @__PURE__ */ jsx15("h3", { className: "elb-feature__title", children: title }),
547
+ /* @__PURE__ */ jsx15("p", { className: "elb-feature__text", children }),
548
+ href !== void 0 && /* @__PURE__ */ jsx15(
448
549
  TextLink,
449
550
  {
450
551
  ...linkAttributes,
@@ -461,9 +562,9 @@ function FeatureItem({
461
562
 
462
563
  // src/design/components/molecules/FaqItem.tsx
463
564
  import {
464
- Fragment as Fragment5
565
+ Fragment as Fragment6
465
566
  } from "react";
466
- import { jsx as jsx15, jsxs as jsxs11 } from "react/jsx-runtime";
567
+ import { jsx as jsx16, jsxs as jsxs11 } from "react/jsx-runtime";
467
568
  function FaqItem({
468
569
  question,
469
570
  children,
@@ -472,15 +573,15 @@ function FaqItem({
472
573
  }) {
473
574
  const parts = Array.isArray(children) ? children : [children];
474
575
  return /* @__PURE__ */ jsxs11("details", { ...rest, className: cx("elb-faq", className), children: [
475
- /* @__PURE__ */ jsx15("summary", { className: "elb-faq__question", children: question }),
476
- /* @__PURE__ */ jsx15("div", { className: "elb-faq__answer", children: parts.map(
477
- (part, index) => typeof part === "string" ? /* @__PURE__ */ jsx15("p", { children: part }, index) : /* @__PURE__ */ jsx15(Fragment5, { children: part }, index)
576
+ /* @__PURE__ */ jsx16("summary", { className: "elb-faq__question", children: question }),
577
+ /* @__PURE__ */ jsx16("div", { className: "elb-faq__answer", children: parts.map(
578
+ (part, index) => typeof part === "string" ? /* @__PURE__ */ jsx16("p", { children: part }, index) : /* @__PURE__ */ jsx16(Fragment6, { children: part }, index)
478
579
  ) })
479
580
  ] });
480
581
  }
481
582
 
482
583
  // src/design/components/molecules/PlanCard.tsx
483
- import { jsx as jsx16, jsxs as jsxs12 } from "react/jsx-runtime";
584
+ import { jsx as jsx17, jsxs as jsxs12 } from "react/jsx-runtime";
484
585
  function PlanCard({
485
586
  label,
486
587
  title,
@@ -500,11 +601,11 @@ function PlanCard({
500
601
  highlight,
501
602
  className: cx("elb-plan", className),
502
603
  children: [
503
- /* @__PURE__ */ jsx16(Eyebrow, { variant: "label", tone: highlight ? "link" : "muted", children: label }),
504
- /* @__PURE__ */ jsx16("h3", { className: "elb-plan__title", children: title }),
505
- /* @__PURE__ */ jsx16("p", { className: "elb-plan__text", children }),
506
- features && /* @__PURE__ */ jsx16(CheckList, { items: features, layout: "stack" }),
507
- cta && /* @__PURE__ */ jsx16(
604
+ /* @__PURE__ */ jsx17(Eyebrow, { variant: "label", tone: highlight ? "link" : "muted", children: label }),
605
+ /* @__PURE__ */ jsx17("h3", { className: "elb-plan__title", children: title }),
606
+ /* @__PURE__ */ jsx17("p", { className: "elb-plan__text", children }),
607
+ features && /* @__PURE__ */ jsx17(CheckList, { items: features, layout: "stack" }),
608
+ cta && /* @__PURE__ */ jsx17(
508
609
  Button,
509
610
  {
510
611
  ...cta.attributes,
@@ -521,7 +622,7 @@ function PlanCard({
521
622
  }
522
623
 
523
624
  // src/design/components/molecules/CaseCard.tsx
524
- import { jsx as jsx17, jsxs as jsxs13 } from "react/jsx-runtime";
625
+ import { jsx as jsx18, jsxs as jsxs13 } from "react/jsx-runtime";
525
626
  function CaseCard({
526
627
  label,
527
628
  title,
@@ -531,15 +632,15 @@ function CaseCard({
531
632
  ...rest
532
633
  }) {
533
634
  return /* @__PURE__ */ jsxs13(Card, { ...rest, padding: "md", className: cx("elb-case-card", className), children: [
534
- /* @__PURE__ */ jsx17(Eyebrow, { variant: "label", children: label }),
535
- /* @__PURE__ */ jsx17("h3", { className: "elb-case-card__title", children: title }),
536
- /* @__PURE__ */ jsx17("p", { className: "elb-case-card__text", children }),
537
- /* @__PURE__ */ jsx17("div", { className: "elb-case-card__stats", children: stats.map((stat, index) => /* @__PURE__ */ jsx17(Stat, { value: stat.value, children: stat.label }, index)) })
635
+ /* @__PURE__ */ jsx18(Eyebrow, { variant: "label", children: label }),
636
+ /* @__PURE__ */ jsx18("h3", { className: "elb-case-card__title", children: title }),
637
+ /* @__PURE__ */ jsx18("p", { className: "elb-case-card__text", children }),
638
+ /* @__PURE__ */ jsx18("div", { className: "elb-case-card__stats", children: stats.map((stat, index) => /* @__PURE__ */ jsx18(Stat, { value: stat.value, children: stat.label }, index)) })
538
639
  ] });
539
640
  }
540
641
 
541
642
  // src/design/components/molecules/HighlightCard.tsx
542
- import { jsx as jsx18, jsxs as jsxs14 } from "react/jsx-runtime";
643
+ import { jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
543
644
  function HighlightCard({
544
645
  label,
545
646
  title,
@@ -559,10 +660,10 @@ function HighlightCard({
559
660
  glow: true,
560
661
  className: cx("elb-highlight-card", className),
561
662
  children: [
562
- /* @__PURE__ */ jsx18(Eyebrow, { variant: "label", children: label }),
563
- /* @__PURE__ */ jsx18("h3", { className: "elb-highlight-card__title", children: title }),
564
- /* @__PURE__ */ jsx18("p", { className: "elb-highlight-card__text", children }),
565
- /* @__PURE__ */ jsx18(
663
+ /* @__PURE__ */ jsx19(Eyebrow, { variant: "label", children: label }),
664
+ /* @__PURE__ */ jsx19("h3", { className: "elb-highlight-card__title", children: title }),
665
+ /* @__PURE__ */ jsx19("p", { className: "elb-highlight-card__text", children }),
666
+ cta && /* @__PURE__ */ jsx19(
566
667
  Button,
567
668
  {
568
669
  ...cta.attributes,
@@ -579,15 +680,146 @@ function HighlightCard({
579
680
  );
580
681
  }
581
682
 
683
+ // src/design/components/molecules/BrowserFrame.tsx
684
+ import { jsx as jsx20, jsxs as jsxs15 } from "react/jsx-runtime";
685
+ function BrowserFrame({
686
+ url,
687
+ bookmarks,
688
+ onNavigate,
689
+ onReload,
690
+ actions,
691
+ children,
692
+ className,
693
+ ...rest
694
+ }) {
695
+ return /* @__PURE__ */ jsxs15("div", { ...rest, className: cx("elb-browser", className), children: [
696
+ /* @__PURE__ */ jsxs15("div", { className: "elb-browser__bar", children: [
697
+ /* @__PURE__ */ jsxs15("span", { className: "elb-browser__dots", "aria-hidden": "true", children: [
698
+ /* @__PURE__ */ jsx20("span", {}),
699
+ /* @__PURE__ */ jsx20("span", {}),
700
+ /* @__PURE__ */ jsx20("span", {})
701
+ ] }),
702
+ /* @__PURE__ */ jsxs15("div", { className: "elb-browser__address", title: url, children: [
703
+ /* @__PURE__ */ jsx20(Icon, { name: "lock", size: 14 }),
704
+ /* @__PURE__ */ jsx20("span", { className: "elb-browser__url", children: url })
705
+ ] }),
706
+ onReload && /* @__PURE__ */ jsx20(
707
+ "button",
708
+ {
709
+ type: "button",
710
+ className: "elb-browser__reload",
711
+ "aria-label": "Reload",
712
+ onClick: onReload,
713
+ children: /* @__PURE__ */ jsx20(Icon, { name: "reload", size: 16 })
714
+ }
715
+ ),
716
+ actions && /* @__PURE__ */ jsx20("div", { className: "elb-browser__actions", children: actions })
717
+ ] }),
718
+ bookmarks && bookmarks.length > 0 && /* @__PURE__ */ jsx20("nav", { className: "elb-browser__bookmarks", "aria-label": "Bookmarks", children: bookmarks.map((bookmark) => {
719
+ const current = bookmark.url === url;
720
+ return /* @__PURE__ */ jsxs15(
721
+ "button",
722
+ {
723
+ type: "button",
724
+ className: cx(
725
+ "elb-browser__bookmark",
726
+ current && "elb-browser__bookmark--active"
727
+ ),
728
+ "aria-current": current ? "page" : void 0,
729
+ disabled: !onNavigate,
730
+ onClick: () => onNavigate?.(bookmark.url),
731
+ children: [
732
+ /* @__PURE__ */ jsx20(Icon, { name: "bookmark", size: 14 }),
733
+ /* @__PURE__ */ jsx20("span", { children: bookmark.label })
734
+ ]
735
+ },
736
+ bookmark.url
737
+ );
738
+ }) }),
739
+ /* @__PURE__ */ jsx20("div", { className: "elb-browser__viewport", children })
740
+ ] });
741
+ }
742
+
743
+ // src/design/components/molecules/QuickstartSteps.tsx
744
+ import { jsx as jsx21, jsxs as jsxs16 } from "react/jsx-runtime";
745
+ var ARROWS = [
746
+ {
747
+ kind: "wave",
748
+ paths: [
749
+ "M4 26 C 18 6, 34 6, 40 20 S 58 34, 70 16",
750
+ "M62 20 L70 16 L69.5 25"
751
+ ]
752
+ },
753
+ {
754
+ kind: "loop",
755
+ paths: [
756
+ "M4 28 C 20 30, 26 8, 38 10 C 50 12, 44 28, 36 24 C 28 20, 44 6, 72 14",
757
+ "M65.7 7.6 L72 14 L63.3 16.2"
758
+ ]
759
+ }
760
+ ];
761
+ function Arrow({ kind, paths }) {
762
+ return /* @__PURE__ */ jsx21(
763
+ "li",
764
+ {
765
+ className: cx("elb-quickstart__arrow", `elb-quickstart__arrow--${kind}`),
766
+ "aria-hidden": "true",
767
+ children: /* @__PURE__ */ jsx21(
768
+ "svg",
769
+ {
770
+ width: "76",
771
+ height: "40",
772
+ viewBox: "0 0 76 40",
773
+ fill: "none",
774
+ stroke: "currentColor",
775
+ strokeWidth: "2.2",
776
+ strokeLinecap: "round",
777
+ strokeLinejoin: "round",
778
+ children: paths.map((d) => /* @__PURE__ */ jsx21("path", { d }, d))
779
+ }
780
+ )
781
+ }
782
+ );
783
+ }
784
+ function QuickstartSteps({
785
+ steps,
786
+ children,
787
+ className,
788
+ ...rest
789
+ }) {
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 })
796
+ ] }),
797
+ /* @__PURE__ */ jsx21("p", { className: "elb-quickstart__copy", children: step.text })
798
+ ] }, step.title);
799
+ return index < steps.length - 1 ? [
800
+ item,
801
+ /* @__PURE__ */ jsx21(
802
+ Arrow,
803
+ {
804
+ ...ARROWS[index % ARROWS.length]
805
+ },
806
+ `arrow-${index}`
807
+ )
808
+ ] : [item];
809
+ }) }),
810
+ children
811
+ ] });
812
+ }
813
+
582
814
  // src/design/components/layout/Section.tsx
583
- import { jsx as jsx19 } from "react/jsx-runtime";
815
+ import { jsx as jsx22 } from "react/jsx-runtime";
584
816
  function Section({
585
817
  children,
586
818
  tone = "default",
587
819
  className,
588
820
  ...rest
589
821
  }) {
590
- return /* @__PURE__ */ jsx19(
822
+ return /* @__PURE__ */ jsx22(
591
823
  "section",
592
824
  {
593
825
  ...rest,
@@ -596,13 +828,13 @@ function Section({
596
828
  tone === "alt" && "elb-section--alt",
597
829
  className
598
830
  ),
599
- children: /* @__PURE__ */ jsx19("div", { className: "elb-section__inner", children })
831
+ children: /* @__PURE__ */ jsx22("div", { className: "elb-section__inner", children })
600
832
  }
601
833
  );
602
834
  }
603
835
 
604
836
  // src/design/components/layout/CardGrid.tsx
605
- import { jsx as jsx20 } from "react/jsx-runtime";
837
+ import { jsx as jsx23 } from "react/jsx-runtime";
606
838
  function CardGrid({
607
839
  children,
608
840
  min,
@@ -610,7 +842,7 @@ function CardGrid({
610
842
  className,
611
843
  ...rest
612
844
  }) {
613
- return /* @__PURE__ */ jsx20(
845
+ return /* @__PURE__ */ jsx23(
614
846
  "div",
615
847
  {
616
848
  ...rest,
@@ -626,7 +858,7 @@ function CardGrid({
626
858
  }
627
859
 
628
860
  // src/design/components/layout/Split.tsx
629
- import { jsx as jsx21, jsxs as jsxs15 } from "react/jsx-runtime";
861
+ import { jsx as jsx24, jsxs as jsxs17 } from "react/jsx-runtime";
630
862
  function Split({
631
863
  start,
632
864
  end,
@@ -634,7 +866,7 @@ function Split({
634
866
  className,
635
867
  ...rest
636
868
  }) {
637
- return /* @__PURE__ */ jsxs15(
869
+ return /* @__PURE__ */ jsxs17(
638
870
  "div",
639
871
  {
640
872
  ...rest,
@@ -644,23 +876,24 @@ function Split({
644
876
  className
645
877
  ),
646
878
  children: [
647
- /* @__PURE__ */ jsx21("div", { className: "elb-split__start", children: start }),
648
- /* @__PURE__ */ jsx21("div", { className: "elb-split__end", children: end })
879
+ /* @__PURE__ */ jsx24("div", { className: "elb-split__start", children: start }),
880
+ /* @__PURE__ */ jsx24("div", { className: "elb-split__end", children: end })
649
881
  ]
650
882
  }
651
883
  );
652
884
  }
653
885
 
654
886
  // src/design/components/layout/Cluster.tsx
655
- import { jsx as jsx22 } from "react/jsx-runtime";
887
+ import { jsx as jsx25 } from "react/jsx-runtime";
656
888
  function Cluster({
657
889
  children,
658
890
  gap = "actions",
659
891
  align = "start",
892
+ separated = false,
660
893
  className,
661
894
  ...rest
662
895
  }) {
663
- return /* @__PURE__ */ jsx22(
896
+ return /* @__PURE__ */ jsx25(
664
897
  "div",
665
898
  {
666
899
  ...rest,
@@ -668,6 +901,7 @@ function Cluster({
668
901
  "elb-cluster",
669
902
  gap === "links" && "elb-cluster--links",
670
903
  align === "center" && "elb-cluster--center",
904
+ separated && "elb-cluster--separated",
671
905
  className
672
906
  ),
673
907
  children
@@ -676,7 +910,7 @@ function Cluster({
676
910
  }
677
911
 
678
912
  // src/design/components/layout/Hero.tsx
679
- import { jsx as jsx23, jsxs as jsxs16 } from "react/jsx-runtime";
913
+ import { jsx as jsx26, jsxs as jsxs18 } from "react/jsx-runtime";
680
914
  function Hero({
681
915
  eyebrow,
682
916
  title,
@@ -688,8 +922,8 @@ function Hero({
688
922
  className,
689
923
  ...rest
690
924
  }) {
691
- return /* @__PURE__ */ jsx23("section", { ...rest, className: cx("elb-hero", className), children: /* @__PURE__ */ jsxs16("div", { className: "elb-hero__inner", children: [
692
- /* @__PURE__ */ jsx23(
925
+ return /* @__PURE__ */ jsx26("section", { ...rest, className: cx("elb-hero", className), children: /* @__PURE__ */ jsxs18("div", { className: "elb-hero__inner", children: [
926
+ /* @__PURE__ */ jsx26(
693
927
  SectionHeading,
694
928
  {
695
929
  level: 1,
@@ -699,9 +933,9 @@ function Hero({
699
933
  lead
700
934
  }
701
935
  ),
702
- /* @__PURE__ */ jsx23("div", { className: "elb-hero__actions", children: actions }),
703
- proof !== void 0 && /* @__PURE__ */ jsx23("div", { className: "elb-hero__proof", children: proof }),
704
- children !== void 0 && /* @__PURE__ */ jsx23("div", { className: "elb-hero__demo", children })
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 })
705
939
  ] }) });
706
940
  }
707
941
 
@@ -1074,12 +1308,12 @@ var MAPPING_EVENTS = [
1074
1308
  ];
1075
1309
 
1076
1310
  // src/design/components/viz/parts/CodeTokens.tsx
1077
- import { Fragment as Fragment6, jsx as jsx24, jsxs as jsxs17 } from "react/jsx-runtime";
1311
+ import { Fragment as Fragment7, jsx as jsx27, jsxs as jsxs19 } from "react/jsx-runtime";
1078
1312
  function CodeTokens({
1079
1313
  tokens,
1080
1314
  active = false
1081
1315
  }) {
1082
- return /* @__PURE__ */ jsx24(Fragment6, { children: tokens.map((token, index) => /* @__PURE__ */ jsx24(
1316
+ return /* @__PURE__ */ jsx27(Fragment7, { children: tokens.map((token, index) => /* @__PURE__ */ jsx27(
1083
1317
  "span",
1084
1318
  {
1085
1319
  className: cx(
@@ -1093,16 +1327,16 @@ function CodeTokens({
1093
1327
  )) });
1094
1328
  }
1095
1329
  function CodeLine({ number, bar, className, children }) {
1096
- return /* @__PURE__ */ jsxs17("div", { className: cx("elb-viz-line", className), children: [
1097
- /* @__PURE__ */ jsx24(
1330
+ return /* @__PURE__ */ jsxs19("div", { className: cx("elb-viz-line", className), children: [
1331
+ /* @__PURE__ */ jsx27(
1098
1332
  "span",
1099
1333
  {
1100
1334
  className: cx("elb-viz-line__bar", bar && `elb-viz-line__bar--${bar}`),
1101
1335
  "aria-hidden": "true"
1102
1336
  }
1103
1337
  ),
1104
- number !== void 0 && /* @__PURE__ */ jsx24("span", { className: "elb-viz-line__number", children: number }),
1105
- /* @__PURE__ */ jsx24("span", { className: "elb-viz-line__code", children })
1338
+ number !== void 0 && /* @__PURE__ */ jsx27("span", { className: "elb-viz-line__number", children: number }),
1339
+ /* @__PURE__ */ jsx27("span", { className: "elb-viz-line__code", children })
1106
1340
  ] });
1107
1341
  }
1108
1342
 
@@ -1212,26 +1446,26 @@ function tokenizeCode(line, highlight) {
1212
1446
  }
1213
1447
 
1214
1448
  // src/design/components/viz/parts/VizFrame.tsx
1215
- import { jsx as jsx25 } from "react/jsx-runtime";
1449
+ import { jsx as jsx28 } from "react/jsx-runtime";
1216
1450
  function VizFrame({
1217
1451
  variant,
1218
1452
  children,
1219
1453
  className,
1220
1454
  ...rest
1221
1455
  }) {
1222
- return /* @__PURE__ */ jsx25(
1456
+ return /* @__PURE__ */ jsx28(
1223
1457
  "div",
1224
1458
  {
1225
1459
  ...rest,
1226
1460
  "data-theme": "dark",
1227
1461
  className: cx("elb-viz", `elb-viz--${variant}`, className),
1228
- children: /* @__PURE__ */ jsx25("div", { className: "elb-viz__body", children })
1462
+ children: /* @__PURE__ */ jsx28("div", { className: "elb-viz__body", children })
1229
1463
  }
1230
1464
  );
1231
1465
  }
1232
1466
 
1233
1467
  // src/design/components/viz/DestinationMappingViz.tsx
1234
- import { jsx as jsx26, jsxs as jsxs18 } from "react/jsx-runtime";
1468
+ import { jsx as jsx29, jsxs as jsxs20 } from "react/jsx-runtime";
1235
1469
  function DestinationMappingViz({
1236
1470
  initialEvent = 0,
1237
1471
  caption = MAPPING_CAPTION,
@@ -1240,10 +1474,10 @@ function DestinationMappingViz({
1240
1474
  const [index, setIndex] = useState2(initialEvent);
1241
1475
  const event = MAPPING_EVENTS[index];
1242
1476
  const name = `${event.entity} ${event.action}`;
1243
- return /* @__PURE__ */ jsx26(VizFrame, { ...rest, variant: "mapping", children: /* @__PURE__ */ jsxs18("div", { className: "elb-viz-mapping", children: [
1244
- /* @__PURE__ */ jsxs18("div", { className: "elb-viz-mapping__pick", children: [
1245
- /* @__PURE__ */ jsx26("div", { className: "elb-viz-mapping__label", children: "Pick an event" }),
1246
- /* @__PURE__ */ jsx26("div", { className: "elb-viz-mapping__chips", children: MAPPING_EVENTS.map((item, position) => /* @__PURE__ */ jsxs18(
1477
+ return /* @__PURE__ */ jsx29(VizFrame, { ...rest, variant: "mapping", children: /* @__PURE__ */ jsxs20("div", { className: "elb-viz-mapping", children: [
1478
+ /* @__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(
1247
1481
  "button",
1248
1482
  {
1249
1483
  type: "button",
@@ -1255,21 +1489,21 @@ function DestinationMappingViz({
1255
1489
  ),
1256
1490
  onClick: () => setIndex(position),
1257
1491
  children: [
1258
- /* @__PURE__ */ jsx26("span", { className: "elb-viz-mapping__chip-entity", children: item.entity }),
1259
- /* @__PURE__ */ jsx26("span", { className: "elb-viz-mapping__chip-action", children: item.action })
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 })
1260
1494
  ]
1261
1495
  },
1262
1496
  `${item.entity} ${item.action}`
1263
1497
  )) })
1264
1498
  ] }),
1265
- /* @__PURE__ */ jsx26("div", { className: "elb-viz-mapping__event", children: /* @__PURE__ */ jsx26(CodeTokens, { tokens: tokenizeCode(formatElb(event), name), active: true }) }),
1266
- /* @__PURE__ */ jsxs18("div", { className: "elb-viz-mapping__body", children: [
1267
- /* @__PURE__ */ jsx26("div", { className: "elb-viz-mapping__comment", children: "// same event, four destinations, zero app code touched" }),
1268
- /* @__PURE__ */ jsx26("div", { className: "elb-viz-mapping__cards", children: event.destinations.map((destination) => /* @__PURE__ */ jsxs18("div", { className: "elb-viz-mapping__card", children: [
1269
- /* @__PURE__ */ jsx26("span", { className: "elb-viz-mapping__name", children: destination.label }),
1270
- /* @__PURE__ */ jsxs18("div", { className: "elb-viz-mapping__row", children: [
1271
- /* @__PURE__ */ jsx26("span", { className: "elb-viz-mapping__tag", children: "mapping" }),
1272
- /* @__PURE__ */ jsx26("span", { className: "elb-viz-mapping__rule", children: /* @__PURE__ */ jsx26(
1499
+ /* @__PURE__ */ jsx29("div", { className: "elb-viz-mapping__event", children: /* @__PURE__ */ jsx29(CodeTokens, { tokens: tokenizeCode(formatElb(event), name), active: true }) }),
1500
+ /* @__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 }),
1504
+ /* @__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(
1273
1507
  CodeTokens,
1274
1508
  {
1275
1509
  tokens: tokenizeCode(
@@ -1284,9 +1518,9 @@ function DestinationMappingViz({
1284
1518
  }
1285
1519
  ) })
1286
1520
  ] }),
1287
- /* @__PURE__ */ jsxs18("div", { className: "elb-viz-mapping__row elb-viz-mapping__row--sends", children: [
1288
- /* @__PURE__ */ jsx26("span", { className: "elb-viz-mapping__tag", children: "sends" }),
1289
- /* @__PURE__ */ jsx26("div", { className: "elb-viz-mapping__calls", children: destination.calls.flatMap((call) => formatCall(call)).map((line, position) => /* @__PURE__ */ jsx26("div", { className: "elb-viz-mapping__line", children: /* @__PURE__ */ jsx26(
1521
+ /* @__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(
1290
1524
  CodeTokens,
1291
1525
  {
1292
1526
  tokens: tokenizeCode(line, destination.rule.name),
@@ -1296,7 +1530,7 @@ function DestinationMappingViz({
1296
1530
  ] })
1297
1531
  ] }, destination.id)) })
1298
1532
  ] }),
1299
- caption !== "" && /* @__PURE__ */ jsx26("p", { className: "elb-viz-mapping__caption", children: caption })
1533
+ caption !== "" && /* @__PURE__ */ jsx29("p", { className: "elb-viz-mapping__caption", children: caption })
1300
1534
  ] }) });
1301
1535
  }
1302
1536
 
@@ -1572,7 +1806,7 @@ function heroFrame(t) {
1572
1806
  }
1573
1807
 
1574
1808
  // src/design/components/viz/parts/EventsTable.tsx
1575
- import { Fragment as Fragment7 } from "react";
1809
+ import { Fragment as Fragment8 } from "react";
1576
1810
 
1577
1811
  // src/design/components/viz/parts/style.ts
1578
1812
  function vizStyle(vars) {
@@ -1581,38 +1815,38 @@ function vizStyle(vars) {
1581
1815
  }
1582
1816
 
1583
1817
  // src/design/components/viz/parts/EventsTable.tsx
1584
- import { jsx as jsx27, jsxs as jsxs19 } from "react/jsx-runtime";
1818
+ import { jsx as jsx30, jsxs as jsxs21 } from "react/jsx-runtime";
1585
1819
  var SKELETON_ROWS = 6;
1586
1820
  function EventsTable({ rows }) {
1587
1821
  const skeletons = Math.max(0, SKELETON_ROWS - rows.length);
1588
- return /* @__PURE__ */ jsxs19("div", { className: "elb-viz-table", children: [
1589
- /* @__PURE__ */ jsxs19("div", { className: "elb-viz-table__head", children: [
1590
- /* @__PURE__ */ jsxs19("span", { className: "elb-viz-table__query", children: [
1591
- /* @__PURE__ */ jsx27("span", { className: "elb-viz-table__keyword", children: "SELECT" }),
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" }),
1592
1826
  " *",
1593
1827
  " ",
1594
- /* @__PURE__ */ jsx27("span", { className: "elb-viz-table__keyword", children: "FROM" }),
1828
+ /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__keyword", children: "FROM" }),
1595
1829
  " ",
1596
- /* @__PURE__ */ jsx27("span", { className: "elb-viz-table__source", children: "walkerOS.events" })
1830
+ /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__source", children: "walkerOS.events" })
1597
1831
  ] }),
1598
- /* @__PURE__ */ jsxs19("span", { className: "elb-viz-table__live", children: [
1599
- /* @__PURE__ */ jsx27("span", { className: "elb-viz-table__dot", "aria-hidden": "true" }),
1832
+ /* @__PURE__ */ jsxs21("span", { className: "elb-viz-table__live", children: [
1833
+ /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__dot", "aria-hidden": "true" }),
1600
1834
  "live"
1601
1835
  ] })
1602
1836
  ] }),
1603
- /* @__PURE__ */ jsx27("div", { className: "elb-viz-table__body", children: /* @__PURE__ */ jsx27("div", { className: "elb-viz-table__scroll", children: /* @__PURE__ */ jsxs19("div", { className: "elb-viz-table__rows", children: [
1604
- /* @__PURE__ */ jsxs19("div", { className: "elb-viz-table__row elb-viz-table__row--header", children: [
1605
- /* @__PURE__ */ jsx27("span", { className: "elb-viz-table__cell elb-viz-table__cell--n", children: "Row" }),
1606
- /* @__PURE__ */ jsxs19("span", { className: "elb-viz-table__cell", children: [
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: [
1607
1841
  "name",
1608
- /* @__PURE__ */ jsx27("span", { className: "elb-viz-table__type", children: "STRING" })
1842
+ /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__type", children: "STRING" })
1609
1843
  ] }),
1610
- /* @__PURE__ */ jsxs19("span", { className: "elb-viz-table__cell", children: [
1844
+ /* @__PURE__ */ jsxs21("span", { className: "elb-viz-table__cell", children: [
1611
1845
  "data",
1612
- /* @__PURE__ */ jsx27("span", { className: "elb-viz-table__type", children: "JSON" })
1846
+ /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__type", children: "JSON" })
1613
1847
  ] })
1614
1848
  ] }),
1615
- rows.map((row, index) => /* @__PURE__ */ jsxs19(
1849
+ rows.map((row, index) => /* @__PURE__ */ jsxs21(
1616
1850
  "div",
1617
1851
  {
1618
1852
  className: "elb-viz-table__row elb-viz-table__row--event",
@@ -1622,15 +1856,15 @@ function EventsTable({ rows }) {
1622
1856
  "--elb-viz-row-shift": (1 - ease(clamp(row.age / 500))) * -80
1623
1857
  }),
1624
1858
  children: [
1625
- /* @__PURE__ */ jsx27("span", { className: "elb-viz-table__cell elb-viz-table__cell--n", children: index + 1 }),
1626
- /* @__PURE__ */ jsx27("span", { className: "elb-viz-table__cell", children: row.name }),
1627
- /* @__PURE__ */ jsxs19("span", { className: "elb-viz-table__cell elb-viz-table__json", 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: [
1628
1862
  "{",
1629
- Object.entries(row.data).map(([key, value], position) => /* @__PURE__ */ jsxs19(Fragment7, { children: [
1863
+ Object.entries(row.data).map(([key, value], position) => /* @__PURE__ */ jsxs21(Fragment8, { children: [
1630
1864
  position === 0 ? '"' : ',"',
1631
- /* @__PURE__ */ jsx27("span", { className: "elb-viz-table__json-key", children: key }),
1865
+ /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__json-key", children: key }),
1632
1866
  '":"',
1633
- /* @__PURE__ */ jsx27("span", { className: "elb-viz-table__json-value", children: value }),
1867
+ /* @__PURE__ */ jsx30("span", { className: "elb-viz-table__json-value", children: value }),
1634
1868
  '"'
1635
1869
  ] }, key)),
1636
1870
  "}"
@@ -1639,15 +1873,15 @@ function EventsTable({ rows }) {
1639
1873
  },
1640
1874
  row.key
1641
1875
  )),
1642
- Array.from({ length: skeletons }, (_, index) => /* @__PURE__ */ jsxs19(
1876
+ Array.from({ length: skeletons }, (_, index) => /* @__PURE__ */ jsxs21(
1643
1877
  "div",
1644
1878
  {
1645
1879
  className: "elb-viz-table__row elb-viz-table__row--skeleton",
1646
1880
  "aria-hidden": "true",
1647
1881
  children: [
1648
- /* @__PURE__ */ jsx27("span", { className: "elb-viz-table__cell elb-viz-table__cell--n", children: rows.length + index + 1 }),
1649
- /* @__PURE__ */ jsx27("span", { className: "elb-viz-table__cell", children: /* @__PURE__ */ jsx27("span", { className: "elb-viz-table__bar" }) }),
1650
- /* @__PURE__ */ jsx27("span", { className: "elb-viz-table__cell", children: /* @__PURE__ */ jsx27("span", { className: "elb-viz-table__bar" }) })
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" }) })
1651
1885
  ]
1652
1886
  },
1653
1887
  `skeleton-${index}`
@@ -1696,14 +1930,14 @@ function useReducedMotion() {
1696
1930
  }
1697
1931
 
1698
1932
  // src/design/components/viz/parts/Pill.tsx
1699
- import { jsx as jsx28 } from "react/jsx-runtime";
1933
+ import { jsx as jsx31 } from "react/jsx-runtime";
1700
1934
  function Pill({
1701
1935
  part,
1702
1936
  variant = "solid",
1703
1937
  className,
1704
1938
  children
1705
1939
  }) {
1706
- return /* @__PURE__ */ jsx28(
1940
+ return /* @__PURE__ */ jsx31(
1707
1941
  "span",
1708
1942
  {
1709
1943
  className: cx(
@@ -1718,7 +1952,7 @@ function Pill({
1718
1952
  }
1719
1953
 
1720
1954
  // src/design/components/viz/parts/Thumb.tsx
1721
- import { Fragment as Fragment8, jsx as jsx29, jsxs as jsxs20 } from "react/jsx-runtime";
1955
+ import { Fragment as Fragment9, jsx as jsx32, jsxs as jsxs22 } from "react/jsx-runtime";
1722
1956
  var BUG_LINES = [
1723
1957
  "M36 46 L28 42",
1724
1958
  "M35 54 L27 56",
@@ -1736,9 +1970,9 @@ var BUG_SPOTS = [
1736
1970
  [67, 56, 2.8]
1737
1971
  ];
1738
1972
  function Bug() {
1739
- return /* @__PURE__ */ jsxs20(Fragment8, { children: [
1740
- /* @__PURE__ */ jsx29("rect", { className: "elb-viz-thumb__ground", width: 112, height: 86 }),
1741
- /* @__PURE__ */ jsx29(
1973
+ return /* @__PURE__ */ jsxs22(Fragment9, { children: [
1974
+ /* @__PURE__ */ jsx32("rect", { className: "elb-viz-thumb__ground", width: 112, height: 86 }),
1975
+ /* @__PURE__ */ jsx32(
1742
1976
  "ellipse",
1743
1977
  {
1744
1978
  className: "elb-viz-thumb__shadow",
@@ -1748,18 +1982,18 @@ function Bug() {
1748
1982
  ry: 6
1749
1983
  }
1750
1984
  ),
1751
- /* @__PURE__ */ jsx29(
1985
+ /* @__PURE__ */ jsx32(
1752
1986
  "g",
1753
1987
  {
1754
1988
  className: "elb-viz-thumb__legs",
1755
1989
  strokeWidth: 2.4,
1756
1990
  strokeLinecap: "round",
1757
- children: BUG_LINES.map((d) => /* @__PURE__ */ jsx29("path", { d }, d))
1991
+ children: BUG_LINES.map((d) => /* @__PURE__ */ jsx32("path", { d }, d))
1758
1992
  }
1759
1993
  ),
1760
- /* @__PURE__ */ jsx29("circle", { className: "elb-viz-thumb__ink", cx: 42, cy: 16, r: 2 }),
1761
- /* @__PURE__ */ jsx29("circle", { className: "elb-viz-thumb__ink", cx: 70, cy: 16, r: 2 }),
1762
- /* @__PURE__ */ jsx29(
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(
1763
1997
  "ellipse",
1764
1998
  {
1765
1999
  className: "elb-viz-thumb__ink",
@@ -1769,9 +2003,9 @@ function Bug() {
1769
2003
  ry: 7.5
1770
2004
  }
1771
2005
  ),
1772
- /* @__PURE__ */ jsx29("circle", { className: "elb-viz-thumb__eye", cx: 52, cy: 29, r: 1.6 }),
1773
- /* @__PURE__ */ jsx29("circle", { className: "elb-viz-thumb__eye", cx: 60, cy: 29, r: 1.6 }),
1774
- /* @__PURE__ */ jsx29(
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(
1775
2009
  "ellipse",
1776
2010
  {
1777
2011
  className: "elb-viz-thumb__shell",
@@ -1781,8 +2015,8 @@ function Bug() {
1781
2015
  ry: 18
1782
2016
  }
1783
2017
  ),
1784
- /* @__PURE__ */ jsx29("path", { className: "elb-viz-thumb__seam", d: "M56 33 L56 68", strokeWidth: 2 }),
1785
- BUG_SPOTS.map(([x, y, r]) => /* @__PURE__ */ jsx29(
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(
1786
2020
  "circle",
1787
2021
  {
1788
2022
  className: "elb-viz-thumb__ink",
@@ -1792,7 +2026,7 @@ function Bug() {
1792
2026
  },
1793
2027
  `${x}-${y}`
1794
2028
  )),
1795
- /* @__PURE__ */ jsx29(
2029
+ /* @__PURE__ */ jsx32(
1796
2030
  "path",
1797
2031
  {
1798
2032
  className: "elb-viz-thumb__shine",
@@ -1804,9 +2038,9 @@ function Bug() {
1804
2038
  ] });
1805
2039
  }
1806
2040
  function Tech() {
1807
- return /* @__PURE__ */ jsxs20(Fragment8, { children: [
1808
- /* @__PURE__ */ jsx29("rect", { className: "elb-viz-thumb__ground", width: 112, height: 86 }),
1809
- /* @__PURE__ */ jsx29(
2041
+ return /* @__PURE__ */ jsxs22(Fragment9, { children: [
2042
+ /* @__PURE__ */ jsx32("rect", { className: "elb-viz-thumb__ground", width: 112, height: 86 }),
2043
+ /* @__PURE__ */ jsx32(
1810
2044
  "rect",
1811
2045
  {
1812
2046
  className: "elb-viz-thumb__badge",
@@ -1817,8 +2051,8 @@ function Tech() {
1817
2051
  rx: 8
1818
2052
  }
1819
2053
  ),
1820
- /* @__PURE__ */ jsx29("circle", { className: "elb-viz-thumb__dot", cx: 47, cy: 52, r: 3.2 }),
1821
- /* @__PURE__ */ jsx29(
2054
+ /* @__PURE__ */ jsx32("circle", { className: "elb-viz-thumb__dot", cx: 47, cy: 52, r: 3.2 }),
2055
+ /* @__PURE__ */ jsx32(
1822
2056
  "path",
1823
2057
  {
1824
2058
  className: "elb-viz-thumb__wave",
@@ -1827,7 +2061,7 @@ function Tech() {
1827
2061
  strokeLinecap: "round"
1828
2062
  }
1829
2063
  ),
1830
- /* @__PURE__ */ jsx29(
2064
+ /* @__PURE__ */ jsx32(
1831
2065
  "path",
1832
2066
  {
1833
2067
  className: "elb-viz-thumb__wave",
@@ -1839,9 +2073,9 @@ function Tech() {
1839
2073
  ] });
1840
2074
  }
1841
2075
  function Food() {
1842
- return /* @__PURE__ */ jsxs20(Fragment8, { children: [
1843
- /* @__PURE__ */ jsx29("rect", { className: "elb-viz-thumb__ground", width: 112, height: 86 }),
1844
- /* @__PURE__ */ jsx29(
2076
+ return /* @__PURE__ */ jsxs22(Fragment9, { children: [
2077
+ /* @__PURE__ */ jsx32("rect", { className: "elb-viz-thumb__ground", width: 112, height: 86 }),
2078
+ /* @__PURE__ */ jsx32(
1845
2079
  "ellipse",
1846
2080
  {
1847
2081
  className: "elb-viz-thumb__plate",
@@ -1851,7 +2085,7 @@ function Food() {
1851
2085
  ry: 10
1852
2086
  }
1853
2087
  ),
1854
- /* @__PURE__ */ jsx29(
2088
+ /* @__PURE__ */ jsx32(
1855
2089
  "ellipse",
1856
2090
  {
1857
2091
  className: "elb-viz-thumb__loaf",
@@ -1861,7 +2095,7 @@ function Food() {
1861
2095
  ry: 19
1862
2096
  }
1863
2097
  ),
1864
- /* @__PURE__ */ jsx29(
2098
+ /* @__PURE__ */ jsx32(
1865
2099
  "ellipse",
1866
2100
  {
1867
2101
  className: "elb-viz-thumb__crust",
@@ -1871,7 +2105,7 @@ function Food() {
1871
2105
  ry: 13
1872
2106
  }
1873
2107
  ),
1874
- /* @__PURE__ */ jsx29(
2108
+ /* @__PURE__ */ jsx32(
1875
2109
  "path",
1876
2110
  {
1877
2111
  className: "elb-viz-thumb__score",
@@ -1880,7 +2114,7 @@ function Food() {
1880
2114
  strokeLinecap: "round"
1881
2115
  }
1882
2116
  ),
1883
- /* @__PURE__ */ jsx29(
2117
+ /* @__PURE__ */ jsx32(
1884
2118
  "path",
1885
2119
  {
1886
2120
  className: "elb-viz-thumb__score",
@@ -1892,7 +2126,7 @@ function Food() {
1892
2126
  ] });
1893
2127
  }
1894
2128
  function Thumb({ kind }) {
1895
- return /* @__PURE__ */ jsx29(
2129
+ return /* @__PURE__ */ jsx32(
1896
2130
  "svg",
1897
2131
  {
1898
2132
  className: cx("elb-viz-thumb", `elb-viz-thumb--${kind}`),
@@ -1900,13 +2134,13 @@ function Thumb({ kind }) {
1900
2134
  preserveAspectRatio: "xMidYMid slice",
1901
2135
  "aria-hidden": "true",
1902
2136
  focusable: "false",
1903
- children: kind === "bug" ? /* @__PURE__ */ jsx29(Bug, {}) : kind === "tech" ? /* @__PURE__ */ jsx29(Tech, {}) : /* @__PURE__ */ jsx29(Food, {})
2137
+ children: kind === "bug" ? /* @__PURE__ */ jsx32(Bug, {}) : kind === "tech" ? /* @__PURE__ */ jsx32(Tech, {}) : /* @__PURE__ */ jsx32(Food, {})
1904
2138
  }
1905
2139
  );
1906
2140
  }
1907
2141
 
1908
2142
  // src/design/components/viz/HeroTaggingViz.tsx
1909
- import { Fragment as Fragment9, jsx as jsx30, jsxs as jsxs21 } from "react/jsx-runtime";
2143
+ import { Fragment as Fragment10, jsx as jsx33, jsxs as jsxs23 } from "react/jsx-runtime";
1910
2144
  var MAX_STEP = 64;
1911
2145
  function HeroTaggingViz({
1912
2146
  playing = true,
@@ -1933,22 +2167,22 @@ function HeroTaggingViz({
1933
2167
  return () => cancelAnimationFrame(frame);
1934
2168
  }, [animate, speed]);
1935
2169
  const { article, lines, fade: fade2, caretOn, card, cursor, rows } = heroFrame(time);
1936
- return /* @__PURE__ */ jsx30(VizFrame, { ...rest, variant: "hero", children: /* @__PURE__ */ jsxs21("div", { className: "elb-viz-hero", children: [
1937
- /* @__PURE__ */ jsxs21("div", { ref: paneRef, className: "elb-viz-hero__pane", children: [
1938
- /* @__PURE__ */ jsxs21("div", { className: "elb-viz-hero__bar", children: [
1939
- /* @__PURE__ */ jsxs21("span", { className: "elb-viz-hero__dots", "aria-hidden": "true", children: [
1940
- /* @__PURE__ */ jsx30("span", {}),
1941
- /* @__PURE__ */ jsx30("span", {}),
1942
- /* @__PURE__ */ jsx30("span", {})
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", {})
1943
2177
  ] }),
1944
- /* @__PURE__ */ jsx30("span", { className: "elb-viz-hero__file", children: "ArticleTeaser.html" })
2178
+ /* @__PURE__ */ jsx33("span", { className: "elb-viz-hero__file", children: "ArticleTeaser.html" })
1945
2179
  ] }),
1946
- /* @__PURE__ */ jsx30(
2180
+ /* @__PURE__ */ jsx33(
1947
2181
  "div",
1948
2182
  {
1949
2183
  className: "elb-viz-hero__code",
1950
2184
  style: vizStyle({ "--elb-viz-fade": fade2 }),
1951
- children: lines.map((line) => /* @__PURE__ */ jsx30(
2185
+ children: lines.map((line) => /* @__PURE__ */ jsx33(
1952
2186
  CodeLine,
1953
2187
  {
1954
2188
  number: line.n,
@@ -1957,23 +2191,23 @@ function HeroTaggingViz({
1957
2191
  "elb-viz-hero__line",
1958
2192
  line.on && "elb-viz-hero__line--on"
1959
2193
  ),
1960
- children: line.caret === null ? /* @__PURE__ */ jsx30(CodeTokens, { tokens: line.tokens }) : /* @__PURE__ */ jsxs21(Fragment9, { children: [
1961
- /* @__PURE__ */ jsx30(CodeTokens, { tokens: line.tokens.slice(0, line.caret) }),
1962
- /* @__PURE__ */ jsx30(
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(
1963
2197
  "span",
1964
2198
  {
1965
2199
  className: "elb-viz-caret",
1966
2200
  style: vizStyle({ "--elb-viz-caret": caretOn ? 1 : 0 })
1967
2201
  }
1968
2202
  ),
1969
- /* @__PURE__ */ jsx30(CodeTokens, { tokens: line.tokens.slice(line.caret) })
2203
+ /* @__PURE__ */ jsx33(CodeTokens, { tokens: line.tokens.slice(line.caret) })
1970
2204
  ] })
1971
2205
  },
1972
2206
  line.id
1973
2207
  ))
1974
2208
  }
1975
2209
  ),
1976
- /* @__PURE__ */ jsx30("div", { className: "elb-viz-hero__stage", children: /* @__PURE__ */ jsxs21(
2210
+ /* @__PURE__ */ jsx33("div", { className: "elb-viz-hero__stage", children: /* @__PURE__ */ jsxs23(
1977
2211
  "div",
1978
2212
  {
1979
2213
  className: cx(
@@ -1985,13 +2219,13 @@ function HeroTaggingViz({
1985
2219
  "--elb-viz-card-offset": card.offset
1986
2220
  }),
1987
2221
  children: [
1988
- /* @__PURE__ */ jsxs21("div", { className: "elb-viz-hero__pills", children: [
1989
- card.entity && /* @__PURE__ */ jsx30(Pill, { part: "entity", children: "article" }),
1990
- card.impression && /* @__PURE__ */ jsx30(Pill, { part: "action", children: "impression" })
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" })
1991
2225
  ] }),
1992
- /* @__PURE__ */ jsx30("div", { className: "elb-viz-hero__thumb", children: /* @__PURE__ */ jsx30(Thumb, { kind: article.thumb }) }),
1993
- /* @__PURE__ */ jsxs21("div", { className: "elb-viz-hero__text", children: [
1994
- /* @__PURE__ */ jsx30(
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(
1995
2229
  "span",
1996
2230
  {
1997
2231
  className: cx(
@@ -2001,7 +2235,7 @@ function HeroTaggingViz({
2001
2235
  children: article.kicker
2002
2236
  }
2003
2237
  ),
2004
- /* @__PURE__ */ jsx30("span", { className: "elb-viz-hero__title", children: /* @__PURE__ */ jsx30(
2238
+ /* @__PURE__ */ jsx33("span", { className: "elb-viz-hero__title", children: /* @__PURE__ */ jsx33(
2005
2239
  "span",
2006
2240
  {
2007
2241
  className: cx(
@@ -2011,7 +2245,7 @@ function HeroTaggingViz({
2011
2245
  children: article.title
2012
2246
  }
2013
2247
  ) }),
2014
- /* @__PURE__ */ jsx30("div", { className: "elb-viz-hero__foot", children: /* @__PURE__ */ jsxs21(
2248
+ /* @__PURE__ */ jsx33("div", { className: "elb-viz-hero__foot", children: /* @__PURE__ */ jsxs23(
2015
2249
  "span",
2016
2250
  {
2017
2251
  className: cx(
@@ -2020,7 +2254,7 @@ function HeroTaggingViz({
2020
2254
  ),
2021
2255
  children: [
2022
2256
  "Open \u2192",
2023
- /* @__PURE__ */ jsxs21(
2257
+ /* @__PURE__ */ jsxs23(
2024
2258
  "span",
2025
2259
  {
2026
2260
  className: "elb-viz-hero__cursor",
@@ -2034,8 +2268,8 @@ function HeroTaggingViz({
2034
2268
  "--elb-viz-press": cursor.pressed ? 0.8 : 1
2035
2269
  }),
2036
2270
  children: [
2037
- /* @__PURE__ */ jsx30("span", { className: "elb-viz-hero__ring" }),
2038
- /* @__PURE__ */ jsx30("span", { className: "elb-viz-hero__pointer" })
2271
+ /* @__PURE__ */ jsx33("span", { className: "elb-viz-hero__ring" }),
2272
+ /* @__PURE__ */ jsx33("span", { className: "elb-viz-hero__pointer" })
2039
2273
  ]
2040
2274
  }
2041
2275
  )
@@ -2047,7 +2281,7 @@ function HeroTaggingViz({
2047
2281
  }
2048
2282
  ) })
2049
2283
  ] }),
2050
- /* @__PURE__ */ jsx30(EventsTable, { rows })
2284
+ /* @__PURE__ */ jsx33(EventsTable, { rows })
2051
2285
  ] }) });
2052
2286
  }
2053
2287
 
@@ -2315,7 +2549,7 @@ function teaserAdvance(n) {
2315
2549
  }
2316
2550
 
2317
2551
  // src/design/components/viz/ArticleTeaserTracking.tsx
2318
- import { jsx as jsx31, jsxs as jsxs22 } from "react/jsx-runtime";
2552
+ import { jsx as jsx34, jsxs as jsxs24 } from "react/jsx-runtime";
2319
2553
  var FIRST_DELAY = 800;
2320
2554
  var JUMP_DELAY = 250;
2321
2555
  var SCROLL_DELAY = 400;
@@ -2328,7 +2562,7 @@ function TeaserCard({
2328
2562
  seen,
2329
2563
  ahead
2330
2564
  }) {
2331
- return /* @__PURE__ */ jsxs22(
2565
+ return /* @__PURE__ */ jsxs24(
2332
2566
  "div",
2333
2567
  {
2334
2568
  className: cx(
@@ -2337,9 +2571,9 @@ function TeaserCard({
2337
2571
  ahead && "elb-viz-teaser__card--ahead"
2338
2572
  ),
2339
2573
  children: [
2340
- /* @__PURE__ */ jsxs22("span", { className: "elb-viz-teaser__pills", children: [
2341
- /* @__PURE__ */ jsx31(Pill, { part: "entity", className: fade(seen.has("entity")), children: TEASER_ENTITY }),
2342
- /* @__PURE__ */ jsx31(
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(
2343
2577
  Pill,
2344
2578
  {
2345
2579
  part: "property",
@@ -2349,8 +2583,14 @@ function TeaserCard({
2349
2583
  }
2350
2584
  )
2351
2585
  ] }),
2352
- /* @__PURE__ */ jsx31("div", { className: cx("elb-viz-teaser__photo", fade(seen.has("image"))), children: "photo" }),
2353
- /* @__PURE__ */ jsx31(
2586
+ /* @__PURE__ */ jsx34(
2587
+ PhotoPlaceholder,
2588
+ {
2589
+ tone: "viz",
2590
+ className: cx("elb-viz-teaser__photo", fade(seen.has("image")))
2591
+ }
2592
+ ),
2593
+ /* @__PURE__ */ jsx34(
2354
2594
  "span",
2355
2595
  {
2356
2596
  className: cx(
@@ -2361,7 +2601,7 @@ function TeaserCard({
2361
2601
  children: article.kicker
2362
2602
  }
2363
2603
  ),
2364
- /* @__PURE__ */ jsx31(
2604
+ /* @__PURE__ */ jsx34(
2365
2605
  "span",
2366
2606
  {
2367
2607
  className: cx(
@@ -2372,7 +2612,7 @@ function TeaserCard({
2372
2612
  children: article.title
2373
2613
  }
2374
2614
  ),
2375
- /* @__PURE__ */ jsx31(
2615
+ /* @__PURE__ */ jsx34(
2376
2616
  "span",
2377
2617
  {
2378
2618
  className: cx(
@@ -2396,7 +2636,7 @@ function TeaserGroup({
2396
2636
  const globalsOn = seen.has(page.globalsEffect);
2397
2637
  const listOn = seen.has(page.listEffect);
2398
2638
  const reached = page.step <= current;
2399
- return /* @__PURE__ */ jsxs22(
2639
+ return /* @__PURE__ */ jsxs24(
2400
2640
  "div",
2401
2641
  {
2402
2642
  className: cx(
@@ -2405,7 +2645,7 @@ function TeaserGroup({
2405
2645
  !reached && !lead && "elb-viz-teaser__page--ahead"
2406
2646
  ),
2407
2647
  children: [
2408
- /* @__PURE__ */ jsx31("span", { className: "elb-viz-teaser__page-pill", children: /* @__PURE__ */ jsx31(
2648
+ /* @__PURE__ */ jsx34("span", { className: "elb-viz-teaser__page-pill", children: /* @__PURE__ */ jsx34(
2409
2649
  Pill,
2410
2650
  {
2411
2651
  part: "globals",
@@ -2413,7 +2653,7 @@ function TeaserGroup({
2413
2653
  children: `pagetype:${page.pagetype}`
2414
2654
  }
2415
2655
  ) }),
2416
- /* @__PURE__ */ jsxs22(
2656
+ /* @__PURE__ */ jsxs24(
2417
2657
  "div",
2418
2658
  {
2419
2659
  className: cx(
@@ -2421,14 +2661,14 @@ function TeaserGroup({
2421
2661
  listOn && "elb-viz-teaser__list--on"
2422
2662
  ),
2423
2663
  children: [
2424
- /* @__PURE__ */ jsxs22("div", { className: cx("elb-viz-teaser__list-head", fade(listOn)), children: [
2425
- /* @__PURE__ */ jsxs22("span", { className: "elb-viz-teaser__list-label", children: [
2426
- /* @__PURE__ */ jsx31("span", { className: "elb-viz-teaser__list-name", children: page.header }),
2427
- page.heading !== void 0 && /* @__PURE__ */ jsx31("span", { className: "elb-viz-teaser__list-heading", children: page.heading })
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 })
2428
2668
  ] }),
2429
- /* @__PURE__ */ jsx31(Pill, { part: "context", children: `list:${page.list}` })
2669
+ /* @__PURE__ */ jsx34(Pill, { part: "context", children: `list:${page.list}` })
2430
2670
  ] }),
2431
- /* @__PURE__ */ jsx31("div", { className: "elb-viz-teaser__cards", children: page.articles.map((article, index) => /* @__PURE__ */ jsx31(
2671
+ /* @__PURE__ */ jsx34("div", { className: "elb-viz-teaser__cards", children: page.articles.map((article, index) => /* @__PURE__ */ jsx34(
2432
2672
  TeaserCard,
2433
2673
  {
2434
2674
  article,
@@ -2458,7 +2698,9 @@ function ArticleTeaserTracking({
2458
2698
  () => initialStep ? teaserStepEnd(initialStep) : 0
2459
2699
  );
2460
2700
  const [delay, setDelay] = useState5(FIRST_DELAY);
2701
+ const [pinned, setPinned] = useState5(null);
2461
2702
  const playing = autoplay && inView && !reduced;
2703
+ const end = pinned === null ? TEASER_ITEMS.length : teaserStepEnd(pinned);
2462
2704
  useEffect4(() => {
2463
2705
  if (reduced) setShown(TEASER_ITEMS.length);
2464
2706
  }, [reduced]);
@@ -2471,10 +2713,10 @@ function ArticleTeaserTracking({
2471
2713
  return;
2472
2714
  }
2473
2715
  setShown(advance.next);
2474
- setDelay(advance.delay);
2716
+ setDelay(advance.next < end ? advance.delay : null);
2475
2717
  }, delay / speed);
2476
2718
  return () => clearTimeout(timer);
2477
- }, [playing, delay, shown, speed]);
2719
+ }, [playing, delay, shown, speed, end]);
2478
2720
  useEffect4(() => {
2479
2721
  const pane = codeRef.current;
2480
2722
  if (!pane || shown === 0 || typeof pane.scrollTo !== "function")
@@ -2490,6 +2732,7 @@ function ArticleTeaserTracking({
2490
2732
  return () => clearTimeout(timer);
2491
2733
  }, [shown, reduced]);
2492
2734
  const jump = (step) => {
2735
+ setPinned(step);
2493
2736
  if (autoplay && !reduced) {
2494
2737
  setShown(teaserStepStart(step));
2495
2738
  setDelay(JUMP_DELAY);
@@ -2520,15 +2763,15 @@ function ArticleTeaserTracking({
2520
2763
  separated && "elb-viz-teaser__file--separated"
2521
2764
  );
2522
2765
  separated = true;
2523
- return /* @__PURE__ */ jsx31("div", { "data-line": index, className: lineClass, children: /* @__PURE__ */ jsxs22("div", { className: fileClass, children: [
2524
- /* @__PURE__ */ jsx31("span", { className: "elb-viz-teaser__file-name", children: item.name }),
2525
- /* @__PURE__ */ jsx31("span", { className: "elb-viz-teaser__file-level", children: item.level })
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 })
2526
2769
  ] }) }, index);
2527
2770
  }
2528
2771
  lineNumber += 1;
2529
2772
  const reached = index < count;
2530
2773
  const isCurrent = index === count - 1 && item.effect !== void 0;
2531
- return /* @__PURE__ */ jsx31("div", { "data-line": index, className: lineClass, children: /* @__PURE__ */ jsx31(
2774
+ return /* @__PURE__ */ jsx34("div", { "data-line": index, className: lineClass, children: /* @__PURE__ */ jsx34(
2532
2775
  CodeLine,
2533
2776
  {
2534
2777
  number: lineNumber,
@@ -2537,13 +2780,13 @@ function ArticleTeaserTracking({
2537
2780
  "elb-viz-teaser__code",
2538
2781
  isCurrent && `elb-viz-teaser__code--current-${item.part ?? "plain"}`
2539
2782
  ),
2540
- children: /* @__PURE__ */ jsx31(CodeTokens, { tokens: item.tokens, active: reached })
2783
+ children: /* @__PURE__ */ jsx34(CodeTokens, { tokens: item.tokens, active: reached })
2541
2784
  }
2542
2785
  ) }, index);
2543
2786
  });
2544
- return /* @__PURE__ */ jsx31(VizFrame, { ...rest, variant: "teaser", children: /* @__PURE__ */ jsxs22("div", { className: "elb-viz-teaser", children: [
2545
- /* @__PURE__ */ jsxs22("div", { className: "elb-viz-teaser__header", children: [
2546
- /* @__PURE__ */ jsx31("div", { className: "elb-viz-teaser__steps", children: TEASER_STEPS.map(({ step, label }) => /* @__PURE__ */ jsxs22(
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(
2547
2790
  "button",
2548
2791
  {
2549
2792
  type: "button",
@@ -2556,18 +2799,18 @@ function ArticleTeaserTracking({
2556
2799
  ),
2557
2800
  onClick: () => jump(step),
2558
2801
  children: [
2559
- /* @__PURE__ */ jsx31("span", { className: "elb-viz-teaser__step-number", children: step }),
2560
- /* @__PURE__ */ jsx31("span", { children: label })
2802
+ /* @__PURE__ */ jsx34("span", { className: "elb-viz-teaser__step-number", children: step }),
2803
+ /* @__PURE__ */ jsx34("span", { children: label })
2561
2804
  ]
2562
2805
  },
2563
2806
  step
2564
2807
  )) }),
2565
- /* @__PURE__ */ jsx31("div", { className: "elb-viz-teaser__legend", children: /* @__PURE__ */ jsx31(EventLegend, {}) })
2808
+ /* @__PURE__ */ jsx34("div", { className: "elb-viz-teaser__legend", children: /* @__PURE__ */ jsx34(EventLegend, {}) })
2566
2809
  ] }),
2567
- /* @__PURE__ */ jsx31("p", { className: "elb-viz-teaser__caption", children: TEASER_CAPTIONS[current] }),
2568
- /* @__PURE__ */ jsxs22("div", { className: "elb-viz-teaser__body", children: [
2569
- /* @__PURE__ */ jsx31("div", { className: "elb-viz-teaser__pane", children: /* @__PURE__ */ jsx31("div", { ref: codeRef, className: "elb-viz-teaser__scroll", children: lines }) }),
2570
- /* @__PURE__ */ jsx31("div", { className: "elb-viz-teaser__pages", children: TEASER_PAGE_IDS.map((id, index) => /* @__PURE__ */ jsx31(
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(
2571
2814
  TeaserGroup,
2572
2815
  {
2573
2816
  page: TEASER_PAGES[id],
@@ -2582,6 +2825,7 @@ function ArticleTeaserTracking({
2582
2825
  }
2583
2826
  export {
2584
2827
  ArticleTeaserTracking,
2828
+ BrowserFrame,
2585
2829
  Button,
2586
2830
  Card,
2587
2831
  CardGrid,
@@ -2599,8 +2843,10 @@ export {
2599
2843
  Icon,
2600
2844
  InlineCode,
2601
2845
  InstallCommand,
2846
+ PhotoPlaceholder,
2602
2847
  PlanCard,
2603
2848
  ProblemCard,
2849
+ QuickstartSteps,
2604
2850
  Section,
2605
2851
  SectionHeading,
2606
2852
  Split,