eidotter 0.37.1 → 0.37.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/LICENSE.md +3 -3
  2. package/dist/components/Brand/components/Wordmark.d.ts +1 -1
  3. package/dist/components/Brand/components/Wordmark.js +1 -1
  4. package/dist/components/CalendarHeatmap/components/CalendarHeatmap.d.ts +40 -0
  5. package/dist/components/CalendarHeatmap/components/CalendarHeatmap.js +84 -0
  6. package/dist/components/CalendarHeatmap/components/index.d.ts +2 -0
  7. package/dist/components/CalendarHeatmap/components/index.js +1 -0
  8. package/dist/components/CalendarHeatmap/index.d.ts +2 -0
  9. package/dist/components/CalendarHeatmap/index.js +1 -0
  10. package/dist/components/CommandPrompt/components/CommandPrompt.js +1 -1
  11. package/dist/components/HoldToComplete/components/HoldToComplete.d.ts +30 -0
  12. package/dist/components/HoldToComplete/components/HoldToComplete.js +145 -0
  13. package/dist/components/HoldToComplete/components/index.d.ts +2 -0
  14. package/dist/components/HoldToComplete/components/index.js +1 -0
  15. package/dist/components/HoldToComplete/index.d.ts +2 -0
  16. package/dist/components/HoldToComplete/index.js +1 -0
  17. package/dist/components/InlineExpand/components/InlineExpand.d.ts +1 -1
  18. package/dist/components/InlineExpand/components/InlineExpand.js +30 -2
  19. package/dist/components/ProgressRing/components/ProgressRing.d.ts +35 -0
  20. package/dist/components/ProgressRing/components/ProgressRing.js +34 -0
  21. package/dist/components/ProgressRing/components/index.d.ts +2 -0
  22. package/dist/components/ProgressRing/components/index.js +1 -0
  23. package/dist/components/ProgressRing/index.d.ts +2 -0
  24. package/dist/components/ProgressRing/index.js +1 -0
  25. package/dist/components/RetroEffects/components/RetroEffects.d.ts +28 -5
  26. package/dist/components/RetroEffects/components/RetroEffects.js +24 -8
  27. package/dist/components/TimelineContainer/components/TimelineContainer.js +1 -1
  28. package/dist/components/registry.d.ts +1 -1
  29. package/dist/components/registry.js +422 -16
  30. package/dist/eidotter.css +1 -1
  31. package/dist/index.d.ts +6 -0
  32. package/dist/index.es.js +1791 -505
  33. package/dist/index.umd.js +3 -3
  34. package/package.json +12 -4
  35. package/src/styles/dos-utilities.css +15 -6
  36. package/src/styles/fonts/JetBrainsMonoNerdFont-Bold.woff2 +0 -0
  37. package/src/styles/fonts/JetBrainsMonoNerdFont-Medium.woff2 +0 -0
  38. package/src/styles/fonts/JetBrainsMonoNerdFont-Regular.woff2 +0 -0
  39. package/src/styles/fonts/JetBrainsMonoNerdFont-SemiBold.woff2 +0 -0
  40. package/src/styles/fonts/JetBrainsMonoNerdFont_OFL.txt +93 -0
  41. package/src/styles/fonts.css +50 -3
  42. package/src/styles/tokens.css +9 -4
  43. package/tailwind.preset.cjs +9 -1
  44. package/src/styles/fonts/Flexi_IBM_VGA_LICENSE.txt +0 -428
  45. package/src/styles/fonts/Flexi_IBM_VGA_True.ttf +0 -0
package/dist/index.es.js CHANGED
@@ -395,7 +395,7 @@ function Ie(e) {
395
395
  if (!(e instanceof t.HTMLElement) && !(e instanceof t.SVGElement)) return !1;
396
396
  let { display: n, visibility: r } = e.style, i = n !== "none" && r !== "hidden" && r !== "collapse";
397
397
  if (i) {
398
- let { getComputedStyle: t } = e.ownerDocument.defaultView, { display: n, visibility: r } = t(e);
398
+ let { getComputedStyle: t } = be(e), { display: n, visibility: r } = t(e);
399
399
  i = n !== "none" && r !== "hidden" && r !== "collapse";
400
400
  }
401
401
  return i;
@@ -435,7 +435,7 @@ function Ue(e) {
435
435
  function We(e) {
436
436
  let t = e;
437
437
  for (; t != null;) {
438
- if (t instanceof t.ownerDocument.defaultView.HTMLElement && t.inert) return !0;
438
+ if (t instanceof be(t).HTMLElement && t.inert) return !0;
439
439
  t = t.parentElement;
440
440
  }
441
441
  return !1;
@@ -635,15 +635,23 @@ function kt(e) {
635
635
  let t = be(e), n = H(e);
636
636
  if (vt.get(t)) return;
637
637
  let r = t.HTMLElement.prototype.focus;
638
- t.HTMLElement.prototype.focus = function() {
639
- yt = !0, r.apply(this, arguments);
640
- }, n.addEventListener("keydown", wt, !0), n.addEventListener("keyup", wt, !0), n.addEventListener("click", Et, !0), t.addEventListener("focus", Dt, !0), t.addEventListener("blur", Ot, !1), typeof PointerEvent < "u" ? (n.addEventListener("pointerdown", Tt, !0), n.addEventListener("pointermove", Tt, !0), n.addEventListener("pointerup", Tt, !0)) : process.env.NODE_ENV === "test" && (n.addEventListener("mousedown", Tt, !0), n.addEventListener("mousemove", Tt, !0), n.addEventListener("mouseup", Tt, !0)), t.addEventListener("beforeunload", () => {
638
+ Reflect.defineProperty(t.HTMLElement.prototype, "focus", {
639
+ configurable: !0,
640
+ writable: !0,
641
+ value: function() {
642
+ yt = !0, r.apply(this, arguments);
643
+ }
644
+ }), n.addEventListener("keydown", wt, !0), n.addEventListener("keyup", wt, !0), n.addEventListener("click", Et, !0), t.addEventListener("focus", Dt, !0), t.addEventListener("blur", Ot, !1), typeof PointerEvent < "u" ? (n.addEventListener("pointerdown", Tt, !0), n.addEventListener("pointermove", Tt, !0), n.addEventListener("pointerup", Tt, !0)) : process.env.NODE_ENV === "test" && (n.addEventListener("mousedown", Tt, !0), n.addEventListener("mousemove", Tt, !0), n.addEventListener("mouseup", Tt, !0)), t.addEventListener("beforeunload", () => {
641
645
  At(e);
642
646
  }, { once: !0 }), vt.set(t, { focus: r });
643
647
  }
644
648
  var At = (e, t) => {
645
649
  let n = be(e), r = H(e);
646
- t && r.removeEventListener("DOMContentLoaded", t), vt.has(n) && (n.HTMLElement.prototype.focus = vt.get(n).focus, r.removeEventListener("keydown", wt, !0), r.removeEventListener("keyup", wt, !0), r.removeEventListener("click", Et, !0), n.removeEventListener("focus", Dt, !0), n.removeEventListener("blur", Ot, !1), typeof PointerEvent < "u" ? (r.removeEventListener("pointerdown", Tt, !0), r.removeEventListener("pointermove", Tt, !0), r.removeEventListener("pointerup", Tt, !0)) : process.env.NODE_ENV === "test" && (r.removeEventListener("mousedown", Tt, !0), r.removeEventListener("mousemove", Tt, !0), r.removeEventListener("mouseup", Tt, !0)), vt.delete(n));
650
+ t && r.removeEventListener("DOMContentLoaded", t), vt.has(n) && (Reflect.defineProperty(n.HTMLElement.prototype, "focus", {
651
+ configurable: !0,
652
+ writable: !0,
653
+ value: vt.get(n).focus
654
+ }), r.removeEventListener("keydown", wt, !0), r.removeEventListener("keyup", wt, !0), r.removeEventListener("click", Et, !0), n.removeEventListener("focus", Dt, !0), n.removeEventListener("blur", Ot, !1), typeof PointerEvent < "u" ? (r.removeEventListener("pointerdown", Tt, !0), r.removeEventListener("pointermove", Tt, !0), r.removeEventListener("pointerup", Tt, !0)) : process.env.NODE_ENV === "test" && (r.removeEventListener("mousedown", Tt, !0), r.removeEventListener("mousemove", Tt, !0), r.removeEventListener("mouseup", Tt, !0)), vt.delete(n));
647
655
  };
648
656
  function jt(e) {
649
657
  let t = H(e), n;
@@ -1372,7 +1380,7 @@ function Fn(e) {
1372
1380
  t && process.env.NODE_ENV !== "production" ? console.error("stopPropagation is now the default behavior for events in React Spectrum. You can use continuePropagation() to revert this behavior.") : t = !0;
1373
1381
  },
1374
1382
  continuePropagation() {
1375
- t = !1;
1383
+ t = !1, typeof n.continuePropagation == "function" && n.continuePropagation();
1376
1384
  },
1377
1385
  isPropagationStopped() {
1378
1386
  return t;
@@ -2666,7 +2674,7 @@ function Vi(e, t, n) {
2666
2674
  function Hi(e, t, n) {
2667
2675
  let { validationBehavior: r, focus: i } = e;
2668
2676
  C(() => {
2669
- if (r === "native" && n?.current && !n.current.disabled) {
2677
+ if (r === "native" && n?.current && "setCustomValidity" in n.current && !n.current.disabled) {
2670
2678
  let e = t.realtimeValidation.isInvalid ? t.realtimeValidation.validationErrors.join(" ") || "Invalid value." : "";
2671
2679
  n.current.setCustomValidity(e), n.current.hasAttribute("title") || (n.current.title = ""), t.realtimeValidation.isInvalid || t.updateValidation(Wi(n.current));
2672
2680
  }
@@ -3544,19 +3552,41 @@ function Ga(e) {
3544
3552
  let { keyboardDelegate: t, selectionManager: n, onTypeSelect: r } = e, i = f({
3545
3553
  search: "",
3546
3554
  timeout: void 0
3547
- }).current;
3548
- return { typeSelectProps: { onKeyDownCapture: t.getKeyForSearch ? (e) => {
3549
- let a = Ka(e.key);
3550
- if (!(!a || e.ctrlKey || e.metaKey || !U(e.currentTarget, G(e)) || i.search.length === 0 && a === " ")) {
3551
- if (a === " " && i.search.trim().length > 0 && (e.preventDefault(), "continuePropagation" in e || e.stopPropagation()), i.search += a, t.getKeyForSearch != null) {
3552
- let e = t.getKeyForSearch(i.search, n.focusedKey);
3553
- e ??= t.getKeyForSearch(i.search), e != null && (n.setFocusedKey(e), r && r(e));
3555
+ });
3556
+ return s(() => {
3557
+ let e = i.current.timeout;
3558
+ return () => {
3559
+ clearTimeout(e);
3560
+ };
3561
+ }, [i]), { typeSelectProps: {
3562
+ onKeyDownCapture: t.getKeyForSearch ? (e) => {
3563
+ if (i.current.search.length > 0 && e.key === " ") {
3564
+ if (e.preventDefault(), (!("continuePropagation" in e) || "continuePropagation" in e && !e.isPropagationStopped()) && e.stopPropagation(), i.current.search += " ", t.getKeyForSearch != null) {
3565
+ let e = t.getKeyForSearch(i.current.search, n.focusedKey);
3566
+ e ??= t.getKeyForSearch(i.current.search), e != null && (n.setFocusedKey(e), r && r(e));
3567
+ }
3568
+ clearTimeout(i.current.timeout), i.current.timeout = setTimeout(() => {
3569
+ i.current.search = "";
3570
+ }, Wa);
3554
3571
  }
3555
- clearTimeout(i.timeout), i.timeout = setTimeout(() => {
3556
- i.search = "";
3557
- }, Wa);
3558
- }
3559
- } : void 0 } };
3572
+ } : void 0,
3573
+ onKeyDown: t.getKeyForSearch ? (e) => {
3574
+ let a = Ka(e.key);
3575
+ if (!(!a || e.ctrlKey || e.metaKey || e.altKey || !U(e.currentTarget, G(e)) || i.current.search.length === 0 && a === " ")) {
3576
+ if (i.current.search += a, t.getKeyForSearch != null) {
3577
+ let a = t.getKeyForSearch(i.current.search, n.focusedKey);
3578
+ if (a ??= t.getKeyForSearch(i.current.search), a != null) n.setFocusedKey(a), r && r(a), e.preventDefault(), "continuePropagation" in e || e.stopPropagation();
3579
+ else {
3580
+ i.current.search = "", clearTimeout(i.current.timeout), i.current.timeout = void 0;
3581
+ return;
3582
+ }
3583
+ }
3584
+ clearTimeout(i.current.timeout), i.current.timeout = setTimeout(() => {
3585
+ i.current.search = "";
3586
+ }, Wa);
3587
+ }
3588
+ } : void 0
3589
+ } };
3560
3590
  }
3561
3591
  function Ka(e) {
3562
3592
  return e.length === 1 || !/^[A-Z]/i.test(e) ? e : "";
@@ -3574,7 +3604,7 @@ function qa(e, t) {
3574
3604
  //#endregion
3575
3605
  //#region node_modules/react-aria/dist/private/selection/useSelectableCollection.mjs
3576
3606
  function Ja(e) {
3577
- let { selectionManager: t, keyboardDelegate: n, ref: r, autoFocus: i = !1, shouldFocusWrap: a = !1, disallowEmptySelection: o = !1, disallowSelectAll: c = !1, escapeKeyBehavior: l = "clearSelection", selectOnFocus: u = t.selectionBehavior === "replace", disallowTypeAhead: d = !1, shouldUseVirtualFocus: p, allowsTabNavigation: m = !1, scrollRef: h = r, linkBehavior: g = "action" } = e, { direction: v } = tn(), y = dt(), b = (e) => {
3607
+ let { selectionManager: t, keyboardDelegate: n, ref: r, autoFocus: i = !1, shouldFocusWrap: a = !1, disallowEmptySelection: o = !1, disallowSelectAll: c = !1, escapeKeyBehavior: l = "clearSelection", selectOnFocus: u = t.selectionBehavior === "replace", disallowTypeAhead: d = !1, shouldUseVirtualFocus: p, allowsTabNavigation: m = !1, scrollRef: h = r, linkBehavior: g = "action", UNSTABLE_focusOnEntry: v } = e, { direction: y } = tn(), b = dt(), x = (e) => {
3578
3608
  if (e.altKey && e.key === "Tab" && e.preventDefault(), !r.current || !U(r.current, G(e))) return;
3579
3609
  let i = (n, i) => {
3580
3610
  if (n != null) {
@@ -3583,7 +3613,7 @@ function Ja(e) {
3583
3613
  t.setFocusedKey(n, i);
3584
3614
  });
3585
3615
  let a = Ba(r, n), o = t.getItemProps(n);
3586
- a && y.open(a, e, o.href, o.routerOptions);
3616
+ a && b.open(a, e, o.href, o.routerOptions);
3587
3617
  return;
3588
3618
  }
3589
3619
  if (t.setFocusedKey(n, i), t.isLink(n) && g === "override") return;
@@ -3606,13 +3636,13 @@ function Ja(e) {
3606
3636
  case "ArrowLeft":
3607
3637
  if (n.getKeyLeftOf) {
3608
3638
  let r = t.focusedKey == null ? n.getFirstKey?.() : n.getKeyLeftOf?.(t.focusedKey);
3609
- r == null && a && (r = v === "rtl" ? n.getFirstKey?.(t.focusedKey) : n.getLastKey?.(t.focusedKey)), r != null && (e.preventDefault(), i(r, v === "rtl" ? "first" : "last"));
3639
+ r == null && a && (r = y === "rtl" ? n.getFirstKey?.(t.focusedKey) : n.getLastKey?.(t.focusedKey)), r != null && (e.preventDefault(), i(r, y === "rtl" ? "first" : "last"));
3610
3640
  }
3611
3641
  break;
3612
3642
  case "ArrowRight":
3613
3643
  if (n.getKeyRightOf) {
3614
3644
  let r = t.focusedKey == null ? n.getFirstKey?.() : n.getKeyRightOf?.(t.focusedKey);
3615
- r == null && a && (r = v === "rtl" ? n.getLastKey?.(t.focusedKey) : n.getFirstKey?.(t.focusedKey)), r != null && (e.preventDefault(), i(r, v === "rtl" ? "last" : "first"));
3645
+ r == null && a && (r = y === "rtl" ? n.getLastKey?.(t.focusedKey) : n.getFirstKey?.(t.focusedKey)), r != null && (e.preventDefault(), i(r, y === "rtl" ? "last" : "first"));
3616
3646
  }
3617
3647
  break;
3618
3648
  case "Home":
@@ -3662,55 +3692,57 @@ function Ja(e) {
3662
3692
  break;
3663
3693
  }
3664
3694
  }
3665
- }, x = f({
3695
+ }, S = f({
3666
3696
  top: 0,
3667
3697
  left: 0
3668
3698
  });
3669
3699
  Ut(h, "scroll", () => {
3670
- x.current = {
3700
+ S.current = {
3671
3701
  top: h.current?.scrollTop ?? 0,
3672
3702
  left: h.current?.scrollLeft ?? 0
3673
3703
  };
3674
3704
  });
3675
- let S = (e) => {
3705
+ let C = (e) => {
3676
3706
  if (t.isFocused) {
3677
3707
  U(e.currentTarget, G(e)) || t.setFocused(!1);
3678
3708
  return;
3679
3709
  }
3680
- if (U(e.currentTarget, G(e))) {
3681
- if (t.setFocused(!0), t.focusedKey == null) {
3682
- let r = (e) => {
3683
- e != null && (t.setFocusedKey(e), u && !t.isSelected(e) && t.replaceSelection(e));
3684
- }, i = e.relatedTarget;
3685
- i && e.currentTarget.compareDocumentPosition(i) & Node.DOCUMENT_POSITION_FOLLOWING ? r(t.lastSelectedKey ?? n.getLastKey?.()) : r(t.firstSelectedKey ?? n.getFirstKey?.());
3686
- } else h.current && (h.current.scrollTop = x.current.top, h.current.scrollLeft = x.current.left);
3687
- if (t.focusedKey != null && h.current) {
3688
- let e = Ba(r, t.focusedKey);
3689
- e instanceof HTMLElement && (!Te(e) && !p && Ae(e), Nt() === "keyboard" && yi(e, { containingElement: r.current }));
3690
- }
3710
+ if (!U(e.currentTarget, G(e))) return;
3711
+ let i = Nt();
3712
+ t.setFocused(!0);
3713
+ let a = (e) => {
3714
+ e != null && (t.setFocusedKey(e), u && !t.isSelected(e) && t.replaceSelection(e));
3715
+ };
3716
+ if (v && (i === "keyboard" || i === "virtual")) a(v === "first" ? n.getFirstKey?.() : n.getLastKey?.());
3717
+ else if (t.focusedKey == null) {
3718
+ let r = e.relatedTarget;
3719
+ r && e.currentTarget.compareDocumentPosition(r) & Node.DOCUMENT_POSITION_FOLLOWING ? a(t.lastSelectedKey ?? n.getLastKey?.()) : a(t.firstSelectedKey ?? n.getFirstKey?.());
3720
+ } else h.current && (h.current.scrollTop = S.current.top, h.current.scrollLeft = S.current.left);
3721
+ if (t.focusedKey != null && h.current) {
3722
+ let e = Ba(r, t.focusedKey);
3723
+ e instanceof HTMLElement && (!Te(e) && !p && Ae(e), (i === "keyboard" || v && i === "virtual") && yi(e, { containingElement: r.current }));
3691
3724
  }
3692
- }, C = (e) => {
3725
+ }, w = (e) => {
3693
3726
  U(e.currentTarget, e.relatedTarget) || t.setFocused(!1);
3694
- }, w = f(!1);
3727
+ }, T = f(!1);
3695
3728
  Ut(r, ye, p ? (e) => {
3696
3729
  let { detail: n } = e;
3697
- e.stopPropagation(), t.setFocused(!0), n?.focusStrategy === "first" && (w.current = !0);
3698
- } : void 0), qa(() => {
3699
- if (w.current) {
3700
- let e = n.getFirstKey?.() ?? null;
3701
- if (e == null) {
3702
- let e = W();
3703
- Ee(r.current), Oe(e, null), t.collection.size > 0 && (w.current = !1);
3704
- } else t.setFocusedKey(e), w.current = !1;
3705
- }
3706
- }, [t.collection]), qa(() => {
3707
- t.collection.size > 0 && (w.current = !1);
3730
+ e.stopPropagation(), t.setFocused(!0), n?.focusStrategy === "first" && (T.current = !0);
3731
+ } : void 0);
3732
+ let E = n.getFirstKey?.() ?? null;
3733
+ qa(() => {
3734
+ if (T.current) if (E == null) {
3735
+ let e = W();
3736
+ Ee(r.current), Oe(e, null), t.collection.size > 0 && (T.current = !1);
3737
+ } else t.setFocusedKey(E), T.current = !1;
3738
+ }, [E, t.collection.size]), qa(() => {
3739
+ t.collection.size > 0 && (T.current = !1);
3708
3740
  }, [t.focusedKey]), Ut(r, ve, p ? (e) => {
3709
3741
  e.stopPropagation(), t.setFocused(!1), e.detail?.clearFocusKey && t.setFocusedKey(null);
3710
3742
  } : void 0);
3711
- let T = f(i), E = f(!1);
3743
+ let D = f(i), O = f(!1);
3712
3744
  s(() => {
3713
- if (T.current) {
3745
+ if (D.current) {
3714
3746
  let e = null;
3715
3747
  i === "first" && (e = n.getFirstKey?.() ?? null), i === "last" && (e = n.getLastKey?.() ?? null);
3716
3748
  let a = t.selectedKeys;
@@ -3720,42 +3752,42 @@ function Ja(e) {
3720
3752
  break;
3721
3753
  }
3722
3754
  }
3723
- t.setFocused(!0), t.setFocusedKey(e), e == null && !p && r.current && Nn(r.current), t.collection.size > 0 && (T.current = !1, E.current = !0);
3755
+ t.setFocused(!0), t.setFocusedKey(e), e == null && !p && r.current && Nn(r.current), t.collection.size > 0 && (D.current = !1, O.current = !0);
3724
3756
  }
3725
3757
  });
3726
- let D = f(t.focusedKey), O = f(null);
3758
+ let k = f(t.focusedKey), A = f(null);
3727
3759
  s(() => {
3728
- if (t.isFocused && t.focusedKey != null && (t.focusedKey !== D.current || E.current) && h.current && r.current) {
3760
+ if (t.isFocused && t.focusedKey != null && (t.focusedKey !== k.current || O.current) && h.current && r.current) {
3729
3761
  let e = Nt(), n = Ba(r, t.focusedKey);
3730
3762
  if (!(n instanceof HTMLElement)) return;
3731
- (e === "keyboard" || E.current) && (O.current && cancelAnimationFrame(O.current), O.current = requestAnimationFrame(() => {
3763
+ (e === "keyboard" || O.current) && (A.current && cancelAnimationFrame(A.current), A.current = requestAnimationFrame(() => {
3732
3764
  h.current && (vi(h.current, n), e !== "virtual" && yi(n, { containingElement: r.current }));
3733
3765
  }));
3734
3766
  }
3735
- !p && t.isFocused && t.focusedKey == null && D.current != null && r.current && Nn(r.current), D.current = t.focusedKey, E.current = !1;
3767
+ !p && t.isFocused && t.focusedKey == null && k.current != null && r.current && Nn(r.current), k.current = t.focusedKey, O.current = !1;
3736
3768
  }), s(() => () => {
3737
- O.current && cancelAnimationFrame(O.current);
3769
+ A.current && cancelAnimationFrame(A.current);
3738
3770
  }, []), Ut(r, "react-aria-focus-scope-restore", (e) => {
3739
3771
  e.preventDefault(), t.setFocused(!0);
3740
3772
  });
3741
- let k = {
3742
- onKeyDown: b,
3743
- onFocus: S,
3744
- onBlur: C,
3773
+ let j = {
3774
+ onKeyDown: x,
3775
+ onFocus: C,
3776
+ onBlur: w,
3745
3777
  onMouseDown(e) {
3746
3778
  h.current === G(e) && e.preventDefault();
3747
3779
  }
3748
- }, { typeSelectProps: A } = Ga({
3780
+ }, { typeSelectProps: M } = Ga({
3749
3781
  keyboardDelegate: n,
3750
3782
  selectionManager: t
3751
3783
  });
3752
- d || (k = z(A, k));
3753
- let j;
3754
- p || (j = t.focusedKey == null ? 0 : -1);
3755
- let M = Ha(t.collection);
3756
- return { collectionProps: z(k, {
3757
- tabIndex: j,
3758
- "data-collection": M
3784
+ d || (j = z(M, j));
3785
+ let N;
3786
+ p || (N = t.focusedKey == null ? 0 : -1);
3787
+ let P = Ha(t.collection);
3788
+ return { collectionProps: z(j, {
3789
+ tabIndex: N,
3790
+ "data-collection": P
3759
3791
  }) };
3760
3792
  }
3761
3793
  //#endregion
@@ -5384,14 +5416,14 @@ var ic = class {
5384
5416
  let t = e;
5385
5417
  do
5386
5418
  t = this.collection.getKeyAfter(t), t ??= this.collection.getFirstKey();
5387
- while (t != null && this.isDisabled(t));
5419
+ while (t != null && this.isDisabled(t) && t !== e);
5388
5420
  return t;
5389
5421
  }
5390
5422
  getPreviousKey(e) {
5391
5423
  let t = e;
5392
5424
  do
5393
5425
  t = this.collection.getKeyBefore(t), t ??= this.collection.getLastKey();
5394
- while (t != null && this.isDisabled(t));
5426
+ while (t != null && this.isDisabled(t) && t !== e);
5395
5427
  return t;
5396
5428
  }
5397
5429
  };
@@ -7783,7 +7815,7 @@ var pu = ({ prompt: e = "C:\\>", onCommand: t, autoFocus: n = !1, className: r =
7783
7815
  placeholder: i,
7784
7816
  disabled: a,
7785
7817
  "aria-label": "Command input",
7786
- size: o.length || 1
7818
+ size: o.length || i?.length || 1
7787
7819
  }), /* @__PURE__ */ b("span", {
7788
7820
  className: "command-prompt__cursor",
7789
7821
  "aria-hidden": "true",
@@ -7910,11 +7942,263 @@ var xu = r(({ value: e = 0, max: t = 100, indeterminate: n = !1, variant: r = "d
7910
7942
  });
7911
7943
  xu.displayName = "Progress";
7912
7944
  //#endregion
7945
+ //#region src/components/ProgressRing/components/ProgressRing.tsx
7946
+ var Su = (e, t, n) => Math.min(n, Math.max(t, e)), Cu = r(({ value: e = 0, max: t = 100, size: n = 64, thickness: r = 8, segments: i = 16, color: a, showLabel: o = !1, glow: s = !1, className: c, "aria-label": l, ...u }, d) => {
7947
+ let f = Math.max(1, Math.floor(i)), p = Su(t === 0 ? 0 : e / t, 0, 1), m = Math.floor(p * f), h = Math.round(m / f * 100), g = (n - r) / 2, _ = n / 2, v = n / 2, y = 2 * Math.PI * g, S = y / f, C = Math.max(2, S / 6), w = Math.max(.5, S - C), T = a ?? "currentColor", E = Array.from({ length: f }, (e, t) => {
7948
+ let n = t < m;
7949
+ return /* @__PURE__ */ b("circle", {
7950
+ cx: _,
7951
+ cy: v,
7952
+ r: g,
7953
+ fill: "none",
7954
+ stroke: T,
7955
+ strokeWidth: r,
7956
+ strokeLinecap: "butt",
7957
+ strokeOpacity: n ? 1 : .18,
7958
+ strokeDasharray: `0 ${t * S} ${w} ${y}`,
7959
+ className: $("eidotter-progress-ring__seg", n && "eidotter-progress-ring__seg--filled")
7960
+ }, t);
7961
+ });
7962
+ return /* @__PURE__ */ x("div", {
7963
+ ref: d,
7964
+ className: $("eidotter-progress-ring", s && "eidotter-progress-ring--glow", c),
7965
+ style: {
7966
+ width: n,
7967
+ height: n
7968
+ },
7969
+ role: "progressbar",
7970
+ "aria-valuenow": h,
7971
+ "aria-valuemin": 0,
7972
+ "aria-valuemax": 100,
7973
+ "aria-label": l ?? `Progress: ${h}%`,
7974
+ ...u,
7975
+ children: [/* @__PURE__ */ b("svg", {
7976
+ width: n,
7977
+ height: n,
7978
+ viewBox: `0 0 ${n} ${n}`,
7979
+ "aria-hidden": "true",
7980
+ focusable: "false",
7981
+ children: /* @__PURE__ */ b("g", {
7982
+ transform: `rotate(-90 ${_} ${v})`,
7983
+ children: E
7984
+ })
7985
+ }), o && /* @__PURE__ */ x("span", {
7986
+ className: "eidotter-progress-ring__label font-dos",
7987
+ children: [h, "%"]
7988
+ })]
7989
+ });
7990
+ });
7991
+ Cu.displayName = "ProgressRing";
7992
+ //#endregion
7993
+ //#region src/components/CalendarHeatmap/components/CalendarHeatmap.tsx
7994
+ var wu = {
7995
+ success: "█",
7996
+ fail: "░",
7997
+ skip: "·",
7998
+ pending: "▒",
7999
+ empty: " "
8000
+ }, Tu = [
8001
+ "success",
8002
+ "fail",
8003
+ "skip",
8004
+ "pending"
8005
+ ], Eu = {
8006
+ success: "DONE",
8007
+ fail: "MISS",
8008
+ skip: "OFF",
8009
+ pending: "TODAY"
8010
+ }, Du = [
8011
+ "MO",
8012
+ "TU",
8013
+ "WE",
8014
+ "TH",
8015
+ "FR",
8016
+ "SA",
8017
+ "SU"
8018
+ ], Ou = [
8019
+ "SU",
8020
+ "MO",
8021
+ "TU",
8022
+ "WE",
8023
+ "TH",
8024
+ "FR",
8025
+ "SA"
8026
+ ], ku = [
8027
+ "January",
8028
+ "February",
8029
+ "March",
8030
+ "April",
8031
+ "May",
8032
+ "June",
8033
+ "July",
8034
+ "August",
8035
+ "September",
8036
+ "October",
8037
+ "November",
8038
+ "December"
8039
+ ], Au = {
8040
+ sm: "eidotter-calendar-heatmap--sm",
8041
+ md: "eidotter-calendar-heatmap--md",
8042
+ lg: "eidotter-calendar-heatmap--lg"
8043
+ }, ju = (e) => String(e).padStart(2, "0"), Mu = r(({ month: e, statuses: t = {}, defaultStatus: n = "skip", weekStart: r = "monday", size: i = "md", successColor: a, showLegend: o = !0, legendLabels: s, glyphs: c, className: l, "aria-label": u, ...d }, f) => {
8044
+ let p = Number(e.slice(0, 4)), m = Number(e.slice(5, 7)) - 1, h = Number.isFinite(p) && m >= 0 && m <= 11, g = {
8045
+ ...wu,
8046
+ ...c
8047
+ }, _ = {
8048
+ ...Eu,
8049
+ ...s
8050
+ }, v = [], y = 0, S = 0;
8051
+ if (h) {
8052
+ let e = new Date(Date.UTC(p, m + 1, 0)).getUTCDate(), i = new Date(Date.UTC(p, m, 1)).getUTCDay(), a = r === "monday" ? (i + 6) % 7 : i, o = [];
8053
+ for (let e = 0; e < a; e++) o.push({
8054
+ key: `lead-${e}`,
8055
+ day: 0,
8056
+ status: "empty"
8057
+ });
8058
+ for (let r = 1; r <= e; r++) {
8059
+ let e = `${p}-${ju(m + 1)}-${ju(r)}`, i = t[e] ?? n;
8060
+ i === "success" && y++, i === "fail" && S++, o.push({
8061
+ key: e,
8062
+ day: r,
8063
+ status: i
8064
+ });
8065
+ }
8066
+ for (; o.length % 7 != 0;) o.push({
8067
+ key: `trail-${o.length}`,
8068
+ day: 0,
8069
+ status: "empty"
8070
+ });
8071
+ for (let e = 0; e < o.length; e += 7) v.push(o.slice(e, e + 7));
8072
+ }
8073
+ let C = r === "monday" ? Du : Ou, w = h ? `${ku[m]} ${p}` : e, T = u ?? `${w}: ${y} done, ${S} missed`, E = a ? { "--heatmap-success": a } : void 0;
8074
+ return /* @__PURE__ */ x("div", {
8075
+ ref: f,
8076
+ className: $("eidotter-calendar-heatmap font-dos", Au[i], l),
8077
+ style: E,
8078
+ ...d,
8079
+ children: [/* @__PURE__ */ x("div", {
8080
+ className: "eidotter-calendar-heatmap__grid",
8081
+ role: "img",
8082
+ "aria-label": T,
8083
+ children: [/* @__PURE__ */ b("div", {
8084
+ className: "eidotter-calendar-heatmap__row",
8085
+ "aria-hidden": "true",
8086
+ children: C.map((e) => /* @__PURE__ */ b("span", {
8087
+ className: "eidotter-calendar-heatmap__cell eidotter-calendar-heatmap__head",
8088
+ children: e
8089
+ }, e))
8090
+ }), v.map((e, t) => /* @__PURE__ */ b("div", {
8091
+ className: "eidotter-calendar-heatmap__row",
8092
+ "aria-hidden": "true",
8093
+ children: e.map((e) => /* @__PURE__ */ b("span", {
8094
+ className: $("eidotter-calendar-heatmap__cell", `eidotter-calendar-heatmap__cell--${e.status}`),
8095
+ children: g[e.status]
8096
+ }, e.key))
8097
+ }, t))]
8098
+ }), o && /* @__PURE__ */ b("div", {
8099
+ className: "eidotter-calendar-heatmap__legend",
8100
+ "aria-hidden": "true",
8101
+ children: Tu.map((e) => /* @__PURE__ */ x("span", {
8102
+ className: `eidotter-calendar-heatmap__cell--${e}`,
8103
+ children: [
8104
+ g[e],
8105
+ " ",
8106
+ _[e]
8107
+ ]
8108
+ }, e))
8109
+ })]
8110
+ });
8111
+ });
8112
+ Mu.displayName = "CalendarHeatmap";
8113
+ //#endregion
8114
+ //#region src/components/HoldToComplete/components/HoldToComplete.tsx
8115
+ var Nu = (e) => e * e, Pu = .02, Fu = 120, Iu = r(({ onHold: e, onTap: t, onHoldProgress: n, holdDuration: r = 700, ringColor: i, ringScale: o = .72, disabled: c = !1, "aria-label": l, className: u, children: d }, m) => {
8116
+ let [h, g] = p(0), [_, v] = p(0), y = f(null), S = f(null), C = f(0), w = f(0), T = f(0), E = f(0), D = f(r), O = f(!1), k = f(e), A = f(n);
8117
+ k.current = e, A.current = n;
8118
+ let j = a((e) => {
8119
+ C.current = e, g(e), A.current?.(e);
8120
+ }, []), M = a(() => {
8121
+ S.current != null && (cancelAnimationFrame(S.current), S.current = null);
8122
+ }, []), N = a((e) => {
8123
+ let t = e - E.current, n = D.current, r = n <= 0 ? 1 : Math.min(1, t / n), i = T.current === 1 ? Nu(r) : r;
8124
+ if (j(w.current + (T.current - w.current) * i), r >= 1) {
8125
+ S.current = null, T.current === 1 && (O.current = !0, j(0), k.current());
8126
+ return;
8127
+ }
8128
+ S.current = requestAnimationFrame(N);
8129
+ }, [j]), P = a((e, t) => {
8130
+ M(), w.current = C.current, T.current = e, D.current = t, E.current = typeof performance < "u" ? performance.now() : 0, S.current = requestAnimationFrame(N);
8131
+ }, [M, N]), ee = a((e) => {
8132
+ if (!c) {
8133
+ try {
8134
+ e.currentTarget.setPointerCapture?.(e.pointerId);
8135
+ } catch {}
8136
+ O.current = !1, j(0), P(1, r);
8137
+ }
8138
+ }, [
8139
+ c,
8140
+ r,
8141
+ P,
8142
+ j
8143
+ ]), F = a(() => {
8144
+ if (!O.current) {
8145
+ if (C.current <= 0) {
8146
+ M();
8147
+ return;
8148
+ }
8149
+ Ql() ? (M(), j(0)) : P(0, Fu);
8150
+ }
8151
+ }, [
8152
+ P,
8153
+ M,
8154
+ j
8155
+ ]), te = a(() => {
8156
+ c || (O.current || t?.(), O.current = !1);
8157
+ }, [c, t]), ne = a((t) => {
8158
+ c || t.repeat || (t.key === "Enter" || t.key === " ") && (t.preventDefault(), e());
8159
+ }, [c, e]);
8160
+ s(() => {
8161
+ let e = y.current;
8162
+ if (!e) return;
8163
+ let t = () => v(Math.min(e.clientWidth, e.clientHeight));
8164
+ if (t(), typeof ResizeObserver < "u") {
8165
+ let n = new ResizeObserver(t);
8166
+ return n.observe(e), () => n.disconnect();
8167
+ }
8168
+ }, []), s(() => M, [M]);
8169
+ let re = a((e) => {
8170
+ y.current = e, typeof m == "function" ? m(e) : m && (m.current = e);
8171
+ }, [m]), ie = h > Pu && _ > 0;
8172
+ return /* @__PURE__ */ x("div", {
8173
+ ref: re,
8174
+ className: $("eidotter-hold", c && "eidotter-hold--disabled", u),
8175
+ role: "button",
8176
+ tabIndex: c ? -1 : 0,
8177
+ "aria-label": l,
8178
+ "aria-disabled": c || void 0,
8179
+ onPointerDown: ee,
8180
+ onPointerUp: F,
8181
+ onPointerCancel: F,
8182
+ onClick: te,
8183
+ onKeyDown: ne,
8184
+ children: [d, ie && /* @__PURE__ */ b("div", {
8185
+ className: "eidotter-hold__overlay",
8186
+ children: /* @__PURE__ */ b(Cu, {
8187
+ value: h * 100,
8188
+ size: Math.floor(_ * o),
8189
+ color: i,
8190
+ "aria-label": "Hold progress"
8191
+ })
8192
+ })]
8193
+ });
8194
+ });
8195
+ Iu.displayName = "HoldToComplete";
8196
+ //#endregion
7913
8197
  //#region src/components/Input/components/Input.tsx
7914
- var Su = {
8198
+ var Lu = {
7915
8199
  default: "eidotter-input--default",
7916
8200
  error: "eidotter-input--error"
7917
- }, Cu = r(({ variant: e = "default", label: t, description: n, errorMessage: r, disabled: i, className: a, onChange: o, isRequired: s, ...c }, l) => {
8201
+ }, Ru = r(({ variant: e = "default", label: t, description: n, errorMessage: r, disabled: i, className: a, onChange: o, isRequired: s, ...c }, l) => {
7918
8202
  let u = e === "error";
7919
8203
  return /* @__PURE__ */ x(bc, {
7920
8204
  isDisabled: i,
@@ -7928,7 +8212,7 @@ var Su = {
7928
8212
  }),
7929
8213
  /* @__PURE__ */ b(sa, {
7930
8214
  ref: l,
7931
- className: $("w-full bg-transparent text-dos-text-brand font-dos text-base p-2", "border-2 border-dos-border-default outline-none box-border", "eidotter-input", Su[e] || Su.default, i && "eidotter-input--disabled"),
8215
+ className: $("w-full bg-transparent text-dos-text-brand font-dos text-base p-2", "border-2 border-dos-border-default outline-none box-border", "eidotter-input", Lu[e] || Lu.default, i && "eidotter-input--disabled"),
7932
8216
  onChange: o,
7933
8217
  ...c
7934
8218
  }),
@@ -7945,10 +8229,10 @@ var Su = {
7945
8229
  ]
7946
8230
  });
7947
8231
  });
7948
- Cu.displayName = "Input";
8232
+ Ru.displayName = "Input";
7949
8233
  //#endregion
7950
8234
  //#region src/components/Terminal/components/Terminal.tsx
7951
- var wu = ({ size: e = "md", title: t = "MS-DOS Terminal", state: n = "active", resizable: r = !0, minimizable: i = !1, maximizable: a = !1, closeable: o = !1, children: c, onMinimize: l, onMaximize: u, onClose: d, onFocus: m, className: h = "", autoFocus: g = !1 }) => {
8235
+ var zu = ({ size: e = "md", title: t = "MS-DOS Terminal", state: n = "active", resizable: r = !0, minimizable: i = !1, maximizable: a = !1, closeable: o = !1, children: c, onMinimize: l, onMaximize: u, onClose: d, onFocus: m, className: h = "", autoFocus: g = !1 }) => {
7952
8236
  let _ = {
7953
8237
  sm: "small",
7954
8238
  md: "medium",
@@ -8059,17 +8343,17 @@ var wu = ({ size: e = "md", title: t = "MS-DOS Terminal", state: n = "active", r
8059
8343
  })
8060
8344
  ]
8061
8345
  });
8062
- }, Tu = {
8346
+ }, Bu = {
8063
8347
  sm: "eidotter-tabs--sm",
8064
8348
  md: "eidotter-tabs--md",
8065
8349
  lg: "eidotter-tabs--lg",
8066
8350
  small: "eidotter-tabs--sm",
8067
8351
  medium: "eidotter-tabs--md",
8068
8352
  large: "eidotter-tabs--lg"
8069
- }, Eu = {
8353
+ }, Vu = {
8070
8354
  underline: "eidotter-tabs--underline",
8071
8355
  pills: "eidotter-tabs--pills"
8072
- }, Du = r(({ tabs: e, variant: t = "underline", size: n = "md", activeTab: r, defaultActiveTab: i, onSelectionChange: o, onTabChange: s, className: c, ...u }, d) => {
8356
+ }, Hu = r(({ tabs: e, variant: t = "underline", size: n = "md", activeTab: r, defaultActiveTab: i, onSelectionChange: o, onTabChange: s, className: c, ...u }, d) => {
8073
8357
  let m = f(null), h = f(r ?? i ?? e[0]?.id ?? ""), [g, _] = p(r ?? i ?? e[0]?.id ?? ""), v = o ?? s, y = a((e) => {
8074
8358
  let t = String(e), n = r ?? h.current;
8075
8359
  h.current = t, _(t), v?.(t, n);
@@ -8093,7 +8377,7 @@ var wu = ({ size: e = "md", title: t = "MS-DOS Terminal", state: n = "active", r
8093
8377
  selectedKey: r,
8094
8378
  defaultSelectedKey: i ?? e[0]?.id,
8095
8379
  onSelectionChange: y,
8096
- className: $("eidotter-tabs", Eu[t], Tu[n] || Tu.md, c),
8380
+ className: $("eidotter-tabs", Vu[t], Bu[n] || Bu.md, c),
8097
8381
  children: [/* @__PURE__ */ x("div", {
8098
8382
  ref: m,
8099
8383
  className: "relative",
@@ -8116,16 +8400,16 @@ var wu = ({ size: e = "md", title: t = "MS-DOS Terminal", state: n = "active", r
8116
8400
  }, e.id))]
8117
8401
  });
8118
8402
  });
8119
- Du.displayName = "Tabs";
8403
+ Hu.displayName = "Tabs";
8120
8404
  //#endregion
8121
8405
  //#region src/components/Badge/components/Badge.tsx
8122
- var Ou = {
8406
+ var Uu = {
8123
8407
  sm: "text-dos-text-xs px-2 py-0.5 min-h-6 gap-1",
8124
8408
  md: "text-dos-text-sm px-2.5 py-1 min-h-7 gap-1.5",
8125
8409
  lg: "text-dos-text-md px-3 py-1.5 min-h-8 gap-1.5",
8126
8410
  small: "text-dos-text-xs px-2 py-0.5 min-h-6 gap-1",
8127
8411
  medium: "text-dos-text-sm px-2.5 py-1 min-h-7 gap-1.5"
8128
- }, ku = {
8412
+ }, Wu = {
8129
8413
  default: "eidotter-badge--default",
8130
8414
  success: "eidotter-badge--success",
8131
8415
  warning: "eidotter-badge--warning",
@@ -8139,9 +8423,9 @@ var Ou = {
8139
8423
  purple: "eidotter-badge--info",
8140
8424
  pink: "eidotter-badge--error",
8141
8425
  orange: "eidotter-badge--warning"
8142
- }, Au = r(({ variant: e = "default", size: t = "md", dot: n = !1, children: r, className: i, ...a }, o) => /* @__PURE__ */ x("span", {
8426
+ }, Gu = r(({ variant: e = "default", size: t = "md", dot: n = !1, children: r, className: i, ...a }, o) => /* @__PURE__ */ x("span", {
8143
8427
  ref: o,
8144
- className: $("inline-flex items-center justify-center", "font-dos leading-none whitespace-nowrap select-none", "uppercase tracking-wider", "rounded-dos-sm", "eidotter-badge", Ou[t] || Ou.md, ku[e] || ku.default, i),
8428
+ className: $("inline-flex items-center justify-center", "font-dos leading-none whitespace-nowrap select-none", "uppercase tracking-wider", "rounded-dos-sm", "eidotter-badge", Uu[t] || Uu.md, Wu[e] || Wu.default, i),
8145
8429
  "data-variant": e,
8146
8430
  ...a,
8147
8431
  children: [n && /* @__PURE__ */ b("span", {
@@ -8152,10 +8436,10 @@ var Ou = {
8152
8436
  children: r
8153
8437
  })]
8154
8438
  }));
8155
- Au.displayName = "Badge";
8439
+ Gu.displayName = "Badge";
8156
8440
  //#endregion
8157
8441
  //#region src/components/Switch/components/Switch.tsx
8158
- var ju = r(({ checked: e, defaultChecked: t = !1, onChange: n, onCheckedChange: r, disabled: i = !1, size: a = "md", type: o = "default", label: s, name: c, value: l, className: u, ...d }, f) => /* @__PURE__ */ b(Zs, {
8442
+ var Ku = r(({ checked: e, defaultChecked: t = !1, onChange: n, onCheckedChange: r, disabled: i = !1, size: a = "md", type: o = "default", label: s, name: c, value: l, className: u, ...d }, f) => /* @__PURE__ */ b(Zs, {
8159
8443
  ref: f,
8160
8444
  isSelected: e,
8161
8445
  defaultSelected: t,
@@ -8175,10 +8459,10 @@ var ju = r(({ checked: e, defaultChecked: t = !1, onChange: n, onCheckedChange:
8175
8459
  children: s
8176
8460
  })] })
8177
8461
  }));
8178
- ju.displayName = "Switch";
8462
+ Ku.displayName = "Switch";
8179
8463
  //#endregion
8180
8464
  //#region src/components/Breadcrumb/components/Breadcrumb.tsx
8181
- var Mu = "eidotter-breadcrumb__link inline-flex items-center gap-1 text-dos-text-accent opacity-70 no-underline", Nu = ({ trail: e = [], currentLabel: t, showBackArrow: n = !0, separator: r = "/", linkComponent: i, className: a }) => {
8465
+ var qu = "eidotter-breadcrumb__link inline-flex items-center gap-1 text-dos-text-accent opacity-70 no-underline", Ju = ({ trail: e = [], currentLabel: t, showBackArrow: n = !0, separator: r = "/", linkComponent: i, className: a }) => {
8182
8466
  let o = (e, t) => {
8183
8467
  let r = /* @__PURE__ */ x(y, { children: [n && t && /* @__PURE__ */ b("span", {
8184
8468
  className: "text-[1em] leading-none",
@@ -8186,15 +8470,15 @@ var Mu = "eidotter-breadcrumb__link inline-flex items-center gap-1 text-dos-text
8186
8470
  children: "<"
8187
8471
  }), /* @__PURE__ */ b("span", { children: e.label })] });
8188
8472
  return e.onClick ? /* @__PURE__ */ b(K, {
8189
- className: $(Mu, "bg-transparent border-0 cursor-pointer font-[inherit] p-0"),
8473
+ className: $(qu, "bg-transparent border-0 cursor-pointer font-[inherit] p-0"),
8190
8474
  onPress: e.onClick,
8191
8475
  children: r
8192
8476
  }) : e.href ? b(i || "a", {
8193
8477
  href: e.href,
8194
- className: Mu,
8478
+ className: qu,
8195
8479
  children: r
8196
8480
  }) : /* @__PURE__ */ b("span", {
8197
- className: Mu,
8481
+ className: qu,
8198
8482
  children: r
8199
8483
  });
8200
8484
  };
@@ -8234,37 +8518,34 @@ var Mu = "eidotter-breadcrumb__link inline-flex items-center gap-1 text-dos-text
8234
8518
  ]
8235
8519
  })
8236
8520
  });
8237
- }, Pu = "eidotter:retro-boot", Fu = "1", Iu = (e) => {
8521
+ }, Yu = "eidotter:retro-boot", Xu = "1", Zu = (e) => {
8238
8522
  if (typeof window > "u") return !1;
8239
8523
  try {
8240
- return window.sessionStorage.getItem(e) === Fu;
8524
+ return window.sessionStorage.getItem(e) === Xu;
8241
8525
  } catch {
8242
8526
  return !1;
8243
8527
  }
8244
- }, Lu = (e) => {
8528
+ }, Qu = (e) => {
8245
8529
  if (!(typeof window > "u")) try {
8246
- window.sessionStorage.setItem(e, Fu);
8530
+ window.sessionStorage.setItem(e, Xu);
8247
8531
  } catch {}
8248
- }, Ru = ({ scanlines: e = !0, glow: t = !0, flicker: n = !0, bloom: r = !1, powered: i = !0, boot: a = !1, bootOnce: o = !1, bootStorageKey: c = Pu, intensity: l = 1, className: u, onPowerStateChange: d, onPowerOn: m, onPowerOff: h, onBootComplete: g }) => {
8249
- let _ = f(i), [v, S] = p(i ? "on" : "off"), [C, w] = p(a && !o), T = f(!1), E = f(c), D = f(g);
8532
+ }, $u = ({ scanlines: e = !0, glow: t = !0, flicker: n = !0, bloom: r = !1, powered: i = !0, boot: a = !1, bootOnce: o = !1, bootStorageKey: c = Yu, intensity: l = 1, className: u, onPowerStateChange: d, onPowerOn: m, onPowerOff: h, onBootComplete: g }) => {
8533
+ let _ = f(i), [v, S] = p(i ? "on" : "off"), [C, w] = p(a), T = f(!1), E = f(c), D = f(g);
8250
8534
  s(() => {
8251
8535
  D.current = g;
8252
8536
  });
8253
8537
  let O = () => {
8254
8538
  T.current || (T.current = !0, D.current?.());
8255
8539
  }, k = () => {
8256
- w(!1), o && Lu(E.current), O();
8540
+ w(!1), o && Qu(E.current), O();
8257
8541
  };
8258
8542
  s(() => {
8259
- if (!(!a || !o)) {
8260
- if (Iu(E.current)) {
8261
- O();
8262
- return;
8263
- }
8264
- w(!0);
8543
+ if (!(!a || !o) && Zu(E.current)) {
8544
+ w(!1), O();
8545
+ return;
8265
8546
  }
8266
8547
  }, []), s(() => {
8267
- if (!C) return;
8548
+ if (!C || T.current) return;
8268
8549
  if (Ql()) {
8269
8550
  k();
8270
8551
  return;
@@ -8313,32 +8594,32 @@ var Mu = "eidotter-breadcrumb__link inline-flex items-center gap-1 text-dos-text
8313
8594
  ]
8314
8595
  })]
8315
8596
  });
8316
- }, zu = {
8597
+ }, ed = {
8317
8598
  sm: "small",
8318
8599
  md: "medium",
8319
8600
  lg: "large",
8320
8601
  small: "small",
8321
8602
  medium: "medium",
8322
8603
  large: "large"
8323
- }, Bu = {
8604
+ }, td = {
8324
8605
  circle: "eidotter-timeline-node--circle",
8325
8606
  square: "eidotter-timeline-node--square",
8326
8607
  diamond: "eidotter-timeline-node--diamond"
8327
- }, Vu = {
8608
+ }, nd = {
8328
8609
  default: "eidotter-timeline-node--default",
8329
8610
  primary: "eidotter-timeline-node--primary",
8330
8611
  secondary: "eidotter-timeline-node--secondary",
8331
8612
  accent: "eidotter-timeline-node--accent"
8332
- }, Hu = {
8613
+ }, rd = {
8333
8614
  left: "eidotter-timeline-node--label-left",
8334
8615
  right: "eidotter-timeline-node--label-right",
8335
8616
  top: "eidotter-timeline-node--label-top",
8336
8617
  bottom: "eidotter-timeline-node--label-bottom"
8337
- }, Uu = r(({ shape: e = "circle", variant: t = "default", isActive: n = !1, label: r, labelPosition: i = "right", size: a = "md", className: o, onClick: s, ...c }, l) => {
8338
- let u = zu[a] ?? "medium";
8618
+ }, id = r(({ shape: e = "circle", variant: t = "default", isActive: n = !1, label: r, labelPosition: i = "right", size: a = "md", className: o, onClick: s, ...c }, l) => {
8619
+ let u = ed[a] ?? "medium";
8339
8620
  return /* @__PURE__ */ x("div", {
8340
8621
  ref: l,
8341
- className: $("inline-flex items-center gap-2 font-dos", "eidotter-timeline-node", Bu[e], Vu[t], `eidotter-timeline-node--${u}`, Hu[i], n && "eidotter-timeline-node--active", s && "eidotter-timeline-node--interactive", o),
8622
+ className: $("inline-flex items-center gap-2 font-dos", "eidotter-timeline-node", td[e], nd[t], `eidotter-timeline-node--${u}`, rd[i], n && "eidotter-timeline-node--active", s && "eidotter-timeline-node--interactive", o),
8342
8623
  onClick: () => {
8343
8624
  s && s();
8344
8625
  },
@@ -8373,10 +8654,10 @@ var Mu = "eidotter-breadcrumb__link inline-flex items-center gap-1 text-dos-text
8373
8654
  ]
8374
8655
  });
8375
8656
  });
8376
- Uu.displayName = "TimelineNode";
8657
+ id.displayName = "TimelineNode";
8377
8658
  //#endregion
8378
8659
  //#region src/components/TimelineContainer/components/types.ts
8379
- var Wu = [
8660
+ var ad = [
8380
8661
  "year",
8381
8662
  "month",
8382
8663
  "day",
@@ -8384,12 +8665,12 @@ var Wu = [
8384
8665
  ];
8385
8666
  //#endregion
8386
8667
  //#region src/components/TimelineContainer/components/useDrillDown.ts
8387
- function Gu({ zoomLevel: e, defaultZoomLevel: t = "month", onZoomChange: n } = {}) {
8668
+ function od({ zoomLevel: e, defaultZoomLevel: t = "month", onZoomChange: n } = {}) {
8388
8669
  let r = e === void 0, [i, o] = p(t), [c, l] = p([]), u = f(r);
8389
8670
  s(() => {
8390
8671
  u.current && !r && l([]), u.current = r;
8391
8672
  }, [r]);
8392
- let d = e ?? i, m = Wu.indexOf(d), h = m < Wu.length - 1, g = m > 0, _ = c.length > 0 ? c[c.length - 1].periodStart : null, v = f(r), y = f(h), b = f(m), x = f(c), S = f(n);
8673
+ let d = e ?? i, m = ad.indexOf(d), h = m < ad.length - 1, g = m > 0, _ = c.length > 0 ? c[c.length - 1].periodStart : null, v = f(r), y = f(h), b = f(m), x = f(c), S = f(n);
8393
8674
  s(() => {
8394
8675
  v.current = r, y.current = h, b.current = m, x.current = c, S.current = n;
8395
8676
  });
@@ -8405,7 +8686,7 @@ function Gu({ zoomLevel: e, defaultZoomLevel: t = "month", onZoomChange: n } = {
8405
8686
  isDrillDownEnabled: r,
8406
8687
  drillDown: a((e, t) => {
8407
8688
  if (!v.current || !y.current) return;
8408
- let n = Wu[b.current + 1];
8689
+ let n = ad[b.current + 1];
8409
8690
  n !== void 0 && (l((n) => [...n, {
8410
8691
  periodStart: e,
8411
8692
  label: t
@@ -8413,7 +8694,7 @@ function Gu({ zoomLevel: e, defaultZoomLevel: t = "month", onZoomChange: n } = {
8413
8694
  }, [C]),
8414
8695
  drillUp: a(() => {
8415
8696
  if (!v.current || x.current.length === 0) return;
8416
- let e = Wu[b.current - 1];
8697
+ let e = ad[b.current - 1];
8417
8698
  e !== void 0 && (l((e) => e.slice(0, -1)), C(e));
8418
8699
  }, [C]),
8419
8700
  reset: a(() => {
@@ -8423,7 +8704,7 @@ function Gu({ zoomLevel: e, defaultZoomLevel: t = "month", onZoomChange: n } = {
8423
8704
  }
8424
8705
  //#endregion
8425
8706
  //#region src/components/TimelineContainer/components/useSelection.ts
8426
- function Ku({ selectedEntryId: e, defaultSelectedEntryId: t = null, onSelectEntry: n } = {}) {
8707
+ function sd({ selectedEntryId: e, defaultSelectedEntryId: t = null, onSelectEntry: n } = {}) {
8427
8708
  let [r, i] = p(t), o = e !== void 0, c = e === void 0 ? r : e, l = f(c), u = f(o), d = f(n);
8428
8709
  s(() => {
8429
8710
  l.current = c, u.current = o, d.current = n;
@@ -8449,7 +8730,7 @@ function Ku({ selectedEntryId: e, defaultSelectedEntryId: t = null, onSelectEntr
8449
8730
  }
8450
8731
  //#endregion
8451
8732
  //#region src/components/TimelineContainer/components/timelineUtils.ts
8452
- var qu = [
8733
+ var cd = [
8453
8734
  "January",
8454
8735
  "February",
8455
8736
  "March",
@@ -8462,7 +8743,7 @@ var qu = [
8462
8743
  "October",
8463
8744
  "November",
8464
8745
  "December"
8465
- ], Ju = [
8746
+ ], ld = [
8466
8747
  "Jan",
8467
8748
  "Feb",
8468
8749
  "Mar",
@@ -8476,48 +8757,48 @@ var qu = [
8476
8757
  "Nov",
8477
8758
  "Dec"
8478
8759
  ];
8479
- function Yu(e) {
8760
+ function ud(e) {
8480
8761
  return new Date(e).getUTCFullYear();
8481
8762
  }
8482
- function Xu(e) {
8763
+ function dd(e) {
8483
8764
  return new Date(e).getUTCMonth();
8484
8765
  }
8485
- function Zu(e) {
8766
+ function fd(e) {
8486
8767
  return new Date(e).getUTCDate();
8487
8768
  }
8488
- function Qu(e) {
8769
+ function pd(e) {
8489
8770
  return new Date(e).getUTCHours();
8490
8771
  }
8491
- function $u(e) {
8772
+ function md(e) {
8492
8773
  return String(e);
8493
8774
  }
8494
- function ed(e, t) {
8495
- return `${qu[t]} ${e}`;
8775
+ function hd(e, t) {
8776
+ return `${cd[t]} ${e}`;
8496
8777
  }
8497
- function td(e, t, n) {
8498
- return `${Ju[t]} ${n}`;
8778
+ function gd(e, t, n) {
8779
+ return `${ld[t]} ${n}`;
8499
8780
  }
8500
- function nd(e, t, n, r) {
8781
+ function _d(e, t, n, r) {
8501
8782
  let i = r >= 12 ? "pm" : "am", a = r === 0 ? 12 : r > 12 ? r - 12 : r;
8502
- return `${Ju[t]} ${n}, ${a}${i}`;
8783
+ return `${ld[t]} ${n}, ${a}${i}`;
8503
8784
  }
8504
- function rd(e) {
8505
- let t = new Date(e), n = Ju[t.getUTCMonth()], r = t.getUTCDate(), i = t.getUTCFullYear(), a = t.getUTCHours(), o = t.getUTCMinutes(), s = a >= 12 ? "pm" : "am";
8785
+ function vd(e) {
8786
+ let t = new Date(e), n = ld[t.getUTCMonth()], r = t.getUTCDate(), i = t.getUTCFullYear(), a = t.getUTCHours(), o = t.getUTCMinutes(), s = a >= 12 ? "pm" : "am";
8506
8787
  return `${n} ${r}, ${i} at ${a === 0 ? 12 : a > 12 ? a - 12 : a}${o > 0 ? `:${String(o).padStart(2, "0")}` : ""}${s}`;
8507
8788
  }
8508
- function id(e) {
8789
+ function yd(e) {
8509
8790
  return new Date(Date.UTC(e, 0, 1)).toISOString();
8510
8791
  }
8511
- function ad(e, t) {
8792
+ function bd(e, t) {
8512
8793
  return new Date(Date.UTC(e, t, 1)).toISOString();
8513
8794
  }
8514
- function od(e, t, n) {
8795
+ function xd(e, t, n) {
8515
8796
  return new Date(Date.UTC(e, t, n)).toISOString();
8516
8797
  }
8517
- function sd(e, t, n, r) {
8798
+ function Sd(e, t, n, r) {
8518
8799
  return new Date(Date.UTC(e, t, n, r)).toISOString();
8519
8800
  }
8520
- function cd(e, t, n, r, i) {
8801
+ function Cd(e, t, n, r, i) {
8521
8802
  let a = /* @__PURE__ */ new Map(), o = [];
8522
8803
  for (let n of e) {
8523
8804
  let e = t(n), r = a.get(e);
@@ -8534,32 +8815,32 @@ function cd(e, t, n, r, i) {
8534
8815
  entries: a.get(e) ?? []
8535
8816
  }));
8536
8817
  }
8537
- function ld(e) {
8538
- return String(Yu(e.date));
8818
+ function wd(e) {
8819
+ return String(ud(e.date));
8539
8820
  }
8540
- function ud(e) {
8541
- let t = Yu(e.date), n = Xu(e.date);
8821
+ function Td(e) {
8822
+ let t = ud(e.date), n = dd(e.date);
8542
8823
  return `${t}-${String(n).padStart(2, "0")}`;
8543
8824
  }
8544
- function dd(e) {
8545
- let t = Yu(e.date), n = Xu(e.date), r = Zu(e.date);
8825
+ function Ed(e) {
8826
+ let t = ud(e.date), n = dd(e.date), r = fd(e.date);
8546
8827
  return `${t}-${String(n).padStart(2, "0")}-${String(r).padStart(2, "0")}`;
8547
8828
  }
8548
- function fd(e) {
8549
- let t = Yu(e.date), n = Xu(e.date), r = Zu(e.date), i = Qu(e.date);
8829
+ function Dd(e) {
8830
+ let t = ud(e.date), n = dd(e.date), r = fd(e.date), i = pd(e.date);
8550
8831
  return `${t}-${String(n).padStart(2, "0")}-${String(r).padStart(2, "0")}-${String(i).padStart(2, "0")}`;
8551
8832
  }
8552
- function pd(e) {
8833
+ function Od(e) {
8553
8834
  return { year: parseInt(e) };
8554
8835
  }
8555
- function md(e) {
8836
+ function kd(e) {
8556
8837
  let [t, n] = e.split("-");
8557
8838
  return {
8558
8839
  year: parseInt(t),
8559
8840
  month: parseInt(n)
8560
8841
  };
8561
8842
  }
8562
- function hd(e) {
8843
+ function Ad(e) {
8563
8844
  let [t, n, r] = e.split("-");
8564
8845
  return {
8565
8846
  year: parseInt(t),
@@ -8567,7 +8848,7 @@ function hd(e) {
8567
8848
  day: parseInt(r)
8568
8849
  };
8569
8850
  }
8570
- function gd(e) {
8851
+ function jd(e) {
8571
8852
  let [t, n, r, i] = e.split("-");
8572
8853
  return {
8573
8854
  year: parseInt(t),
@@ -8576,56 +8857,56 @@ function gd(e) {
8576
8857
  hour: parseInt(i)
8577
8858
  };
8578
8859
  }
8579
- var _d = {
8860
+ var Md = {
8580
8861
  year: 4,
8581
8862
  month: 7,
8582
8863
  day: 10
8583
8864
  };
8584
- function vd(e, t, n) {
8865
+ function Nd(e, t, n) {
8585
8866
  if (t === null || n === "hour") return e;
8586
- let r = _d[n];
8867
+ let r = Md[n];
8587
8868
  if (r === void 0) return e;
8588
8869
  let i = t.slice(0, r);
8589
8870
  return e.filter((e) => e.periodStart.slice(0, r) === i);
8590
8871
  }
8591
- function yd(e, t, n = "desc") {
8872
+ function Pd(e, t, n = "desc") {
8592
8873
  if (e.length === 0) return [];
8593
8874
  let r = e.filter((e) => !isNaN(new Date(e.date).getTime()));
8594
8875
  if (r.length === 0) return [];
8595
8876
  switch (t) {
8596
- case "year": return cd(r, ld, (e) => {
8597
- let { year: t } = pd(e);
8598
- return $u(t);
8877
+ case "year": return Cd(r, wd, (e) => {
8878
+ let { year: t } = Od(e);
8879
+ return md(t);
8599
8880
  }, (e) => {
8600
- let { year: t } = pd(e);
8601
- return id(t);
8881
+ let { year: t } = Od(e);
8882
+ return yd(t);
8602
8883
  }, n);
8603
- case "month": return cd(r, ud, (e) => {
8604
- let { year: t, month: n } = md(e);
8605
- return ed(t, n);
8884
+ case "month": return Cd(r, Td, (e) => {
8885
+ let { year: t, month: n } = kd(e);
8886
+ return hd(t, n);
8606
8887
  }, (e) => {
8607
- let { year: t, month: n } = md(e);
8608
- return ad(t, n);
8888
+ let { year: t, month: n } = kd(e);
8889
+ return bd(t, n);
8609
8890
  }, n);
8610
- case "day": return cd(r, dd, (e) => {
8611
- let { year: t, month: n, day: r } = hd(e);
8612
- return td(t, n, r);
8891
+ case "day": return Cd(r, Ed, (e) => {
8892
+ let { year: t, month: n, day: r } = Ad(e);
8893
+ return gd(t, n, r);
8613
8894
  }, (e) => {
8614
- let { year: t, month: n, day: r } = hd(e);
8615
- return od(t, n, r);
8895
+ let { year: t, month: n, day: r } = Ad(e);
8896
+ return xd(t, n, r);
8616
8897
  }, n);
8617
- case "hour": return cd(r, fd, (e) => {
8618
- let { year: t, month: n, day: r, hour: i } = gd(e);
8619
- return nd(t, n, r, i);
8898
+ case "hour": return Cd(r, Dd, (e) => {
8899
+ let { year: t, month: n, day: r, hour: i } = jd(e);
8900
+ return _d(t, n, r, i);
8620
8901
  }, (e) => {
8621
- let { year: t, month: n, day: r, hour: i } = gd(e);
8622
- return sd(t, n, r, i);
8902
+ let { year: t, month: n, day: r, hour: i } = jd(e);
8903
+ return Sd(t, n, r, i);
8623
8904
  }, n);
8624
8905
  }
8625
8906
  }
8626
8907
  //#endregion
8627
8908
  //#region src/components/TimelineContainer/components/ZoomControls.tsx
8628
- var bd = ({ zoomLevel: e, canZoomIn: t, canZoomOut: n, onZoomIn: r, onZoomOut: i, onReset: a, breadcrumbs: o = [], onBreadcrumbClick: s }) => {
8909
+ var Fd = ({ zoomLevel: e, canZoomIn: t, canZoomOut: n, onZoomIn: r, onZoomOut: i, onReset: a, breadcrumbs: o = [], onBreadcrumbClick: s }) => {
8629
8910
  let c = o.length > 0;
8630
8911
  return /* @__PURE__ */ x("div", {
8631
8912
  className: "timeline-zoom-controls",
@@ -8640,7 +8921,7 @@ var bd = ({ zoomLevel: e, canZoomIn: t, canZoomOut: n, onZoomIn: r, onZoomOut: i
8640
8921
  "aria-label": "Zoom out",
8641
8922
  children: "[-]"
8642
8923
  }),
8643
- c ? /* @__PURE__ */ b(Nu, {
8924
+ c ? /* @__PURE__ */ b(Ju, {
8644
8925
  trail: [{
8645
8926
  label: "ALL",
8646
8927
  onClick: a
@@ -8656,7 +8937,7 @@ var bd = ({ zoomLevel: e, canZoomIn: t, canZoomOut: n, onZoomIn: r, onZoomOut: i
8656
8937
  className: "timeline-zoom-controls__level",
8657
8938
  onPress: a,
8658
8939
  "aria-label": `Current zoom: ${e}. Click to reset.`,
8659
- children: /* @__PURE__ */ b(Au, {
8940
+ children: /* @__PURE__ */ b(Gu, {
8660
8941
  variant: "accent",
8661
8942
  size: "medium",
8662
8943
  children: e.toUpperCase()
@@ -8672,7 +8953,7 @@ var bd = ({ zoomLevel: e, canZoomIn: t, canZoomOut: n, onZoomIn: r, onZoomOut: i
8672
8953
  })
8673
8954
  ]
8674
8955
  });
8675
- }, xd = ({ children: e }) => /* @__PURE__ */ x("div", {
8956
+ }, Id = ({ children: e }) => /* @__PURE__ */ x("div", {
8676
8957
  className: "timeline-axis",
8677
8958
  children: [/* @__PURE__ */ b("div", {
8678
8959
  className: "timeline-axis__line",
@@ -8681,7 +8962,7 @@ var bd = ({ zoomLevel: e, canZoomIn: t, canZoomOut: n, onZoomIn: r, onZoomOut: i
8681
8962
  className: "timeline-axis__content",
8682
8963
  children: e
8683
8964
  })]
8684
- }), Sd = e.memo(({ buckets: e, onBucketClick: t }) => /* @__PURE__ */ b("div", {
8965
+ }), Ld = e.memo(({ buckets: e, onBucketClick: t }) => /* @__PURE__ */ b("div", {
8685
8966
  className: "timeline-view timeline-view--year",
8686
8967
  role: "list",
8687
8968
  children: e.map((e) => /* @__PURE__ */ b("div", {
@@ -8692,7 +8973,7 @@ var bd = ({ zoomLevel: e, canZoomIn: t, canZoomOut: n, onZoomIn: r, onZoomOut: i
8692
8973
  onPress: () => t(e),
8693
8974
  children: [/* @__PURE__ */ b("div", {
8694
8975
  className: "timeline-view__node",
8695
- children: /* @__PURE__ */ b(Uu, {
8976
+ children: /* @__PURE__ */ b(id, {
8696
8977
  shape: "circle",
8697
8978
  size: "medium",
8698
8979
  variant: "default",
@@ -8701,7 +8982,7 @@ var bd = ({ zoomLevel: e, canZoomIn: t, canZoomOut: n, onZoomIn: r, onZoomOut: i
8701
8982
  })
8702
8983
  }), /* @__PURE__ */ b("div", {
8703
8984
  className: "timeline-view__content",
8704
- children: /* @__PURE__ */ x(Au, {
8985
+ children: /* @__PURE__ */ x(Gu, {
8705
8986
  variant: "default",
8706
8987
  size: "small",
8707
8988
  children: [
@@ -8713,7 +8994,7 @@ var bd = ({ zoomLevel: e, canZoomIn: t, canZoomOut: n, onZoomIn: r, onZoomOut: i
8713
8994
  })]
8714
8995
  }) : /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b("div", {
8715
8996
  className: "timeline-view__node",
8716
- children: /* @__PURE__ */ b(Uu, {
8997
+ children: /* @__PURE__ */ b(id, {
8717
8998
  shape: "circle",
8718
8999
  size: "medium",
8719
9000
  variant: "default",
@@ -8722,7 +9003,7 @@ var bd = ({ zoomLevel: e, canZoomIn: t, canZoomOut: n, onZoomIn: r, onZoomOut: i
8722
9003
  })
8723
9004
  }), /* @__PURE__ */ b("div", {
8724
9005
  className: "timeline-view__content",
8725
- children: /* @__PURE__ */ x(Au, {
9006
+ children: /* @__PURE__ */ x(Gu, {
8726
9007
  variant: "default",
8727
9008
  size: "small",
8728
9009
  children: [
@@ -8734,10 +9015,10 @@ var bd = ({ zoomLevel: e, canZoomIn: t, canZoomOut: n, onZoomIn: r, onZoomOut: i
8734
9015
  })] })
8735
9016
  }, e.periodStart))
8736
9017
  }));
8737
- Sd.displayName = "YearView";
9018
+ Ld.displayName = "YearView";
8738
9019
  //#endregion
8739
9020
  //#region src/components/Lightbox/components/Lightbox.tsx
8740
- var Cd = ({ images: t, initialIndex: n = 0, isOpen: r, onClose: i, onIndexChange: o }) => {
9021
+ var Rd = ({ images: t, initialIndex: n = 0, isOpen: r, onClose: i, onIndexChange: o }) => {
8741
9022
  let c = t.length === 0 ? 0 : Math.max(0, Math.min(n, t.length - 1)), [l, u] = p(c);
8742
9023
  s(() => {
8743
9024
  r && u(c);
@@ -8837,19 +9118,19 @@ var Cd = ({ images: t, initialIndex: n = 0, isOpen: r, onClose: i, onIndexChange
8837
9118
  })
8838
9119
  });
8839
9120
  };
8840
- Cd.displayName = "Lightbox";
9121
+ Rd.displayName = "Lightbox";
8841
9122
  //#endregion
8842
9123
  //#region src/utils/isSafeHref.ts
8843
- var wd = /^(?:https?:|mailto:)/i;
8844
- function Td(e) {
9124
+ var zd = /^(?:https?:|mailto:)/i;
9125
+ function Bd(e) {
8845
9126
  if (typeof e != "string") return !1;
8846
9127
  let t = e.trim();
8847
- return t.length === 0 ? !1 : /^[a-z][a-z0-9+\-.]*:/i.test(t) ? wd.test(t) : !0;
9128
+ return t.length === 0 ? !1 : /^[a-z][a-z0-9+\-.]*:/i.test(t) ? zd.test(t) : !0;
8848
9129
  }
8849
9130
  //#endregion
8850
9131
  //#region src/components/TimelineContainer/components/variants/TimelineEntryCardImage.tsx
8851
- var Ed = ({ entry: e, isExpanded: t, onSelect: n }) => {
8852
- let [r, i] = p(!1), { image: a } = e, o = a.thumbnail || a.src, c = a.link && Td(a.link) ? a.link : void 0;
9132
+ var Vd = ({ entry: e, isExpanded: t, onSelect: n }) => {
9133
+ let [r, i] = p(!1), { image: a } = e, o = a.thumbnail || a.src, c = a.link && Bd(a.link) ? a.link : void 0;
8853
9134
  return s(() => {
8854
9135
  t || i(!1);
8855
9136
  }, [t]), c ? /* @__PURE__ */ x("a", {
@@ -8897,13 +9178,13 @@ var Ed = ({ entry: e, isExpanded: t, onSelect: n }) => {
8897
9178
  height: a.height
8898
9179
  })
8899
9180
  }),
8900
- /* @__PURE__ */ b(Cd, {
9181
+ /* @__PURE__ */ b(Rd, {
8901
9182
  images: [a],
8902
9183
  isOpen: r,
8903
9184
  onClose: () => i(!1)
8904
9185
  })
8905
9186
  ] });
8906
- }, Dd = ({ entry: e, isExpanded: t, onSelect: n }) => {
9187
+ }, Hd = ({ entry: e, isExpanded: t, onSelect: n }) => {
8907
9188
  let [r, i] = p({ phase: "grid" });
8908
9189
  if (s(() => {
8909
9190
  t || i({ phase: "grid" });
@@ -8917,7 +9198,7 @@ var Ed = ({ entry: e, isExpanded: t, onSelect: n }) => {
8917
9198
  children: "No images."
8918
9199
  })] });
8919
9200
  let a = (e, t) => {
8920
- t.link && Td(t.link) || i((t) => t.phase === "focused" && t.index === e ? {
9201
+ t.link && Bd(t.link) || i((t) => t.phase === "focused" && t.index === e ? {
8921
9202
  phase: "lightbox",
8922
9203
  index: e
8923
9204
  } : {
@@ -8938,13 +9219,13 @@ var Ed = ({ entry: e, isExpanded: t, onSelect: n }) => {
8938
9219
  /* @__PURE__ */ b("div", {
8939
9220
  className: "eidotter-timeline-card-gallery__grid",
8940
9221
  role: "list",
8941
- children: e.images.map((e, t) => /* @__PURE__ */ b(Od, {
9222
+ children: e.images.map((e, t) => /* @__PURE__ */ b(Ud, {
8942
9223
  image: e,
8943
9224
  isFocused: o === t,
8944
9225
  onClick: () => a(t, e)
8945
9226
  }, t))
8946
9227
  }),
8947
- /* @__PURE__ */ b(Cd, {
9228
+ /* @__PURE__ */ b(Rd, {
8948
9229
  images: e.images,
8949
9230
  isOpen: r.phase === "lightbox",
8950
9231
  initialIndex: r.phase === "lightbox" ? r.index : 0,
@@ -8962,8 +9243,8 @@ var Ed = ({ entry: e, isExpanded: t, onSelect: n }) => {
8962
9243
  }
8963
9244
  })
8964
9245
  ] });
8965
- }, Od = ({ image: e, isFocused: t, onClick: n }) => {
8966
- let r = e.thumbnail || e.src, i = e.link && Td(e.link) ? e.link : void 0;
9246
+ }, Ud = ({ image: e, isFocused: t, onClick: n }) => {
9247
+ let r = e.thumbnail || e.src, i = e.link && Bd(e.link) ? e.link : void 0;
8967
9248
  return i ? /* @__PURE__ */ b("div", {
8968
9249
  role: "listitem",
8969
9250
  className: "eidotter-timeline-card-gallery__cell eidotter-timeline-card-gallery__cell--link",
@@ -8996,39 +9277,39 @@ var Ed = ({ entry: e, isExpanded: t, onSelect: n }) => {
8996
9277
  })
8997
9278
  })
8998
9279
  });
8999
- }, kd = e.memo(({ entry: e, isSelected: t, isExpanded: n = !1, onSelect: r, footer: i, children: a }) => /* @__PURE__ */ x("div", {
9280
+ }, Wd = e.memo(({ entry: e, isSelected: t, isExpanded: n = !1, onSelect: r, footer: i, children: a }) => /* @__PURE__ */ x("div", {
9000
9281
  className: $("eidotter-timeline-card", t && "eidotter-timeline-card--selected", n && "eidotter-timeline-card--expanded"),
9001
- children: [Ad(e, n, r, a), i && /* @__PURE__ */ b("div", {
9282
+ children: [Gd(e, n, r, a), i && /* @__PURE__ */ b("div", {
9002
9283
  className: "eidotter-timeline-card__footer",
9003
9284
  children: i
9004
9285
  })]
9005
9286
  }));
9006
- kd.displayName = "TimelineEntryCard";
9007
- function Ad(e, t, n, r) {
9287
+ Wd.displayName = "TimelineEntryCard";
9288
+ function Gd(e, t, n, r) {
9008
9289
  switch (e.kind) {
9009
- case "text": return /* @__PURE__ */ b(Md, {
9290
+ case "text": return /* @__PURE__ */ b(qd, {
9010
9291
  entry: e,
9011
9292
  isExpanded: t,
9012
9293
  onSelect: n,
9013
9294
  children: r
9014
9295
  });
9015
- case "image": return /* @__PURE__ */ b(Ed, {
9296
+ case "image": return /* @__PURE__ */ b(Vd, {
9016
9297
  entry: e,
9017
9298
  isExpanded: t,
9018
9299
  onSelect: n
9019
9300
  });
9020
- case "gallery": return /* @__PURE__ */ b(Dd, {
9301
+ case "gallery": return /* @__PURE__ */ b(Hd, {
9021
9302
  entry: e,
9022
9303
  isExpanded: t,
9023
9304
  onSelect: n
9024
9305
  });
9025
- default: return jd(e);
9306
+ default: return Kd(e);
9026
9307
  }
9027
9308
  }
9028
- function jd(e) {
9309
+ function Kd(e) {
9029
9310
  throw Error(`TimelineEntryCard: unhandled entry kind: ${JSON.stringify(e)}`);
9030
9311
  }
9031
- var Md = ({ entry: e, isExpanded: t, onSelect: n, children: r }) => {
9312
+ var qd = ({ entry: e, isExpanded: t, onSelect: n, children: r }) => {
9032
9313
  let i = typeof e.content == "string", a = e.content != null;
9033
9314
  return /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ x(K, {
9034
9315
  className: "eidotter-timeline-card__trigger",
@@ -9066,7 +9347,7 @@ var Md = ({ entry: e, isExpanded: t, onSelect: n, children: r }) => {
9066
9347
  children: e.content
9067
9348
  })
9068
9349
  })] });
9069
- }, Nd = e.memo(({ buckets: t, selectedEntryId: n, onEntrySelect: r, onBucketClick: i, renderEntry: a }) => /* @__PURE__ */ b("div", {
9350
+ }, Jd = e.memo(({ buckets: t, selectedEntryId: n, onEntrySelect: r, onBucketClick: i, renderEntry: a }) => /* @__PURE__ */ b("div", {
9070
9351
  className: "timeline-view timeline-view--month",
9071
9352
  role: "list",
9072
9353
  children: t.map((t) => /* @__PURE__ */ x("div", {
@@ -9074,7 +9355,7 @@ var Md = ({ entry: e, isExpanded: t, onSelect: n, children: r }) => {
9074
9355
  role: "listitem",
9075
9356
  children: [/* @__PURE__ */ b("div", {
9076
9357
  className: "timeline-view__node",
9077
- children: /* @__PURE__ */ b(Uu, {
9358
+ children: /* @__PURE__ */ b(id, {
9078
9359
  shape: "circle",
9079
9360
  size: "medium",
9080
9361
  variant: "default",
@@ -9085,7 +9366,7 @@ var Md = ({ entry: e, isExpanded: t, onSelect: n, children: r }) => {
9085
9366
  }), /* @__PURE__ */ b("div", {
9086
9367
  className: "timeline-view__content",
9087
9368
  children: t.entries.map((t) => {
9088
- let i = n === t.id, o = () => /* @__PURE__ */ b(kd, {
9369
+ let i = n === t.id, o = () => /* @__PURE__ */ b(Wd, {
9089
9370
  entry: t,
9090
9371
  isSelected: i,
9091
9372
  isExpanded: i,
@@ -9100,23 +9381,23 @@ var Md = ({ entry: e, isExpanded: t, onSelect: n, children: r }) => {
9100
9381
  })]
9101
9382
  }, t.periodStart))
9102
9383
  }));
9103
- Nd.displayName = "MonthView";
9384
+ Jd.displayName = "MonthView";
9104
9385
  //#endregion
9105
9386
  //#region src/components/Tag/components/Tag.tsx
9106
- var Pd = {
9387
+ var Yd = {
9107
9388
  sm: "text-dos-text-xs px-2 py-0.5 min-h-6 gap-1",
9108
9389
  md: "text-dos-text-sm px-2.5 py-1 min-h-7 gap-1.5",
9109
9390
  lg: "text-dos-text-md px-3 py-1.5 min-h-8 gap-1.5",
9110
9391
  small: "text-dos-text-xs px-2 py-0.5 min-h-6 gap-1",
9111
9392
  medium: "text-dos-text-sm px-2.5 py-1 min-h-7 gap-1.5"
9112
- }, Fd = ({ children: e, variant: t = "default", size: n = "md", color: r, selected: i = !1, closeable: a = !1, disabled: o = !1, onClick: s, onClose: c, className: l, "aria-label": u, ...d }) => {
9393
+ }, Xd = ({ children: e, variant: t = "default", size: n = "md", color: r, selected: i = !1, closeable: a = !1, disabled: o = !1, onClick: s, onClose: c, className: l, "aria-label": u, ...d }) => {
9113
9394
  let f = !!s && !o, { isClosing: p, triggerClose: m, handleAnimationEnd: h } = $l("tag-exit", c), g = (e) => {
9114
9395
  o || ((e.key === "Enter" || e.key === " ") && s && (e.preventDefault(), s(e)), (e.key === "Delete" || e.key === "Backspace") && a && c && (e.preventDefault(), m()));
9115
9396
  }, _ = () => {
9116
9397
  o || m();
9117
9398
  }, v = r ? { "--tag-color": "var(" + r + ")" } : void 0;
9118
9399
  return /* @__PURE__ */ x("span", {
9119
- className: $("inline-flex items-center justify-center", "font-dos leading-none whitespace-nowrap select-none", "rounded-dos-sm uppercase tracking-wider", Pd[n] || Pd.md, "eidotter-tag", "eidotter-tag--" + t, i && "eidotter-tag--selected", o && "opacity-50 cursor-not-allowed", p && "eidotter-tag--closing", f && "cursor-pointer", l),
9400
+ className: $("inline-flex items-center justify-center", "font-dos leading-none whitespace-nowrap select-none", "rounded-dos-sm uppercase tracking-wider", Yd[n] || Yd.md, "eidotter-tag", "eidotter-tag--" + t, i && "eidotter-tag--selected", o && "opacity-50 cursor-not-allowed", p && "eidotter-tag--closing", f && "cursor-pointer", l),
9120
9401
  style: v,
9121
9402
  onClick: f ? (e) => !o && s?.(e) : void 0,
9122
9403
  onKeyDown: g,
@@ -9142,17 +9423,17 @@ var Pd = {
9142
9423
  children: "[x]"
9143
9424
  })]
9144
9425
  });
9145
- }, Id = {
9426
+ }, Zd = {
9146
9427
  tight: "gap-1",
9147
9428
  normal: "gap-2",
9148
9429
  loose: "gap-3"
9149
- }, Ld = ({ children: e, gap: t = "normal", wrap: n = !0, className: r, "aria-label": i, ...a }) => /* @__PURE__ */ b("div", {
9150
- className: $("flex", n ? "flex-wrap" : "flex-nowrap", Id[t] || Id.normal, r),
9430
+ }, Qd = ({ children: e, gap: t = "normal", wrap: n = !0, className: r, "aria-label": i, ...a }) => /* @__PURE__ */ b("div", {
9431
+ className: $("flex", n ? "flex-wrap" : "flex-nowrap", Zd[t] || Zd.normal, r),
9151
9432
  role: "group",
9152
9433
  "aria-label": i,
9153
9434
  ...a,
9154
9435
  children: e
9155
- }), Rd = e.memo(({ buckets: t, selectedEntryId: n, onEntrySelect: r, renderEntry: i }) => /* @__PURE__ */ b("div", {
9436
+ }), $d = e.memo(({ buckets: t, selectedEntryId: n, onEntrySelect: r, renderEntry: i }) => /* @__PURE__ */ b("div", {
9156
9437
  className: "timeline-view timeline-view--day",
9157
9438
  role: "list",
9158
9439
  children: t.map((t) => /* @__PURE__ */ x("div", {
@@ -9160,7 +9441,7 @@ var Pd = {
9160
9441
  role: "listitem",
9161
9442
  children: [/* @__PURE__ */ b("div", {
9162
9443
  className: "timeline-view__node",
9163
- children: /* @__PURE__ */ b(Uu, {
9444
+ children: /* @__PURE__ */ b(id, {
9164
9445
  shape: "circle",
9165
9446
  size: "medium",
9166
9447
  variant: "default",
@@ -9170,15 +9451,15 @@ var Pd = {
9170
9451
  }), /* @__PURE__ */ b("div", {
9171
9452
  className: "timeline-view__content",
9172
9453
  children: t.entries.map((t) => {
9173
- let a = n === t.id, o = () => /* @__PURE__ */ b(kd, {
9454
+ let a = n === t.id, o = () => /* @__PURE__ */ b(Wd, {
9174
9455
  entry: t,
9175
9456
  isSelected: a,
9176
9457
  isExpanded: a,
9177
9458
  onSelect: r,
9178
- footer: t.tags && t.tags.length > 0 ? /* @__PURE__ */ b(Ld, {
9459
+ footer: t.tags && t.tags.length > 0 ? /* @__PURE__ */ b(Qd, {
9179
9460
  gap: "tight",
9180
9461
  "aria-label": `Tags for ${t.title}`,
9181
- children: t.tags.map((e) => /* @__PURE__ */ b(Fd, {
9462
+ children: t.tags.map((e) => /* @__PURE__ */ b(Xd, {
9182
9463
  size: "small",
9183
9464
  variant: "outlined",
9184
9465
  children: e
@@ -9194,10 +9475,10 @@ var Pd = {
9194
9475
  })]
9195
9476
  }, t.periodStart))
9196
9477
  }));
9197
- Rd.displayName = "DayView";
9478
+ $d.displayName = "DayView";
9198
9479
  //#endregion
9199
9480
  //#region src/components/TimelineContainer/components/views/HourView.tsx
9200
- var zd = e.memo(({ buckets: t, selectedEntryId: n, onEntrySelect: r, renderEntry: i }) => /* @__PURE__ */ b("div", {
9481
+ var ef = e.memo(({ buckets: t, selectedEntryId: n, onEntrySelect: r, renderEntry: i }) => /* @__PURE__ */ b("div", {
9201
9482
  className: "timeline-view timeline-view--hour",
9202
9483
  role: "list",
9203
9484
  children: t.map((t) => /* @__PURE__ */ x("div", {
@@ -9205,7 +9486,7 @@ var zd = e.memo(({ buckets: t, selectedEntryId: n, onEntrySelect: r, renderEntry
9205
9486
  role: "listitem",
9206
9487
  children: [/* @__PURE__ */ b("div", {
9207
9488
  className: "timeline-view__node",
9208
- children: /* @__PURE__ */ b(Uu, {
9489
+ children: /* @__PURE__ */ b(id, {
9209
9490
  shape: "circle",
9210
9491
  size: "medium",
9211
9492
  variant: "default",
@@ -9215,22 +9496,22 @@ var zd = e.memo(({ buckets: t, selectedEntryId: n, onEntrySelect: r, renderEntry
9215
9496
  }), /* @__PURE__ */ b("div", {
9216
9497
  className: "timeline-view__content",
9217
9498
  children: t.entries.map((t) => {
9218
- let a = n === t.id, o = () => /* @__PURE__ */ x(kd, {
9499
+ let a = n === t.id, o = () => /* @__PURE__ */ x(Wd, {
9219
9500
  entry: t,
9220
9501
  isSelected: a,
9221
9502
  isExpanded: !0,
9222
9503
  onSelect: r,
9223
9504
  footer: /* @__PURE__ */ x("div", {
9224
9505
  className: "timeline-view__entry-footer",
9225
- children: [t.tags && t.tags.length > 0 && /* @__PURE__ */ b(Ld, {
9506
+ children: [t.tags && t.tags.length > 0 && /* @__PURE__ */ b(Qd, {
9226
9507
  gap: "tight",
9227
9508
  "aria-label": `Tags for ${t.title}`,
9228
- children: t.tags.map((e) => /* @__PURE__ */ b(Fd, {
9509
+ children: t.tags.map((e) => /* @__PURE__ */ b(Xd, {
9229
9510
  size: "small",
9230
9511
  variant: "outlined",
9231
9512
  children: e
9232
9513
  }, e))
9233
- }), t.type && /* @__PURE__ */ b(Au, {
9514
+ }), t.type && /* @__PURE__ */ b(Gu, {
9234
9515
  variant: "default",
9235
9516
  size: "small",
9236
9517
  children: t.type
@@ -9239,7 +9520,7 @@ var zd = e.memo(({ buckets: t, selectedEntryId: n, onEntrySelect: r, renderEntry
9239
9520
  children: [/* @__PURE__ */ b("time", {
9240
9521
  className: "timeline-view__timestamp",
9241
9522
  dateTime: t.date,
9242
- children: rd(t.date)
9523
+ children: vd(t.date)
9243
9524
  }), t.kind === "text" && t.content !== void 0 && /* @__PURE__ */ b("div", {
9244
9525
  className: "timeline-view__entry-content",
9245
9526
  children: t.content
@@ -9254,29 +9535,29 @@ var zd = e.memo(({ buckets: t, selectedEntryId: n, onEntrySelect: r, renderEntry
9254
9535
  })]
9255
9536
  }, t.periodStart))
9256
9537
  }));
9257
- zd.displayName = "HourView";
9538
+ ef.displayName = "HourView";
9258
9539
  //#endregion
9259
9540
  //#region src/components/TimelineContainer/components/TimelineContent.tsx
9260
- var Bd = ({ zoomLevel: e, buckets: t, selectedEntryId: n, onEntrySelect: r, onBucketClick: i, renderEntry: a }) => {
9541
+ var tf = ({ zoomLevel: e, buckets: t, selectedEntryId: n, onEntrySelect: r, onBucketClick: i, renderEntry: a }) => {
9261
9542
  switch (e) {
9262
- case "year": return /* @__PURE__ */ b(Sd, {
9543
+ case "year": return /* @__PURE__ */ b(Ld, {
9263
9544
  buckets: t,
9264
9545
  onBucketClick: i
9265
9546
  });
9266
- case "month": return /* @__PURE__ */ b(Nd, {
9547
+ case "month": return /* @__PURE__ */ b(Jd, {
9267
9548
  buckets: t,
9268
9549
  selectedEntryId: n,
9269
9550
  onEntrySelect: r,
9270
9551
  onBucketClick: i,
9271
9552
  renderEntry: a
9272
9553
  });
9273
- case "day": return /* @__PURE__ */ b(Rd, {
9554
+ case "day": return /* @__PURE__ */ b($d, {
9274
9555
  buckets: t,
9275
9556
  selectedEntryId: n,
9276
9557
  onEntrySelect: r,
9277
9558
  renderEntry: a
9278
9559
  });
9279
- case "hour": return /* @__PURE__ */ b(zd, {
9560
+ case "hour": return /* @__PURE__ */ b(ef, {
9280
9561
  buckets: t,
9281
9562
  selectedEntryId: n,
9282
9563
  onEntrySelect: r,
@@ -9284,7 +9565,7 @@ var Bd = ({ zoomLevel: e, buckets: t, selectedEntryId: n, onEntrySelect: r, onBu
9284
9565
  });
9285
9566
  default: return e;
9286
9567
  }
9287
- }, Vd = ({ entries: e, selectedEntryId: t, onSelect: n, onDeselect: r, renderEntry: i, formatDate: o }) => {
9568
+ }, nf = ({ entries: e, selectedEntryId: t, onSelect: n, onDeselect: r, renderEntry: i, formatDate: o }) => {
9288
9569
  let c = e.find((e) => e.id === t) ?? null, l = f(null), u = f(null), d = f(t);
9289
9570
  s(() => {
9290
9571
  let e = d.current;
@@ -9329,7 +9610,7 @@ var Bd = ({ zoomLevel: e, buckets: t, selectedEntryId: n, onEntrySelect: r, onBu
9329
9610
  children: [/* @__PURE__ */ b("span", {
9330
9611
  className: "eidotter-timeline-md__rail-node",
9331
9612
  "aria-hidden": "true",
9332
- children: /* @__PURE__ */ b(Uu, {
9613
+ children: /* @__PURE__ */ b(id, {
9333
9614
  shape: "circle",
9334
9615
  size: "sm",
9335
9616
  variant: "default",
@@ -9363,7 +9644,7 @@ var Bd = ({ zoomLevel: e, buckets: t, selectedEntryId: n, onEntrySelect: r, onBu
9363
9644
  }), /* @__PURE__ */ b("div", {
9364
9645
  className: "eidotter-timeline-md__detail-body",
9365
9646
  children: ((e) => {
9366
- let t = () => /* @__PURE__ */ b(kd, {
9647
+ let t = () => /* @__PURE__ */ b(Wd, {
9367
9648
  entry: e,
9368
9649
  isSelected: !0,
9369
9650
  isExpanded: !0
@@ -9382,19 +9663,19 @@ var Bd = ({ zoomLevel: e, buckets: t, selectedEntryId: n, onEntrySelect: r, onBu
9382
9663
  })]
9383
9664
  });
9384
9665
  };
9385
- Vd.displayName = "MasterDetailLayout";
9666
+ nf.displayName = "MasterDetailLayout";
9386
9667
  //#endregion
9387
9668
  //#region src/components/TimelineContainer/components/TimelineContainer.tsx
9388
- var Hd = ({ entries: e, mode: t = "interactive", zoomLevel: n, defaultZoomLevel: r = "month", onZoomChange: i, selectedEntryId: o, defaultSelectedEntryId: c, onSelectEntry: l, sortOrder: d = "desc", scrollToZoom: m = !0, keyboardShortcuts: h = !0, renderEntry: g, pageSize: _ = 10, onLoadMore: v, ...y }) => {
9389
- let S = t === "static", C = t === "feed", w = S || C, T = t === "master-detail", E = f(null), D = f(null), [O, k] = p(""), { zoomLevel: A, canZoomIn: j, canZoomOut: M, breadcrumbs: N, currentPeriod: P, isDrillDownEnabled: ee, drillDown: F, drillUp: te, reset: ne } = Gu({
9669
+ var rf = ({ entries: e, mode: t = "interactive", zoomLevel: n, defaultZoomLevel: r = "month", onZoomChange: i, selectedEntryId: o, defaultSelectedEntryId: c, onSelectEntry: l, sortOrder: d = "desc", scrollToZoom: m = !0, keyboardShortcuts: h = !0, renderEntry: g, pageSize: _ = 10, onLoadMore: v, ...y }) => {
9670
+ let S = t === "static", C = t === "feed", w = S || C, T = t === "master-detail", E = f(null), D = f(null), [O, k] = p(""), { zoomLevel: A, canZoomIn: j, canZoomOut: M, breadcrumbs: N, currentPeriod: P, isDrillDownEnabled: ee, drillDown: F, drillUp: te, reset: ne } = od({
9390
9671
  zoomLevel: n,
9391
9672
  defaultZoomLevel: r,
9392
9673
  onZoomChange: i
9393
- }), { selectedEntryId: re, select: ie, toggle: I, deselect: L } = Ku({
9674
+ }), { selectedEntryId: re, select: ie, toggle: I, deselect: L } = sd({
9394
9675
  selectedEntryId: o,
9395
9676
  defaultSelectedEntryId: c,
9396
9677
  onSelectEntry: l
9397
- }), ae = u(() => yd(e, A, d), [
9678
+ }), ae = u(() => Pd(e, A, d), [
9398
9679
  e,
9399
9680
  A,
9400
9681
  d
@@ -9403,7 +9684,7 @@ var Hd = ({ entries: e, mode: t = "interactive", zoomLevel: n, defaultZoomLevel:
9403
9684
  "month",
9404
9685
  "day",
9405
9686
  "hour"
9406
- ][N.length - 1] : null, R = u(() => P && oe ? vd(ae, P, oe) : ae, [
9687
+ ][N.length - 1] : null, R = u(() => P && oe ? Nd(ae, P, oe) : ae, [
9407
9688
  ae,
9408
9689
  P,
9409
9690
  oe
@@ -9505,7 +9786,7 @@ var Hd = ({ entries: e, mode: t = "interactive", zoomLevel: n, defaultZoomLevel:
9505
9786
  return /* @__PURE__ */ x("div", {
9506
9787
  ref: E,
9507
9788
  ...y,
9508
- className: $("font-dos text-dos-text-brand p-4 min-h-[200px]", "eidotter-timeline-container", S && "eidotter-timeline-container--static", C && "eidotter-timeline-container--feed", T && "eidotter-timeline-container--master-detail", y.className),
9789
+ className: $("font-dos text-dos-text-brand p-4", "eidotter-timeline-container", S && "eidotter-timeline-container--static", C && "eidotter-timeline-container--feed", T && "eidotter-timeline-container--master-detail", y.className),
9509
9790
  role: "region",
9510
9791
  "aria-label": y["aria-label"] ?? "Timeline",
9511
9792
  tabIndex: w || T ? void 0 : 0,
@@ -9517,7 +9798,7 @@ var Hd = ({ entries: e, mode: t = "interactive", zoomLevel: n, defaultZoomLevel:
9517
9798
  "aria-atomic": "true",
9518
9799
  children: O
9519
9800
  }),
9520
- !w && !T && /* @__PURE__ */ b(bd, {
9801
+ !w && !T && /* @__PURE__ */ b(Fd, {
9521
9802
  zoomLevel: A,
9522
9803
  canZoomIn: j,
9523
9804
  canZoomOut: M,
@@ -9536,12 +9817,12 @@ var Hd = ({ entries: e, mode: t = "interactive", zoomLevel: n, defaultZoomLevel:
9536
9817
  className: "eidotter-timeline-container__empty",
9537
9818
  role: "status",
9538
9819
  children: [/* @__PURE__ */ b("p", { children: "C:\\TIMELINE> No entries found." }), /* @__PURE__ */ b("p", { children: "_" })]
9539
- }) : S ? /* @__PURE__ */ b(xd, { children: /* @__PURE__ */ b("div", {
9820
+ }) : S ? /* @__PURE__ */ b(Id, { children: /* @__PURE__ */ b("div", {
9540
9821
  className: "eidotter-timeline-container__static",
9541
9822
  role: "list",
9542
9823
  "aria-label": "Timeline",
9543
9824
  children: B.map((e) => {
9544
- let t = () => /* @__PURE__ */ b(kd, {
9825
+ let t = () => /* @__PURE__ */ b(Wd, {
9545
9826
  entry: e,
9546
9827
  isSelected: !1,
9547
9828
  isExpanded: !0
@@ -9551,7 +9832,7 @@ var Hd = ({ entries: e, mode: t = "interactive", zoomLevel: n, defaultZoomLevel:
9551
9832
  role: "listitem",
9552
9833
  children: [/* @__PURE__ */ b("div", {
9553
9834
  className: "timeline-view__node",
9554
- children: /* @__PURE__ */ b(Uu, {
9835
+ children: /* @__PURE__ */ b(id, {
9555
9836
  shape: "circle",
9556
9837
  size: "medium",
9557
9838
  variant: "default",
@@ -9565,12 +9846,12 @@ var Hd = ({ entries: e, mode: t = "interactive", zoomLevel: n, defaultZoomLevel:
9565
9846
  }) : t()]
9566
9847
  }, e.id);
9567
9848
  })
9568
- }) }) : C ? /* @__PURE__ */ x(xd, { children: [/* @__PURE__ */ b("div", {
9849
+ }) }) : C ? /* @__PURE__ */ x(Id, { children: [/* @__PURE__ */ b("div", {
9569
9850
  className: "eidotter-timeline-container__feed",
9570
9851
  role: "list",
9571
9852
  "aria-label": "Timeline",
9572
9853
  children: fe.map((e) => {
9573
- let t = re === e.id, n = () => /* @__PURE__ */ b(kd, {
9854
+ let t = re === e.id, n = () => /* @__PURE__ */ b(Wd, {
9574
9855
  entry: e,
9575
9856
  isSelected: t,
9576
9857
  isExpanded: t,
@@ -9581,7 +9862,7 @@ var Hd = ({ entries: e, mode: t = "interactive", zoomLevel: n, defaultZoomLevel:
9581
9862
  role: "listitem",
9582
9863
  children: [/* @__PURE__ */ b("div", {
9583
9864
  className: "timeline-view__node",
9584
- children: /* @__PURE__ */ b(Uu, {
9865
+ children: /* @__PURE__ */ b(id, {
9585
9866
  shape: "circle",
9586
9867
  size: "medium",
9587
9868
  variant: "default",
@@ -9601,14 +9882,14 @@ var Hd = ({ entries: e, mode: t = "interactive", zoomLevel: n, defaultZoomLevel:
9601
9882
  onClick: me,
9602
9883
  "aria-label": `Load more entries (showing ${V} of ${B.length})`,
9603
9884
  children: "LOAD MORE..."
9604
- })] }) : T ? /* @__PURE__ */ b(Vd, {
9885
+ })] }) : T ? /* @__PURE__ */ b(nf, {
9605
9886
  entries: B,
9606
9887
  selectedEntryId: re,
9607
9888
  onSelect: ie,
9608
9889
  onDeselect: L,
9609
9890
  renderEntry: g,
9610
9891
  formatDate: ge
9611
- }) : R.length === 0 && P ? /* @__PURE__ */ b(xd, { children: /* @__PURE__ */ x("div", {
9892
+ }) : R.length === 0 && P ? /* @__PURE__ */ b(Id, { children: /* @__PURE__ */ x("div", {
9612
9893
  className: "eidotter-timeline-container__empty",
9613
9894
  role: "status",
9614
9895
  children: [/* @__PURE__ */ x("p", { children: [
@@ -9616,7 +9897,7 @@ var Hd = ({ entries: e, mode: t = "interactive", zoomLevel: n, defaultZoomLevel:
9616
9897
  N[N.length - 1]?.label ?? "this period",
9617
9898
  "."
9618
9899
  ] }), /* @__PURE__ */ b("p", { children: "_" })]
9619
- }) }) : /* @__PURE__ */ b(xd, { children: /* @__PURE__ */ b(Bd, {
9900
+ }) }) : /* @__PURE__ */ b(Id, { children: /* @__PURE__ */ b(tf, {
9620
9901
  zoomLevel: A,
9621
9902
  buckets: R,
9622
9903
  selectedEntryId: re,
@@ -9627,7 +9908,7 @@ var Hd = ({ entries: e, mode: t = "interactive", zoomLevel: n, defaultZoomLevel:
9627
9908
  })
9628
9909
  ]
9629
9910
  });
9630
- }, Ud = r(({ isOpen: e, onOpenChange: t, onClose: n, title: r, children: i, footer: a, className: o }, c) => {
9911
+ }, af = r(({ isOpen: e, onOpenChange: t, onClose: n, title: r, children: i, footer: a, className: o }, c) => {
9631
9912
  let l = f(e), u = f(!1);
9632
9913
  s(() => {
9633
9914
  e !== l.current && (l.current = e, u.current || (t?.(e), e || n?.()), u.current = !1);
@@ -9679,12 +9960,12 @@ var Hd = ({ entries: e, mode: t = "interactive", zoomLevel: n, defaultZoomLevel:
9679
9960
  })
9680
9961
  });
9681
9962
  });
9682
- Ud.displayName = "Modal";
9963
+ af.displayName = "Modal";
9683
9964
  //#endregion
9684
9965
  //#region src/hooks/useTextScramble.ts
9685
- var Wd = "░▒▓█│┤┐└┴┬├─┼", Gd = 4;
9686
- function Kd(e, t) {
9687
- let { speed: n = 40, characters: r = Wd, enabled: i = !0, delay: a = 0 } = t ?? {}, [o, c] = p(() => {
9966
+ var of = "░▒▓█│┤┐└┴┬├─┼", sf = 4;
9967
+ function cf(e, t) {
9968
+ let { speed: n = 40, characters: r = of, enabled: i = !0, delay: a = 0 } = t ?? {}, [o, c] = p(() => {
9688
9969
  if (!i || Ql()) return e;
9689
9970
  let t = "";
9690
9971
  for (let n = 0; n < e.length; n++) e[n] === " " ? t += " " : t += r[Math.floor(Math.random() * r.length)];
@@ -9705,7 +9986,7 @@ function Kd(e, t) {
9705
9986
  return;
9706
9987
  }
9707
9988
  if (a >= n) {
9708
- if (s = i, o++, o >= Gd && (t++, o = 0), t >= e.length) {
9989
+ if (s = i, o++, o >= sf && (t++, o = 0), t >= e.length) {
9709
9990
  c(e), u(!1);
9710
9991
  return;
9711
9992
  }
@@ -9731,7 +10012,7 @@ function Kd(e, t) {
9731
10012
  }
9732
10013
  //#endregion
9733
10014
  //#region src/components/Stat/components/Stat.tsx
9734
- var qd = {
10015
+ var lf = {
9735
10016
  sm: {
9736
10017
  root: "gap-0.5",
9737
10018
  label: "text-dos-text-xs",
@@ -9768,23 +10049,23 @@ var qd = {
9768
10049
  value: "text-dos-display-md",
9769
10050
  trend: "text-dos-text-md"
9770
10051
  }
9771
- }, Jd = {
10052
+ }, uf = {
9772
10053
  up: "text-dos-text-success",
9773
10054
  down: "text-dos-text-error",
9774
10055
  neutral: "text-dos-text-brand"
9775
- }, Yd = {
10056
+ }, df = {
9776
10057
  up: "▲",
9777
10058
  down: "▼",
9778
10059
  neutral: "►"
9779
- }, Xd = {
10060
+ }, ff = {
9780
10061
  up: "increasing",
9781
10062
  down: "decreasing",
9782
10063
  neutral: "unchanged"
9783
- }, Zd = r(({ label: e, value: t, trend: n, trendValue: r, size: i = "md", scramble: a = !1, className: o, ...s }, c) => {
9784
- let { text: l } = Kd(String(t), {
10064
+ }, pf = r(({ label: e, value: t, trend: n, trendValue: r, size: i = "md", scramble: a = !1, className: o, ...s }, c) => {
10065
+ let { text: l } = cf(String(t), {
9785
10066
  speed: 30,
9786
10067
  enabled: a
9787
- }), u = a ? l : String(t), d = qd[i] || qd.md;
10068
+ }), u = a ? l : String(t), d = lf[i] || lf.md;
9788
10069
  return /* @__PURE__ */ x("div", {
9789
10070
  ref: c,
9790
10071
  className: $("flex flex-col font-dos", "eidotter-stat", d.root, o),
@@ -9799,12 +10080,12 @@ var qd = {
9799
10080
  children: u
9800
10081
  }),
9801
10082
  n && /* @__PURE__ */ x("span", {
9802
- className: $("inline-flex items-center gap-1 leading-none", Jd[n], d.trend),
9803
- "aria-label": `Trend: ${Xd[n]}${r ? `, ${r}` : ""}`,
10083
+ className: $("inline-flex items-center gap-1 leading-none", uf[n], d.trend),
10084
+ "aria-label": `Trend: ${ff[n]}${r ? `, ${r}` : ""}`,
9804
10085
  children: [/* @__PURE__ */ b("span", {
9805
10086
  className: "text-[0.8em]",
9806
10087
  "aria-hidden": "true",
9807
- children: Yd[n]
10088
+ children: df[n]
9808
10089
  }), r && /* @__PURE__ */ b("span", {
9809
10090
  className: "tabular-nums",
9810
10091
  children: r
@@ -9813,17 +10094,17 @@ var qd = {
9813
10094
  ]
9814
10095
  });
9815
10096
  });
9816
- Zd.displayName = "Stat";
10097
+ pf.displayName = "Stat";
9817
10098
  //#endregion
9818
10099
  //#region src/components/FilterBar/components/FilterBar.tsx
9819
- var Qd = {
10100
+ var mf = {
9820
10101
  sm: "eidotter-filter-bar--sm",
9821
10102
  md: "eidotter-filter-bar--md",
9822
10103
  lg: "eidotter-filter-bar--lg",
9823
10104
  small: "eidotter-filter-bar--sm",
9824
10105
  medium: "eidotter-filter-bar--md",
9825
10106
  large: "eidotter-filter-bar--lg"
9826
- }, $d = ({ items: e, activeIds: t, defaultActiveIds: n = [], mode: r = "multi", showAll: i = !1, allLabel: o = "All", size: s = "md", onChange: c, className: l, ...u }) => {
10107
+ }, hf = ({ items: e, activeIds: t, defaultActiveIds: n = [], mode: r = "multi", showAll: i = !1, allLabel: o = "All", size: s = "md", onChange: c, className: l, ...u }) => {
9827
10108
  let [d, m] = p(n), h = f(null), g = t !== void 0, _ = g ? t : d, v = e.filter((e) => !e.disabled).map((e) => e.id), y = _.length === 0, S = a((e) => {
9828
10109
  g || m(e), c?.(e);
9829
10110
  }, [g, c]), C = a((e) => {
@@ -9858,7 +10139,7 @@ var Qd = {
9858
10139
  }, [T]), D = i && y ? "__all__" : _.length > 0 ? _[0] : i ? "__all__" : v[0] || null;
9859
10140
  return /* @__PURE__ */ x("div", {
9860
10141
  ref: h,
9861
- className: $("inline-flex flex-wrap items-center gap-1 p-1 font-dos max-w-full", "bg-dos-bg-secondary border border-dos-border-default rounded-dos-sm", "eidotter-filter-bar", Qd[s] || Qd.md, l),
10142
+ className: $("inline-flex flex-wrap items-center gap-1 p-1 font-dos max-w-full", "bg-dos-bg-secondary border border-dos-border-default rounded-dos-sm", "eidotter-filter-bar", mf[s] || mf.md, l),
9862
10143
  role: "toolbar",
9863
10144
  onKeyDown: E,
9864
10145
  ...u,
@@ -9891,7 +10172,7 @@ var Qd = {
9891
10172
  }, e.id);
9892
10173
  })]
9893
10174
  });
9894
- }, ef = (e) => {
10175
+ }, gf = (e) => {
9895
10176
  if (!e) return !1;
9896
10177
  try {
9897
10178
  let t = new URL(e);
@@ -9903,8 +10184,19 @@ var Qd = {
9903
10184
  } catch {
9904
10185
  return !1;
9905
10186
  }
9906
- }, tf = ({ children: e, content: t, defaultExpanded: n = !1, expanded: r, onToggle: i, sources: a = [], className: o, ...s }) => {
9907
- let [l, u] = p(n), [d, m] = p(/* @__PURE__ */ new Set()), h = f(n), g = c(), _ = f(null), v = r !== void 0, y = v ? r : l;
10187
+ };
10188
+ //#endregion
10189
+ //#region src/components/InlineExpand/components/InlineExpand.tsx
10190
+ function _f(e) {
10191
+ try {
10192
+ let { hostname: t } = new URL(e);
10193
+ return `https://www.google.com/s2/favicons?domain=${encodeURIComponent(t)}&sz=32`;
10194
+ } catch {
10195
+ return null;
10196
+ }
10197
+ }
10198
+ var vf = ({ children: e, content: t, defaultExpanded: n = !1, expanded: r, onToggle: i, sources: a = [], className: o, ...s }) => {
10199
+ let [l, u] = p(n), [d, m] = p({}), h = f(n), g = c(), _ = f(null), v = r !== void 0, y = v ? r : l;
9908
10200
  y && (h.current = !0);
9909
10201
  let S = () => {
9910
10202
  let e = !y;
@@ -9944,24 +10236,54 @@ var Qd = {
9944
10236
  className: "eidotter-inline-expand__source-item",
9945
10237
  role: "listitem",
9946
10238
  children: /* @__PURE__ */ x("a", {
9947
- href: ef(e.url) ? e.url : void 0,
10239
+ href: gf(e.url) ? e.url : void 0,
9948
10240
  className: "eidotter-inline-expand__source-link",
9949
10241
  target: "_blank",
9950
10242
  rel: "noopener noreferrer",
9951
10243
  "aria-label": `${e.title} (opens external website)`,
9952
- children: [h.current && e.favicon && ef(e.favicon) && !d.has(e.url) ? /* @__PURE__ */ b("img", {
9953
- className: "eidotter-inline-expand__source-favicon",
9954
- src: e.favicon,
9955
- alt: "",
9956
- width: 16,
9957
- height: 16,
9958
- decoding: "async",
9959
- onError: () => m((t) => new Set(t).add(e.url))
9960
- }) : /* @__PURE__ */ b("span", {
9961
- className: "eidotter-inline-expand__source-icon",
9962
- "aria-hidden": "true",
9963
- children: "[→]"
9964
- }), /* @__PURE__ */ b("span", {
10244
+ children: [(() => {
10245
+ if (!h.current) return /* @__PURE__ */ b("span", {
10246
+ className: "eidotter-inline-expand__source-icon",
10247
+ "aria-hidden": "true",
10248
+ children: "[→]"
10249
+ });
10250
+ let t = d[e.url];
10251
+ if (t === "icon") return /* @__PURE__ */ b("span", {
10252
+ className: "eidotter-inline-expand__source-icon",
10253
+ "aria-hidden": "true",
10254
+ children: "[→]"
10255
+ });
10256
+ let n = !!e.favicon && gf(e.favicon);
10257
+ if (!t && n) return /* @__PURE__ */ b("img", {
10258
+ className: "eidotter-inline-expand__source-favicon",
10259
+ src: e.favicon,
10260
+ alt: "",
10261
+ width: 16,
10262
+ height: 16,
10263
+ decoding: "async",
10264
+ onError: () => m((t) => ({
10265
+ ...t,
10266
+ [e.url]: "google"
10267
+ }))
10268
+ });
10269
+ let r = _f(e.url);
10270
+ return r ? /* @__PURE__ */ b("img", {
10271
+ className: "eidotter-inline-expand__source-favicon",
10272
+ src: r,
10273
+ alt: "",
10274
+ width: 16,
10275
+ height: 16,
10276
+ decoding: "async",
10277
+ onError: () => m((t) => ({
10278
+ ...t,
10279
+ [e.url]: "icon"
10280
+ }))
10281
+ }) : /* @__PURE__ */ b("span", {
10282
+ className: "eidotter-inline-expand__source-icon",
10283
+ "aria-hidden": "true",
10284
+ children: "[→]"
10285
+ });
10286
+ })(), /* @__PURE__ */ b("span", {
9965
10287
  className: "eidotter-inline-expand__source-title",
9966
10288
  children: e.title
9967
10289
  })]
@@ -9971,40 +10293,40 @@ var Qd = {
9971
10293
  })
9972
10294
  })]
9973
10295
  });
9974
- }, nf = {
10296
+ }, yf = {
9975
10297
  horizontal: "h-px w-full",
9976
10298
  vertical: "w-px h-full"
9977
- }, rf = ({ orientation: e = "horizontal", className: t }) => /* @__PURE__ */ b("div", {
10299
+ }, bf = ({ orientation: e = "horizontal", className: t }) => /* @__PURE__ */ b("div", {
9978
10300
  role: "separator",
9979
10301
  "aria-orientation": e,
9980
- className: $("shrink-0 bg-dos-border-default", "eidotter-separator", nf[e], t)
9981
- }), af = {
10302
+ className: $("shrink-0 bg-dos-border-default", "eidotter-separator", yf[e], t)
10303
+ }), xf = {
9982
10304
  default: "text-dos-text-primary",
9983
10305
  error: "text-dos-error",
9984
10306
  warning: "text-dos-warning",
9985
10307
  info: "text-dos-info"
9986
- }, of = ({ title: e, count: t, tone: n = "default", children: r, className: i }) => /* @__PURE__ */ x("h3", {
9987
- className: $("eidotter-section-heading", "font-dos uppercase tracking-wider mb-2 text-dos-text-sm", af[n], i),
10308
+ }, Sf = ({ title: e, count: t, tone: n = "default", children: r, className: i }) => /* @__PURE__ */ x("h3", {
10309
+ className: $("eidotter-section-heading", "font-dos uppercase tracking-wider mb-2 text-dos-text-sm", xf[n], i),
9988
10310
  children: [
9989
10311
  e,
9990
10312
  t !== void 0 && ` (${t})`,
9991
10313
  r
9992
10314
  ]
9993
10315
  });
9994
- of.displayName = "SectionHeading";
10316
+ Sf.displayName = "SectionHeading";
9995
10317
  //#endregion
9996
10318
  //#region src/components/EmptyState/components/EmptyState.tsx
9997
- var sf = {
10319
+ var Cf = {
9998
10320
  default: "text-dos-text-primary",
9999
10321
  error: "text-dos-error",
10000
10322
  warning: "text-dos-warning",
10001
10323
  info: "text-dos-info"
10002
- }, cf = ({ title: e, description: t, tone: n = "default", action: r, className: i }) => /* @__PURE__ */ x("div", {
10324
+ }, wf = ({ title: e, description: t, tone: n = "default", action: r, className: i }) => /* @__PURE__ */ x("div", {
10003
10325
  className: $("eidotter-empty-state", "flex flex-col gap-2 py-6 text-center", i),
10004
10326
  role: "status",
10005
10327
  children: [
10006
10328
  /* @__PURE__ */ b("p", {
10007
- className: $("font-dos text-dos-text-sm", sf[n]),
10329
+ className: $("font-dos text-dos-text-sm", Cf[n]),
10008
10330
  children: e
10009
10331
  }),
10010
10332
  t && /* @__PURE__ */ b("p", {
@@ -10017,14 +10339,14 @@ var sf = {
10017
10339
  })
10018
10340
  ]
10019
10341
  });
10020
- cf.displayName = "EmptyState";
10342
+ wf.displayName = "EmptyState";
10021
10343
  //#endregion
10022
10344
  //#region src/components/ChecklistRow/components/ChecklistRow.tsx
10023
- var lf = {
10345
+ var Tf = {
10024
10346
  default: "text-dos-text-primary",
10025
10347
  muted: "text-dos-text-muted line-through",
10026
10348
  error: "text-dos-error"
10027
- }, uf = ({ checked: e, onToggle: t, disabled: n, pending: r, ariaLabel: i, labelTone: a = "default", label: o, children: s, note: c, leading: l, trailing: u, className: d }) => /* @__PURE__ */ x("div", {
10349
+ }, Ef = ({ checked: e, onToggle: t, disabled: n, pending: r, ariaLabel: i, labelTone: a = "default", label: o, children: s, note: c, leading: l, trailing: u, className: d }) => /* @__PURE__ */ x("div", {
10028
10350
  className: $("eidotter-checklist-row", "flex items-start gap-3 py-2 border-b border-dos-border-disabled", r && "opacity-50", d),
10029
10351
  children: [
10030
10352
  /* @__PURE__ */ b("button", {
@@ -10045,7 +10367,7 @@ var lf = {
10045
10367
  children: l
10046
10368
  }),
10047
10369
  o !== void 0 && /* @__PURE__ */ b("div", {
10048
- className: $("font-dos text-dos-text-sm", lf[a]),
10370
+ className: $("font-dos text-dos-text-sm", Tf[a]),
10049
10371
  children: o
10050
10372
  }),
10051
10373
  s,
@@ -10061,10 +10383,10 @@ var lf = {
10061
10383
  })
10062
10384
  ]
10063
10385
  });
10064
- uf.displayName = "ChecklistRow";
10386
+ Ef.displayName = "ChecklistRow";
10065
10387
  //#endregion
10066
10388
  //#region src/components/CopyButton/components/CopyButton.tsx
10067
- var df = ({ value: e, label: t = "[cp]", copiedLabel: n = "[OK]", title: r = "Copy to clipboard", copiedTitle: i = "Copied!", className: o }) => {
10389
+ var Df = ({ value: e, label: t = "[cp]", copiedLabel: n = "[OK]", title: r = "Copy to clipboard", copiedTitle: i = "Copied!", className: o }) => {
10068
10390
  let [s, c] = p(!1), l = f(null), u = a(() => {
10069
10391
  c(!0), l.current && clearTimeout(l.current), l.current = setTimeout(() => c(!1), 1500);
10070
10392
  }, []), d = a(() => {
@@ -10094,10 +10416,10 @@ var df = ({ value: e, label: t = "[cp]", copiedLabel: n = "[OK]", title: r = "Co
10094
10416
  children: s ? n : t
10095
10417
  });
10096
10418
  };
10097
- df.displayName = "CopyButton";
10419
+ Df.displayName = "CopyButton";
10098
10420
  //#endregion
10099
10421
  //#region src/components/Select/components/Select.tsx
10100
- var ff = ({ value: e, options: t, onChange: n, id: r, disabled: i, className: a, "aria-label": o }) => /* @__PURE__ */ b("select", {
10422
+ var Of = ({ value: e, options: t, onChange: n, id: r, disabled: i, className: a, "aria-label": o }) => /* @__PURE__ */ b("select", {
10101
10423
  id: r,
10102
10424
  "aria-label": o,
10103
10425
  value: e,
@@ -10110,10 +10432,10 @@ var ff = ({ value: e, options: t, onChange: n, id: r, disabled: i, className: a,
10110
10432
  children: e.label
10111
10433
  }, e.value))
10112
10434
  });
10113
- ff.displayName = "Select";
10435
+ Of.displayName = "Select";
10114
10436
  //#endregion
10115
10437
  //#region src/components/LedgerRow/components/LedgerRow.tsx
10116
- var pf = ({ label: e, note: t, value: n, copyValue: r, trailing: i, pending: a, className: o }) => /* @__PURE__ */ x("div", {
10438
+ var kf = ({ label: e, note: t, value: n, copyValue: r, trailing: i, pending: a, className: o }) => /* @__PURE__ */ x("div", {
10117
10439
  className: $("eidotter-ledger-row", "flex items-center gap-3 py-2 border-b border-dos-border-disabled", a && "opacity-50", o),
10118
10440
  children: [/* @__PURE__ */ x("div", {
10119
10441
  className: "flex-1 min-w-0",
@@ -10131,15 +10453,15 @@ var pf = ({ label: e, note: t, value: n, copyValue: r, trailing: i, pending: a,
10131
10453
  className: "font-dos text-dos-text-sm text-dos-text-accent tabular-nums",
10132
10454
  children: n
10133
10455
  }),
10134
- r !== void 0 && /* @__PURE__ */ b(df, { value: r }),
10456
+ r !== void 0 && /* @__PURE__ */ b(Df, { value: r }),
10135
10457
  i
10136
10458
  ]
10137
10459
  })]
10138
10460
  });
10139
- pf.displayName = "LedgerRow";
10461
+ kf.displayName = "LedgerRow";
10140
10462
  //#endregion
10141
10463
  //#region src/components/LabeledProgress/components/LabeledProgress.tsx
10142
- var mf = ({ label: e, value: t, max: n = 100, valueSuffix: r = "%", showValue: i = !0, className: a, "aria-label": o }) => {
10464
+ var Af = ({ label: e, value: t, max: n = 100, valueSuffix: r = "%", showValue: i = !0, className: a, "aria-label": o }) => {
10143
10465
  let s = n === 0 ? 0 : Math.min(100, Math.max(0, Math.round(t / n * 100)));
10144
10466
  return /* @__PURE__ */ x("div", {
10145
10467
  className: $("eidotter-labeled-progress", "flex items-center gap-3", a),
@@ -10167,11 +10489,11 @@ var mf = ({ label: e, value: t, max: n = 100, valueSuffix: r = "%", showValue: i
10167
10489
  ]
10168
10490
  });
10169
10491
  };
10170
- mf.displayName = "LabeledProgress";
10492
+ Af.displayName = "LabeledProgress";
10171
10493
  //#endregion
10172
10494
  //#region src/components/TextScramble/components/TextScramble.tsx
10173
- var hf = r(({ children: e, speed: t, characters: n, delay: r, className: i, ...a }, o) => {
10174
- let { text: s, isScrambling: c } = Kd(e, {
10495
+ var jf = r(({ children: e, speed: t, characters: n, delay: r, className: i, ...a }, o) => {
10496
+ let { text: s, isScrambling: c } = cf(e, {
10175
10497
  speed: t,
10176
10498
  characters: n,
10177
10499
  delay: r
@@ -10183,16 +10505,16 @@ var hf = r(({ children: e, speed: t, characters: n, delay: r, className: i, ...a
10183
10505
  children: s
10184
10506
  });
10185
10507
  });
10186
- hf.displayName = "TextScramble";
10508
+ jf.displayName = "TextScramble";
10187
10509
  //#endregion
10188
10510
  //#region src/components/Nav/components/Nav.tsx
10189
- var gf = {
10511
+ var Mf = {
10190
10512
  retro: "eidotter-nav--retro",
10191
10513
  modern: "eidotter-nav--modern"
10192
- }, _f = ({ items: e, activeHref: t, variant: n = "retro", linkComponent: r, className: i }) => {
10514
+ }, Nf = ({ items: e, activeHref: t, variant: n = "retro", linkComponent: r, className: i }) => {
10193
10515
  let a = r || "a";
10194
10516
  return /* @__PURE__ */ b("nav", {
10195
- className: $("eidotter-nav eidotter-nav--desktop", gf[n], i),
10517
+ className: $("eidotter-nav eidotter-nav--desktop", Mf[n], i),
10196
10518
  "aria-label": "Main navigation",
10197
10519
  children: /* @__PURE__ */ b("ul", {
10198
10520
  className: "eidotter-nav__desktop-list",
@@ -10207,7 +10529,7 @@ var gf = {
10207
10529
  }, e.href))
10208
10530
  })
10209
10531
  });
10210
- }, vf = ({ items: e, activeHref: t, variant: n = "retro", linkComponent: r, className: i }) => {
10532
+ }, Pf = ({ items: e, activeHref: t, variant: n = "retro", linkComponent: r, className: i }) => {
10211
10533
  let [o, c] = p(!1), l = r || "a", u = f(null), d = f(null), m = f(null), h = f(!1), g = a(() => c((e) => !e), []), _ = a(() => c(!1), []);
10212
10534
  return s(() => {
10213
10535
  if (!o) return;
@@ -10218,7 +10540,7 @@ var gf = {
10218
10540
  }, [o, _]), s(() => {
10219
10541
  o ? d.current?.focus() : h.current && u.current?.focus(), h.current = o;
10220
10542
  }, [o]), /* @__PURE__ */ x("div", {
10221
- className: $("eidotter-nav eidotter-nav--mobile", gf[n], i),
10543
+ className: $("eidotter-nav eidotter-nav--mobile", Mf[n], i),
10222
10544
  children: [
10223
10545
  /* @__PURE__ */ b("button", {
10224
10546
  ref: u,
@@ -10275,14 +10597,14 @@ var gf = {
10275
10597
  })
10276
10598
  ]
10277
10599
  });
10278
- }, yf = (e) => /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b(vf, { ...e }), /* @__PURE__ */ b(_f, { ...e })] }), bf = {
10600
+ }, Ff = (e) => /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b(Pf, { ...e }), /* @__PURE__ */ b(Nf, { ...e })] }), If = {
10279
10601
  user: "eidotter-chat-message--user",
10280
10602
  assistant: "eidotter-chat-message--assistant",
10281
10603
  system: "eidotter-chat-message--system"
10282
- }, xf = ({ role: e, content: t, isStreaming: n = !1, userPrefix: r = ">", assistantPrefix: i = "C:\\>", className: a, ...o }) => {
10604
+ }, Lf = ({ role: e, content: t, isStreaming: n = !1, userPrefix: r = ">", assistantPrefix: i = "C:\\>", className: a, ...o }) => {
10283
10605
  let s = e === "user" ? r : e === "assistant" ? i : "";
10284
10606
  return /* @__PURE__ */ x("div", {
10285
- className: $("flex gap-2 font-dos text-dos-text-md leading-[1.4] py-1 whitespace-pre-wrap break-words", bf[e], n && "eidotter-chat-message--streaming", a),
10607
+ className: $("flex gap-2 font-dos text-dos-text-md leading-[1.4] py-1 whitespace-pre-wrap break-words", If[e], n && "eidotter-chat-message--streaming", a),
10286
10608
  ...o,
10287
10609
  children: [
10288
10610
  s && /* @__PURE__ */ b("span", {
@@ -10301,7 +10623,7 @@ var gf = {
10301
10623
  })
10302
10624
  ]
10303
10625
  });
10304
- }, Sf = ({ messages: e, isStreaming: t = !1, userPrefix: n, assistantPrefix: r, className: i, ...a }) => {
10626
+ }, Rf = ({ messages: e, isStreaming: t = !1, userPrefix: n, assistantPrefix: r, className: i, ...a }) => {
10305
10627
  let o = f(null);
10306
10628
  s(() => {
10307
10629
  o.current?.scrollIntoView?.({ behavior: "smooth" });
@@ -10330,7 +10652,7 @@ var gf = {
10330
10652
  className: "flex flex-col",
10331
10653
  children: [e.map((i, a) => {
10332
10654
  let o = t && i.role === "assistant" && a === e.length - 1;
10333
- return /* @__PURE__ */ b(xf, {
10655
+ return /* @__PURE__ */ b(Lf, {
10334
10656
  role: i.role,
10335
10657
  content: i.content,
10336
10658
  isStreaming: o,
@@ -10340,7 +10662,7 @@ var gf = {
10340
10662
  }), /* @__PURE__ */ b("div", { ref: o })]
10341
10663
  })
10342
10664
  });
10343
- }, Cf = ({ onSend: e, prompt: t = ">", placeholder: n, disabled: r = !1, className: i, ...a }) => {
10665
+ }, zf = ({ onSend: e, prompt: t = ">", placeholder: n, disabled: r = !1, className: i, ...a }) => {
10344
10666
  let [o, s] = p(""), c = f(null);
10345
10667
  l(() => {
10346
10668
  let e = c.current;
@@ -10382,30 +10704,30 @@ var gf = {
10382
10704
  })]
10383
10705
  })]
10384
10706
  });
10385
- }, wf = ({ messages: e, onSend: t, isStreaming: n = !1, inputPrompt: r, userPrefix: i, assistantPrefix: a, placeholder: o, disabled: s = !1, className: c, ...l }) => /* @__PURE__ */ x("div", {
10707
+ }, Bf = ({ messages: e, onSend: t, isStreaming: n = !1, inputPrompt: r, userPrefix: i, assistantPrefix: a, placeholder: o, disabled: s = !1, className: c, ...l }) => /* @__PURE__ */ x("div", {
10386
10708
  className: $("flex flex-col h-full min-h-0", c),
10387
10709
  ...l,
10388
- children: [/* @__PURE__ */ b(Sf, {
10710
+ children: [/* @__PURE__ */ b(Rf, {
10389
10711
  className: "flex-1 min-h-0",
10390
10712
  messages: e,
10391
10713
  isStreaming: n,
10392
10714
  userPrefix: i,
10393
10715
  assistantPrefix: a
10394
- }), /* @__PURE__ */ b(Cf, {
10716
+ }), /* @__PURE__ */ b(zf, {
10395
10717
  className: "shrink-0",
10396
10718
  onSend: t,
10397
10719
  prompt: r,
10398
10720
  placeholder: o,
10399
10721
  disabled: s
10400
10722
  })]
10401
- }), Tf = [{
10723
+ }), Vf = [{
10402
10724
  label: "Impressum",
10403
10725
  href: "/impressum"
10404
10726
  }, {
10405
10727
  label: "Datenschutz",
10406
10728
  href: "/datenschutz"
10407
- }], Ef = ({ copyright: t, links: n, linkComponent: r, children: i, className: a, ...o }) => {
10408
- let s = n ?? Tf, c = r ?? "a", l = "eidotter-footer__link text-dos-text-brand no-underline";
10729
+ }], Hf = ({ copyright: t, links: n, linkComponent: r, children: i, className: a, ...o }) => {
10730
+ let s = n ?? Vf, c = r ?? "a", l = "eidotter-footer__link text-dos-text-brand no-underline";
10409
10731
  return /* @__PURE__ */ x("footer", {
10410
10732
  className: $("font-dos text-sm py-4 px-2 text-center", "eidotter-footer", a),
10411
10733
  ...o,
@@ -10443,14 +10765,14 @@ var gf = {
10443
10765
  })
10444
10766
  ]
10445
10767
  });
10446
- }, Df = {
10768
+ }, Uf = {
10447
10769
  retro: "eidotter-header--retro",
10448
10770
  modern: "eidotter-header--modern"
10449
- }, Of = r(({ brandName: e, brandHref: t = "/", items: n, activeHref: r, variant: i = "retro", sticky: a = !0, linkComponent: o, children: s, className: c, ...l }, u) => {
10771
+ }, Wf = r(({ brandName: e, brandHref: t = "/", items: n, activeHref: r, variant: i = "retro", sticky: a = !0, linkComponent: o, children: s, className: c, ...l }, u) => {
10450
10772
  let d = o ?? "a";
10451
10773
  return /* @__PURE__ */ x("header", {
10452
10774
  ref: u,
10453
- className: $("flex items-center justify-between px-4 py-3 font-dos", "eidotter-header", Df[i], a && "sticky top-0 z-50 bg-dos-bg-primary", c),
10775
+ className: $("flex items-center justify-between px-4 py-3 font-dos", "eidotter-header", Uf[i], a && "sticky top-0 z-50 bg-dos-bg-primary", c),
10454
10776
  ...l,
10455
10777
  children: [
10456
10778
  /* @__PURE__ */ b(d, {
@@ -10458,13 +10780,13 @@ var gf = {
10458
10780
  className: $("no-underline text-base font-bold tracking-wide", "eidotter-header__branding"),
10459
10781
  children: s || e
10460
10782
  }),
10461
- /* @__PURE__ */ b(_f, {
10783
+ /* @__PURE__ */ b(Nf, {
10462
10784
  items: n,
10463
10785
  activeHref: r,
10464
10786
  variant: i,
10465
10787
  linkComponent: o
10466
10788
  }),
10467
- /* @__PURE__ */ b(vf, {
10789
+ /* @__PURE__ */ b(Pf, {
10468
10790
  items: n,
10469
10791
  activeHref: r,
10470
10792
  variant: i,
@@ -10473,16 +10795,16 @@ var gf = {
10473
10795
  ]
10474
10796
  });
10475
10797
  });
10476
- Of.displayName = "Header";
10798
+ Wf.displayName = "Header";
10477
10799
  //#endregion
10478
10800
  //#region src/components/Notification/components/Notification.tsx
10479
- var kf = {
10801
+ var Gf = {
10480
10802
  primary: "Info",
10481
10803
  gray: "Info",
10482
10804
  success: "Done",
10483
10805
  warning: "Warning",
10484
10806
  error: "Error"
10485
- }, Af = ({ type: e = "primary", title: t, children: n, actions: r, onClose: i, avatar: a, image: o, progress: c, progressLabel: l, duration: u, showIcon: d = !0, className: f }) => {
10807
+ }, Kf = ({ type: e = "primary", title: t, children: n, actions: r, onClose: i, avatar: a, image: o, progress: c, progressLabel: l, duration: u, showIcon: d = !0, className: f }) => {
10486
10808
  let { isClosing: p, triggerClose: m, handleAnimationEnd: h } = $l("notification-exit", i);
10487
10809
  s(() => {
10488
10810
  if (u == null || !i) return;
@@ -10512,7 +10834,7 @@ var kf = {
10512
10834
  g && /* @__PURE__ */ b("div", {
10513
10835
  className: "eidotter-notification__icon",
10514
10836
  children: /* @__PURE__ */ b(Zl, {
10515
- name: kf[e] || "Info",
10837
+ name: Gf[e] || "Info",
10516
10838
  size: "S",
10517
10839
  "aria-label": `${e} notification`
10518
10840
  })
@@ -10568,7 +10890,7 @@ var kf = {
10568
10890
  };
10569
10891
  //#endregion
10570
10892
  //#region src/components/InlineLink/components/InlineLink.tsx
10571
- function jf(e) {
10893
+ function qf(e) {
10572
10894
  let t = e.trim();
10573
10895
  if (t === "" || /^[#?/]/.test(t)) return t;
10574
10896
  let n = /^([a-z][a-z0-9+\-.]*):/i.exec(t);
@@ -10583,14 +10905,14 @@ function jf(e) {
10583
10905
  "sms"
10584
10906
  ].includes(r) ? t : "#";
10585
10907
  }
10586
- function Mf(e, t) {
10908
+ function Jf(e, t) {
10587
10909
  if (t.length === 0) return e;
10588
10910
  let n = new Set((e ?? "").split(/\s+/).map((e) => e.trim().toLowerCase()).filter(Boolean));
10589
10911
  for (let e of t) n.add(e.toLowerCase());
10590
10912
  return Array.from(n).join(" ");
10591
10913
  }
10592
- var Nf = r(({ children: e, href: t, showGlyph: n = !0, external: r = !1, className: i, target: a, rel: o, ...s }, c) => {
10593
- let l = jf(t), u = a ?? (r ? "_blank" : void 0), d = u === "_blank", f = d ? Mf(o, ["noopener", "noreferrer"]) : o, p = r && d ? "↗" : "▸";
10914
+ var Yf = r(({ children: e, href: t, showGlyph: n = !0, external: r = !1, className: i, target: a, rel: o, ...s }, c) => {
10915
+ let l = qf(t), u = a ?? (r ? "_blank" : void 0), d = u === "_blank", f = d ? Jf(o, ["noopener", "noreferrer"]) : o, p = r && d ? "↗" : "▸";
10594
10916
  return /* @__PURE__ */ x("a", {
10595
10917
  ref: c,
10596
10918
  href: l,
@@ -10608,10 +10930,10 @@ var Nf = r(({ children: e, href: t, showGlyph: n = !0, external: r = !1, classNa
10608
10930
  })]
10609
10931
  });
10610
10932
  });
10611
- Nf.displayName = "InlineLink";
10933
+ Yf.displayName = "InlineLink";
10612
10934
  //#endregion
10613
10935
  //#region src/components/DosFigure/components/DosFigure.tsx
10614
- var Pf = r(({ title: e, resolution: t, subject: n, caption: r, pins: i = [], animated: a = !0, "aria-label": o, className: s }, l) => {
10936
+ var Xf = r(({ title: e, resolution: t, subject: n, caption: r, pins: i = [], animated: a = !0, "aria-label": o, className: s }, l) => {
10615
10937
  let u = c(), d = r ? u : void 0;
10616
10938
  return /* @__PURE__ */ x("figure", {
10617
10939
  ref: l,
@@ -10672,11 +10994,11 @@ var Pf = r(({ title: e, resolution: t, subject: n, caption: r, pins: i = [], ani
10672
10994
  ]
10673
10995
  });
10674
10996
  });
10675
- Pf.displayName = "DosFigure";
10997
+ Xf.displayName = "DosFigure";
10676
10998
  //#endregion
10677
10999
  //#region src/components/CmdPalette/components/CmdPalette.tsx
10678
- var Ff = /* @__PURE__ */ b(y, { children: "↑/↓ NAVIGATE · ↵ OPEN · ESC CLOSE" });
10679
- function If(e) {
11000
+ var Zf = /* @__PURE__ */ b(y, { children: "↑/↓ NAVIGATE · ↵ OPEN · ESC CLOSE" });
11001
+ function Qf(e) {
10680
11002
  let t = e.toLowerCase().split("+").map((e) => e.trim()), n = t[t.length - 1], r = t.includes("mod"), i = t.includes("shift"), a = t.includes("alt");
10681
11003
  return (e) => {
10682
11004
  if (e.key.toLowerCase() !== n) return !1;
@@ -10684,15 +11006,15 @@ function If(e) {
10684
11006
  return !(!(r ? t ? e.metaKey : e.ctrlKey : !(e.metaKey || e.ctrlKey)) || i !== e.shiftKey || a !== e.altKey);
10685
11007
  };
10686
11008
  }
10687
- function Lf(e, t) {
11009
+ function $f(e, t) {
10688
11010
  if (!t) return 0;
10689
11011
  let n = t.toLowerCase(), r = e.label.toLowerCase(), i = (e.keywords || []).map((e) => e.toLowerCase());
10690
11012
  return r.startsWith(n) ? 100 : i.some((e) => e.startsWith(n)) ? 80 : r.includes(n) ? 50 : i.some((e) => e.includes(n)) ? 30 : (e.type || "").toLowerCase().includes(n) ? 10 : -1;
10691
11013
  }
10692
- var Rf = r(({ open: e, onOpenChange: t, items: n, placeholder: r = "SEARCH · TYPE · ▸", hotkey: i = "mod+k", emptyMessage: o = "NO MATCHES", footerHint: l = Ff, renderItem: d, maxResults: m = 20, className: h, "aria-label": g = "Command palette" }, _) => {
11014
+ var ep = r(({ open: e, onOpenChange: t, items: n, placeholder: r = "SEARCH · TYPE · ▸", hotkey: i = "mod+k", emptyMessage: o = "NO MATCHES", footerHint: l = Zf, renderItem: d, maxResults: m = 20, className: h, "aria-label": g = "Command palette" }, _) => {
10693
11015
  let v = c(), S = `${v}-listbox`, [C, w] = p(""), [T, E] = p(0), D = f(null), O = f(null), k = f(!1), A = u(() => C.trim() ? n.map((e) => ({
10694
11016
  item: e,
10695
- score: Lf(e, C.trim())
11017
+ score: $f(e, C.trim())
10696
11018
  })).filter((e) => e.score >= 0).sort((e, t) => t.score - e.score).slice(0, m).map((e) => e.item) : n.slice(0, m), [
10697
11019
  n,
10698
11020
  C,
@@ -10717,7 +11039,7 @@ var Rf = r(({ open: e, onOpenChange: t, items: n, placeholder: r = "SEARCH · TY
10717
11039
  M.current = t;
10718
11040
  }, [t]), s(() => {
10719
11041
  if (i === !1) return;
10720
- let e = If(i), t = (t) => {
11042
+ let e = Qf(i), t = (t) => {
10721
11043
  e(t) && (t.preventDefault(), M.current(!j.current));
10722
11044
  };
10723
11045
  return window.addEventListener("keydown", t), () => window.removeEventListener("keydown", t);
@@ -10826,10 +11148,10 @@ var Rf = r(({ open: e, onOpenChange: t, items: n, placeholder: r = "SEARCH · TY
10826
11148
  })
10827
11149
  });
10828
11150
  });
10829
- Rf.displayName = "CmdPalette";
11151
+ ep.displayName = "CmdPalette";
10830
11152
  //#endregion
10831
11153
  //#region src/components/Brand/components/Logo.tsx
10832
- var zf = r(({ size: e = 32, glow: t = !0, title: n = "eiDotter", className: r, ...i }, a) => {
11154
+ var tp = r(({ size: e = 32, glow: t = !0, title: n = "eiDotter", className: r, ...i }, a) => {
10833
11155
  let o = c(), s = `eidotter-logo-halo-${o}`, l = `eidotter-logo-core-${o}`;
10834
11156
  return /* @__PURE__ */ x("svg", {
10835
11157
  ref: a,
@@ -11053,10 +11375,10 @@ var zf = r(({ size: e = 32, glow: t = !0, title: n = "eiDotter", className: r, .
11053
11375
  ]
11054
11376
  });
11055
11377
  });
11056
- zf.displayName = "Logo";
11378
+ tp.displayName = "Logo";
11057
11379
  //#endregion
11058
11380
  //#region src/components/Brand/components/Wordmark.tsx
11059
- var Bf = r(({ glow: e = !0, className: t, ...n }, r) => /* @__PURE__ */ x("span", {
11381
+ var np = r(({ glow: e = !0, className: t, ...n }, r) => /* @__PURE__ */ x("span", {
11060
11382
  ref: r,
11061
11383
  className: $("eidotter-wordmark font-dos", e && "eidotter-wordmark--glow", t),
11062
11384
  "aria-label": "eiDotter",
@@ -11071,28 +11393,28 @@ var Bf = r(({ glow: e = !0, className: t, ...n }, r) => /* @__PURE__ */ x("span"
11071
11393
  children: "Dotter"
11072
11394
  })]
11073
11395
  }));
11074
- Bf.displayName = "Wordmark";
11396
+ np.displayName = "Wordmark";
11075
11397
  //#endregion
11076
11398
  //#region src/components/Brand/components/BrandLockup.tsx
11077
- var Vf = r(({ logoSize: e = 32, iconOnly: t = !1, wordmarkOnly: n = !1, glow: r = !0, className: i, ...a }, o) => /* @__PURE__ */ x("div", {
11399
+ var rp = r(({ logoSize: e = 32, iconOnly: t = !1, wordmarkOnly: n = !1, glow: r = !0, className: i, ...a }, o) => /* @__PURE__ */ x("div", {
11078
11400
  ref: o,
11079
11401
  className: $("eidotter-brand-lockup inline-flex items-center gap-3", i),
11080
11402
  role: "img",
11081
11403
  "aria-label": "eiDotter",
11082
11404
  ...a,
11083
- children: [!n && /* @__PURE__ */ b(zf, {
11405
+ children: [!n && /* @__PURE__ */ b(tp, {
11084
11406
  size: e,
11085
11407
  glow: r,
11086
11408
  title: ""
11087
- }), !t && /* @__PURE__ */ b(Bf, {
11409
+ }), !t && /* @__PURE__ */ b(np, {
11088
11410
  glow: r,
11089
11411
  "aria-hidden": "true"
11090
11412
  })]
11091
11413
  }));
11092
- Vf.displayName = "BrandLockup";
11414
+ rp.displayName = "BrandLockup";
11093
11415
  //#endregion
11094
11416
  //#region src/components/AIText/components/AIText.tsx
11095
- var Hf = ({ children: e, className: t, title: n = "AI-assisted text — being rewritten" }) => /* @__PURE__ */ x("span", {
11417
+ var ip = ({ children: e, className: t, title: n = "AI-assisted text — being rewritten" }) => /* @__PURE__ */ x("span", {
11096
11418
  "data-provenance": "ai-draft",
11097
11419
  className: $("eidotter-ai-text", t),
11098
11420
  title: n,
@@ -11101,43 +11423,43 @@ var Hf = ({ children: e, className: t, title: n = "AI-assisted text — being re
11101
11423
  children: "AI-assisted: "
11102
11424
  }), e]
11103
11425
  });
11104
- Hf.displayName = "AIText";
11426
+ ip.displayName = "AIText";
11105
11427
  //#endregion
11106
11428
  //#region src/components/Skeleton/components/Skeleton.tsx
11107
- var Uf = "░░░░▒░░░░░░░▒░░░▒▒░░░░░░▒░░░░░░░▒░░░░▒░░", Wf = "▒▒▓▒▒▒▒▓▒▒▒▒▒▓▒▒▒▒▒▒▓▒▒▒▒▓▒▒▒▒▒▓▒▒▒▒▒▓▒", Gf = 6, Kf = {
11429
+ var ap = "░░░░▒░░░░░░░▒░░░▒▒░░░░░░▒░░░░░░░▒░░░░▒░░", op = "▒▒▓▒▒▒▒▓▒▒▒▒▒▓▒▒▒▒▒▒▓▒▒▒▒▓▒▒▒▒▒▓▒▒▒▒▒▓▒", sp = 6, cp = {
11108
11430
  text: 3,
11109
11431
  card: 3,
11110
11432
  figure: 4,
11111
11433
  timeline: 2
11112
- }, qf = ({ dense: e = !1, width: t = "full" }) => /* @__PURE__ */ b("span", {
11434
+ }, lp = ({ dense: e = !1, width: t = "full" }) => /* @__PURE__ */ b("span", {
11113
11435
  className: $("eidotter-skeleton__line", t === "short" && "eidotter-skeleton__line--short", t === "meta" && "eidotter-skeleton__line--meta"),
11114
- children: (e ? Wf : Uf).repeat(Gf)
11436
+ children: (e ? op : ap).repeat(sp)
11115
11437
  });
11116
- function Jf(e, t = !1, n = !0) {
11117
- return Array.from({ length: e }, (r, i) => /* @__PURE__ */ b(qf, {
11438
+ function up(e, t = !1, n = !0) {
11439
+ return Array.from({ length: e }, (r, i) => /* @__PURE__ */ b(lp, {
11118
11440
  dense: t,
11119
11441
  width: n && i === e - 1 && e > 1 ? "short" : "full"
11120
11442
  }, i));
11121
11443
  }
11122
- var Yf = ({ variant: e = "text", lines: t, animated: n = !0, label: r = "Loading", className: i }) => {
11123
- let a = Math.max(1, t ?? Kf[e]), o;
11444
+ var dp = ({ variant: e = "text", lines: t, animated: n = !0, label: r = "Loading", className: i }) => {
11445
+ let a = Math.max(1, t ?? cp[e]), o;
11124
11446
  switch (e) {
11125
11447
  case "card":
11126
- o = /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b(qf, {
11448
+ o = /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b(lp, {
11127
11449
  dense: !0,
11128
11450
  width: "meta"
11129
- }), Jf(a)] });
11451
+ }), up(a)] });
11130
11452
  break;
11131
11453
  case "figure":
11132
- o = Jf(a, !0, !1);
11454
+ o = up(a, !0, !1);
11133
11455
  break;
11134
11456
  case "timeline":
11135
11457
  o = /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b("span", { className: "eidotter-skeleton__marker border-2 border-dos-border-default" }), /* @__PURE__ */ x("span", {
11136
11458
  className: "eidotter-skeleton__entry",
11137
- children: [/* @__PURE__ */ b(qf, { width: "meta" }), Jf(a)]
11459
+ children: [/* @__PURE__ */ b(lp, { width: "meta" }), up(a)]
11138
11460
  })] });
11139
11461
  break;
11140
- default: o = Jf(a);
11462
+ default: o = up(a);
11141
11463
  }
11142
11464
  return /* @__PURE__ */ b("div", {
11143
11465
  role: "status",
@@ -11150,10 +11472,10 @@ var Yf = ({ variant: e = "text", lines: t, animated: n = !0, label: r = "Loading
11150
11472
  })
11151
11473
  });
11152
11474
  };
11153
- Yf.displayName = "Skeleton";
11475
+ dp.displayName = "Skeleton";
11154
11476
  //#endregion
11155
11477
  //#region src/components/LegalPage/components/LegalPage.tsx
11156
- var Xf = ({ title: e, date: t, intro: n, home: r, children: i, className: a, ...o }) => /* @__PURE__ */ x("div", {
11478
+ var fp = ({ title: e, date: t, intro: n, home: r, children: i, className: a, ...o }) => /* @__PURE__ */ x("div", {
11157
11479
  className: $("eidotter-legal-page", a),
11158
11480
  ...o,
11159
11481
  children: [r && /* @__PURE__ */ b("div", {
@@ -11176,13 +11498,13 @@ var Xf = ({ title: e, date: t, intro: n, home: r, children: i, className: a, ...
11176
11498
  className: "eidotter-legal-page__body",
11177
11499
  children: i
11178
11500
  })] })]
11179
- }), Zf = /* @__PURE__ */ x(y, { children: [
11501
+ }), pp = /* @__PURE__ */ x(y, { children: [
11180
11502
  "Haus-Endt-Str. 149A",
11181
11503
  /* @__PURE__ */ b("br", {}),
11182
11504
  "40593 Düsseldorf",
11183
11505
  /* @__PURE__ */ b("br", {}),
11184
11506
  "Deutschland"
11185
- ] }), Qf = "Dominic Kennedy", $f = ({ email: e, address: t = Zf, name: n = Qf }) => /* @__PURE__ */ x("address", { children: [
11507
+ ] }), mp = "Dominic Kennedy", hp = ({ email: e, address: t = pp, name: n = mp }) => /* @__PURE__ */ x("address", { children: [
11186
11508
  n,
11187
11509
  /* @__PURE__ */ b("br", {}),
11188
11510
  t,
@@ -11194,16 +11516,16 @@ var Xf = ({ title: e, date: t, intro: n, home: r, children: i, className: a, ...
11194
11516
  children: e
11195
11517
  })
11196
11518
  ] })
11197
- ] }), ep = (e) => /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b("h2", { children: "Angaben gemäß § 5 DDG" }), /* @__PURE__ */ b($f, { ...e })] }), tp = ({ email: e }) => /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b("h2", { children: "Kontakt" }), /* @__PURE__ */ x("p", { children: ["E-Mail: ", /* @__PURE__ */ b("a", {
11519
+ ] }), gp = (e) => /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b("h2", { children: "Angaben gemäß § 5 DDG" }), /* @__PURE__ */ b(hp, { ...e })] }), _p = ({ email: e }) => /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b("h2", { children: "Kontakt" }), /* @__PURE__ */ x("p", { children: ["E-Mail: ", /* @__PURE__ */ b("a", {
11198
11520
  href: `mailto:${e}`,
11199
11521
  children: e
11200
- })] })] }), np = ({ name: e = Qf }) => /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b("h2", { children: "Inhaltlich verantwortlich (§ 18 Abs. 2 MStV)" }), /* @__PURE__ */ x("address", { children: [
11522
+ })] })] }), vp = ({ name: e = mp }) => /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b("h2", { children: "Inhaltlich verantwortlich (§ 18 Abs. 2 MStV)" }), /* @__PURE__ */ x("address", { children: [
11201
11523
  e,
11202
11524
  /* @__PURE__ */ b("br", {}),
11203
11525
  "Haus-Endt-Str. 149A",
11204
11526
  /* @__PURE__ */ b("br", {}),
11205
11527
  "40593 Düsseldorf"
11206
- ] })] }), rp = () => /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b("h2", { children: "Haftung für Inhalte" }), /* @__PURE__ */ b("p", { children: "Ich erstelle die Inhalte dieser Seiten mit größter Sorgfalt, übernehme jedoch keine Gewähr für Richtigkeit, Vollständigkeit oder Aktualität. Als Diensteanbieter bin ich gemäß § 7 Abs. 1 DDG für eigene Inhalte verantwortlich. Eine Pflicht zur Überwachung fremder Informationen besteht gemäß §§ 8–10 DDG nicht." })] }), ip = () => /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b("h2", { children: "Haftung für Links" }), /* @__PURE__ */ b("p", { children: "Diese Website verlinkt auf externe Seiten Dritter, auf deren Inhalte ich keinen Einfluss habe. Für verlinkte Inhalte haftet der jeweilige Anbieter. Eine dauerhafte Kontrolle ist ohne Anhaltspunkte für Rechtsverletzungen nicht zumutbar. Bei Bekanntwerden von Verstößen entferne ich solche Links umgehend." })] }), ap = ({ email: e, name: t = Qf }) => /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b("h2", { children: "Verantwortlicher" }), /* @__PURE__ */ x("address", { children: [
11528
+ ] })] }), yp = () => /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b("h2", { children: "Haftung für Inhalte" }), /* @__PURE__ */ b("p", { children: "Ich erstelle die Inhalte dieser Seiten mit größter Sorgfalt, übernehme jedoch keine Gewähr für Richtigkeit, Vollständigkeit oder Aktualität. Als Diensteanbieter bin ich gemäß § 7 Abs. 1 DDG für eigene Inhalte verantwortlich. Eine Pflicht zur Überwachung fremder Informationen besteht gemäß §§ 8–10 DDG nicht." })] }), bp = () => /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b("h2", { children: "Haftung für Links" }), /* @__PURE__ */ b("p", { children: "Diese Website verlinkt auf externe Seiten Dritter, auf deren Inhalte ich keinen Einfluss habe. Für verlinkte Inhalte haftet der jeweilige Anbieter. Eine dauerhafte Kontrolle ist ohne Anhaltspunkte für Rechtsverletzungen nicht zumutbar. Bei Bekanntwerden von Verstößen entferne ich solche Links umgehend." })] }), xp = ({ email: e, name: t = mp }) => /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b("h2", { children: "Verantwortlicher" }), /* @__PURE__ */ x("address", { children: [
11207
11529
  t,
11208
11530
  /* @__PURE__ */ b("br", {}),
11209
11531
  "Haus-Endt-Str. 149A",
@@ -11215,14 +11537,14 @@ var Xf = ({ title: e, date: t, intro: n, home: r, children: i, className: a, ...
11215
11537
  href: `mailto:${e}`,
11216
11538
  children: e
11217
11539
  })
11218
- ] })] }), op = () => /* @__PURE__ */ x(y, { children: [
11540
+ ] })] }), Sp = () => /* @__PURE__ */ x(y, { children: [
11219
11541
  /* @__PURE__ */ b("h2", { children: "Hosting" }),
11220
11542
  /* @__PURE__ */ b("p", { children: "Cloudflare Pages stellt diese Website bereit. Beim Seitenaufruf erhebt Cloudflare automatisch technische Zugriffsdaten (darunter Ihre IP-Adresse), um die Seite auszuliefern." }),
11221
11543
  /* @__PURE__ */ b("p", {
11222
11544
  className: "eidotter-legal-page__basis",
11223
11545
  children: "Anbieter: Cloudflare, Inc., 101 Townsend St, San Francisco, CA 94107, USA. Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse)."
11224
11546
  })
11225
- ] }), sp = ({ proxyHost: e = "e.dmnc.tech" }) => /* @__PURE__ */ x(y, { children: [
11547
+ ] }), Cp = ({ proxyHost: e = "e.dmnc.tech" }) => /* @__PURE__ */ x(y, { children: [
11226
11548
  /* @__PURE__ */ b("h2", { children: "Webanalyse — PostHog" }),
11227
11549
  /* @__PURE__ */ x("p", { children: [
11228
11550
  "Diese Website nutzt PostHog zur Analyse des Nutzungsverhaltens. PostHog läuft auf EU-Servern (eu.posthog.com). Die Datenübertragung erfolgt über einen Reverse-Proxy auf der Domain ",
@@ -11239,7 +11561,7 @@ var Xf = ({ title: e, date: t, intro: n, home: r, children: i, className: a, ...
11239
11561
  className: "eidotter-legal-page__basis",
11240
11562
  children: "Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse)."
11241
11563
  })
11242
- ] }), cp = () => /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b("h2", { children: "Schriftarten" }), /* @__PURE__ */ b("p", { children: "Die Schriftart „Perfect DOS VGA 437“ wird lokal von diesem Server ausgeliefert. Es findet keine Verbindung zu externen Schriftarten-Diensten statt." })] }), lp = () => /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b("h2", { children: "Verschlüsselung" }), /* @__PURE__ */ b("p", { children: "Diese Website nutzt SSL-/TLS-Verschlüsselung. Eine verschlüsselte Verbindung erkennen Sie am „https://“ in der Adresszeile Ihres Browsers." })] }), up = ({ email: e, supervisoryAuthority: t = "die Landesbeauftragte für Datenschutz und Informationsfreiheit Nordrhein-Westfalen" }) => /* @__PURE__ */ x(y, { children: [
11564
+ ] }), wp = () => /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b("h2", { children: "Schriftarten" }), /* @__PURE__ */ b("p", { children: "Die Schriftart „Perfect DOS VGA 437“ wird lokal von diesem Server ausgeliefert. Es findet keine Verbindung zu externen Schriftarten-Diensten statt." })] }), Tp = () => /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b("h2", { children: "Verschlüsselung" }), /* @__PURE__ */ b("p", { children: "Diese Website nutzt SSL-/TLS-Verschlüsselung. Eine verschlüsselte Verbindung erkennen Sie am „https://“ in der Adresszeile Ihres Browsers." })] }), Ep = ({ email: e, supervisoryAuthority: t = "die Landesbeauftragte für Datenschutz und Informationsfreiheit Nordrhein-Westfalen" }) => /* @__PURE__ */ x(y, { children: [
11243
11565
  /* @__PURE__ */ b("h2", { children: "Ihre Rechte" }),
11244
11566
  /* @__PURE__ */ b("p", { children: "Die DSGVO gewährt Ihnen folgende Rechte:" }),
11245
11567
  /* @__PURE__ */ x("ul", { children: [
@@ -11264,7 +11586,7 @@ var Xf = ({ title: e, date: t, intro: n, home: r, children: i, className: a, ...
11264
11586
  t,
11265
11587
  "."
11266
11588
  ] })
11267
- ] }), dp = {
11589
+ ] }), Dp = {
11268
11590
  eidotter: { displayName: "eiDotter" },
11269
11591
  spacewar: { displayName: "Spacewar!" },
11270
11592
  rizomorf: { displayName: "rizomorf" },
@@ -11277,8 +11599,12 @@ var Xf = ({ title: e, date: t, intro: n, home: r, children: i, className: a, ...
11277
11599
  dmnctech: {
11278
11600
  displayName: "dmnc.tech",
11279
11601
  url: "https://dmnc.tech"
11602
+ },
11603
+ tracker: {
11604
+ displayName: "Tracker",
11605
+ url: "https://tracker.dmnc.tech"
11280
11606
  }
11281
- }, fp = {
11607
+ }, Op = {
11282
11608
  Alert: {
11283
11609
  origin: "eidotter",
11284
11610
  consumers: ["rizomorf", "steuerdash"],
@@ -11350,11 +11676,70 @@ var Xf = ({ title: e, date: t, intro: n, home: r, children: i, className: a, ...
11350
11676
  },
11351
11677
  Accordion: {
11352
11678
  origin: "eidotter",
11353
- consumers: ["rizomorf"]
11679
+ consumers: ["rizomorf"],
11680
+ since: "0.2.0",
11681
+ originNote: "Collapsible section with CSS grid expand/collapse — always-in-DOM, transitions grid-template-rows",
11682
+ platforms: {
11683
+ react: {
11684
+ path: "src/components/Accordion",
11685
+ status: "canonical"
11686
+ },
11687
+ swiftui: { status: "planned" }
11688
+ },
11689
+ changelog: [
11690
+ {
11691
+ version: "0.30.0",
11692
+ type: "changed",
11693
+ description: "A11y keyboard focus fixes for accordion trigger"
11694
+ },
11695
+ {
11696
+ version: "0.19.0",
11697
+ type: "changed",
11698
+ description: "Remove 500px expand cap — animate grid-template-rows to natural height"
11699
+ },
11700
+ {
11701
+ version: "0.16.0",
11702
+ type: "changed",
11703
+ description: "Migrate to Tailwind-first (Wave 3 — Accordion, Footer, Tabs, FilterBar)"
11704
+ },
11705
+ {
11706
+ version: "0.9.0",
11707
+ type: "changed",
11708
+ description: "Replace text-primary with cga-amber for theme consistency"
11709
+ },
11710
+ {
11711
+ version: "0.8.0",
11712
+ type: "changed",
11713
+ description: "Design-craft animation polish with phosphor enter effects"
11714
+ },
11715
+ {
11716
+ version: "0.2.0",
11717
+ type: "added",
11718
+ description: "Initial Accordion (Section) — collapsible section, inert attribute, reduced-motion safe"
11719
+ }
11720
+ ]
11354
11721
  },
11355
11722
  AccordionFill: {
11356
11723
  origin: "eidotter",
11357
- consumers: ["rizomorf"]
11724
+ consumers: ["rizomorf"],
11725
+ since: "0.4.0",
11726
+ originNote: "Convenience wrapper around Section — renders a list of sections from a data array",
11727
+ platforms: {
11728
+ react: {
11729
+ path: "src/components/Accordion",
11730
+ status: "canonical"
11731
+ },
11732
+ swiftui: { status: "planned" }
11733
+ },
11734
+ changelog: [{
11735
+ version: "0.16.0",
11736
+ type: "changed",
11737
+ description: "Tailwind-first pass alongside Accordion migration"
11738
+ }, {
11739
+ version: "0.4.0",
11740
+ type: "added",
11741
+ description: "Initial AccordionFill — array-driven Section list"
11742
+ }]
11358
11743
  },
11359
11744
  Badge: {
11360
11745
  origin: "eidotter",
@@ -11431,7 +11816,33 @@ var Xf = ({ title: e, date: t, intro: n, home: r, children: i, className: a, ...
11431
11816
  },
11432
11817
  Breadcrumb: {
11433
11818
  origin: "rizomorf",
11434
- consumers: ["rizomorf"]
11819
+ consumers: ["rizomorf"],
11820
+ since: "0.3.0",
11821
+ originNote: "Trail navigation with configurable separator and optional back-arrow",
11822
+ platforms: {
11823
+ react: {
11824
+ path: "src/components/Breadcrumb",
11825
+ status: "canonical"
11826
+ },
11827
+ swiftui: { status: "planned" }
11828
+ },
11829
+ changelog: [
11830
+ {
11831
+ version: "0.16.0",
11832
+ type: "changed",
11833
+ description: "Migrate to Tailwind-first (Wave 2 — Separator, Stat, Breadcrumb, Progress)"
11834
+ },
11835
+ {
11836
+ version: "0.9.0",
11837
+ type: "changed",
11838
+ description: "Fix trail links invisible on dark backgrounds"
11839
+ },
11840
+ {
11841
+ version: "0.3.0",
11842
+ type: "added",
11843
+ description: "Initial Breadcrumb — trail array, currentLabel, separator, showBackArrow"
11844
+ }
11845
+ ]
11435
11846
  },
11436
11847
  Button: {
11437
11848
  origin: "eidotter",
@@ -11614,109 +12025,589 @@ var Xf = ({ title: e, date: t, intro: n, home: r, children: i, className: a, ...
11614
12025
  },
11615
12026
  Checkbox: {
11616
12027
  origin: "eidotter",
11617
- consumers: ["steuerdash"]
11618
- },
11619
- CommandPrompt: {
11620
- origin: "eidotter",
11621
- consumers: ["rizomorf"]
11622
- },
11623
- Icon: {
11624
- origin: "eidotter",
11625
- consumers: ["rizomorf"]
11626
- },
11627
- Input: {
11628
- origin: "eidotter",
11629
- consumers: ["steuerdash"]
11630
- },
11631
- Lightbox: {
11632
- origin: "eidotter",
11633
- consumers: ["dmnctech"],
11634
- since: "0.22.0",
11635
- originNote: "Fullscreen image viewer extending Modal pattern. Keyboard nav, prev/next, counter, swipe."
11636
- },
11637
- Modal: {
11638
- origin: "eidotter",
11639
- consumers: ["pomodoke-calendar"]
11640
- },
11641
- Progress: {
11642
- origin: "eidotter",
11643
- consumers: ["steuerdash"],
11644
- since: "0.3.0"
11645
- },
11646
- RetroEffects: {
11647
- origin: "spacewar",
11648
- consumers: ["spacewar", "rizomorf"],
11649
- originNote: "CRT scanline/glow effects from Spacewar!"
11650
- },
11651
- Skeleton: {
11652
- origin: "eidotter",
11653
- consumers: ["dmnctech"],
11654
- originNote: "DOS/CGA loading placeholder — shade-character rows (░▒▓) with CRT hum-bar band rolling top→bottom (DMNC-1018)"
11655
- },
11656
- Stat: {
11657
- origin: "steuerdash",
11658
12028
  consumers: ["steuerdash"],
11659
- originNote: "Key-value display created for tax dashboard"
11660
- },
11661
- Switch: {
11662
- origin: "eidotter",
11663
- consumers: []
11664
- },
11665
- FilterBar: {
11666
- origin: "eidotter",
11667
- consumers: ["lifelines", "rizomorf"],
11668
- originNote: "Multi-select toggle group for faceted filtering"
11669
- },
11670
- Tag: {
11671
- origin: "eidotter",
11672
- consumers: ["lifelines", "rizomorf"],
11673
- since: "0.7.0",
11674
- originNote: "Interactive labels for tags, categories, and filter chips",
12029
+ since: "0.3.0",
11675
12030
  variants: {
11676
- "variant:default": {
11677
- description: "Standard tag with subtle background",
11678
- since: "0.7.0",
11679
- usedBy: ["rizomorf"]
11680
- },
11681
- "variant:outlined": {
11682
- description: "Border-only tag",
11683
- since: "0.7.0",
11684
- usedBy: ["lifelines"]
11685
- },
11686
- "variant:filled": {
11687
- description: "Solid background tag",
11688
- since: "0.7.0",
11689
- usedBy: ["rizomorf", "lifelines"]
11690
- },
11691
- "size:small": {
11692
- description: "Compact tag for dense layouts",
11693
- since: "0.7.0"
12031
+ "size:sm": {
12032
+ description: "Compact 16px checkbox for dense forms",
12033
+ since: "0.16.0"
11694
12034
  },
11695
- "size:medium": {
11696
- description: "Standard tag size",
11697
- since: "0.7.0"
12035
+ "size:md": {
12036
+ description: "Standard 20px checkbox",
12037
+ since: "0.3.0",
12038
+ usedBy: ["steuerdash"]
11698
12039
  }
11699
12040
  },
11700
12041
  platforms: {
11701
12042
  react: {
11702
- path: "src/components/Tag",
12043
+ path: "src/components/Checkbox",
11703
12044
  status: "canonical"
11704
12045
  },
11705
12046
  swiftui: { status: "planned" }
11706
12047
  },
11707
12048
  changelog: [
11708
12049
  {
11709
- version: "0.11.0",
12050
+ version: "0.30.0",
11710
12051
  type: "changed",
11711
- description: "Convert font-size to rem tokens for WCAG SC 1.4.4"
12052
+ description: "A11y: remediate Phase 1 audit defects + high-contrast glow gaps"
11712
12053
  },
11713
12054
  {
11714
- version: "0.8.0",
12055
+ version: "0.19.0",
11715
12056
  type: "changed",
11716
- description: "Design-craft animation polish"
12057
+ description: "Replace hardcoded font-size pixels with V.37 dos tokens"
11717
12058
  },
11718
12059
  {
11719
- version: "0.7.0",
12060
+ version: "0.16.0",
12061
+ type: "changed",
12062
+ description: "Migrate to React Aria + Tailwind-first (Wave 1); add size:sm variant"
12063
+ },
12064
+ {
12065
+ version: "0.3.0",
12066
+ type: "added",
12067
+ description: "Initial Checkbox — controlled/uncontrolled, indeterminate; BEM CSS implementation"
12068
+ }
12069
+ ]
12070
+ },
12071
+ CommandPrompt: {
12072
+ origin: "eidotter",
12073
+ consumers: ["rizomorf"],
12074
+ since: "0.3.0",
12075
+ originNote: "DOS command-line input — blinking cursor, configurable prompt string, onCommand callback",
12076
+ platforms: { react: {
12077
+ path: "src/components/CommandPrompt",
12078
+ status: "canonical"
12079
+ } },
12080
+ changelog: [
12081
+ {
12082
+ version: "0.30.0",
12083
+ type: "changed",
12084
+ description: "A11y keyboard focus fixes"
12085
+ },
12086
+ {
12087
+ version: "0.18.0",
12088
+ type: "changed",
12089
+ description: "Migrate BEM to Tailwind-first; switch to Flexi IBM VGA font"
12090
+ },
12091
+ {
12092
+ version: "0.3.0",
12093
+ type: "added",
12094
+ description: "Initial CommandPrompt — prompt prop, onCommand, autoFocus, disabled"
12095
+ }
12096
+ ]
12097
+ },
12098
+ Icon: {
12099
+ origin: "eidotter",
12100
+ consumers: ["rizomorf"],
12101
+ since: "0.13.0",
12102
+ originNote: "Thin wrapper around pixelarticons (MIT) + custom PixelX for Close — 12 public names, ICON_MAP",
12103
+ variants: {
12104
+ "name:Info": {
12105
+ description: "Informational circle-i",
12106
+ since: "0.13.0",
12107
+ usedBy: ["rizomorf"]
12108
+ },
12109
+ "name:Warning": {
12110
+ description: "Warning triangle",
12111
+ since: "0.13.0",
12112
+ usedBy: ["rizomorf"]
12113
+ },
12114
+ "name:Error": {
12115
+ description: "Error octagon",
12116
+ since: "0.13.0"
12117
+ },
12118
+ "name:Done": {
12119
+ description: "Checkmark (shares Check glyph)",
12120
+ since: "0.13.0"
12121
+ },
12122
+ "name:Check": {
12123
+ description: "Checkmark",
12124
+ since: "0.13.0"
12125
+ },
12126
+ "name:Close": {
12127
+ description: "Custom pixel-art X mark (no pixelarticons glyph)",
12128
+ since: "0.19.0",
12129
+ usedBy: ["rizomorf"]
12130
+ },
12131
+ "name:Chevron Up": {
12132
+ description: "Up caret",
12133
+ since: "0.13.0"
12134
+ },
12135
+ "name:Chevron Down": {
12136
+ description: "Down caret",
12137
+ since: "0.13.0"
12138
+ },
12139
+ "name:App": {
12140
+ description: "Grid/app launcher",
12141
+ since: "0.13.0"
12142
+ },
12143
+ "name:Cancel": {
12144
+ description: "Minus glyph — window minimize control",
12145
+ since: "0.13.0"
12146
+ },
12147
+ "name:Fullscreen": {
12148
+ description: "Expand to fullscreen",
12149
+ since: "0.13.0"
12150
+ },
12151
+ "name:Add": {
12152
+ description: "Plus / add action",
12153
+ since: "0.13.0"
12154
+ },
12155
+ "size:L": {
12156
+ description: "Large — 56 × 56 px",
12157
+ since: "0.13.0",
12158
+ usedBy: ["rizomorf"]
12159
+ },
12160
+ "size:S": {
12161
+ description: "Small — 24 × 24 px",
12162
+ since: "0.13.0"
12163
+ }
12164
+ },
12165
+ platforms: { react: {
12166
+ path: "src/components/Icon",
12167
+ status: "canonical"
12168
+ } },
12169
+ changelog: [
12170
+ {
12171
+ version: "0.30.0",
12172
+ type: "changed",
12173
+ description: "A11y: fix aria-prohibited-attr on Icon (Phase 1 audit defect)"
12174
+ },
12175
+ {
12176
+ version: "0.30.0",
12177
+ type: "changed",
12178
+ description: "Icon inherits color from context instead of hardcoding amber"
12179
+ },
12180
+ {
12181
+ version: "0.19.0",
12182
+ type: "added",
12183
+ description: "Custom pixel-art X mark for Close (pixelarticons v2 has no standalone X glyph)"
12184
+ },
12185
+ {
12186
+ version: "0.18.0",
12187
+ type: "changed",
12188
+ description: "Swap @untitledui-pro/icons for pixelarticons (MIT) — license compliance"
12189
+ },
12190
+ {
12191
+ version: "0.13.0",
12192
+ type: "added",
12193
+ description: "Initial Icon component — ICON_MAP with 12 public names, size L/S"
12194
+ }
12195
+ ]
12196
+ },
12197
+ Input: {
12198
+ origin: "eidotter",
12199
+ consumers: ["steuerdash"],
12200
+ since: "0.3.0",
12201
+ variants: {
12202
+ "variant:default": {
12203
+ description: "Standard text input with amber focus border",
12204
+ since: "0.3.0",
12205
+ usedBy: ["steuerdash"]
12206
+ },
12207
+ "variant:error": {
12208
+ description: "Error state — red border, errorMessage slot",
12209
+ since: "0.3.0",
12210
+ usedBy: ["steuerdash"]
12211
+ }
12212
+ },
12213
+ platforms: {
12214
+ react: {
12215
+ path: "src/components/Input",
12216
+ status: "canonical"
12217
+ },
12218
+ swiftui: { status: "planned" }
12219
+ },
12220
+ changelog: [
12221
+ {
12222
+ version: "0.17.0",
12223
+ type: "changed",
12224
+ description: "Migrate to React Aria TextField (Wave 5)"
12225
+ },
12226
+ {
12227
+ version: "0.16.0",
12228
+ type: "changed",
12229
+ description: "Migrate to Tailwind-first (Wave 4 — Input, Modal, Nav)"
12230
+ },
12231
+ {
12232
+ version: "0.9.0",
12233
+ type: "changed",
12234
+ description: "Replace text-primary with cga-amber"
12235
+ },
12236
+ {
12237
+ version: "0.3.0",
12238
+ type: "added",
12239
+ description: "Initial Input — label, description, errorMessage, isRequired"
12240
+ }
12241
+ ]
12242
+ },
12243
+ Lightbox: {
12244
+ origin: "eidotter",
12245
+ consumers: ["dmnctech"],
12246
+ since: "0.22.0",
12247
+ originNote: "Fullscreen image viewer extending Modal pattern. Keyboard nav, prev/next, counter, swipe."
12248
+ },
12249
+ Modal: {
12250
+ origin: "eidotter",
12251
+ consumers: ["pomodoke-calendar"],
12252
+ since: "0.3.0",
12253
+ originNote: "DOS-styled dialog built on React Aria ModalOverlay/Modal/Dialog — focus trap, Esc to close, backdrop",
12254
+ platforms: {
12255
+ react: {
12256
+ path: "src/components/Modal",
12257
+ status: "canonical"
12258
+ },
12259
+ swiftui: { status: "planned" }
12260
+ },
12261
+ changelog: [
12262
+ {
12263
+ version: "0.18.0",
12264
+ type: "changed",
12265
+ description: "Normalize event handlers; replace raw <button> with AriaButton for close control"
12266
+ },
12267
+ {
12268
+ version: "0.17.0",
12269
+ type: "changed",
12270
+ description: "Migrate to React Aria ModalOverlay/Modal/Dialog (Wave 5)"
12271
+ },
12272
+ {
12273
+ version: "0.16.0",
12274
+ type: "changed",
12275
+ description: "Migrate to Tailwind-first (Wave 4 — Input, Modal, Nav)"
12276
+ },
12277
+ {
12278
+ version: "0.3.0",
12279
+ type: "added",
12280
+ description: "Initial Modal — isOpen, onOpenChange, title, footer slot"
12281
+ }
12282
+ ]
12283
+ },
12284
+ Progress: {
12285
+ origin: "eidotter",
12286
+ consumers: ["steuerdash"],
12287
+ since: "0.3.0",
12288
+ variants: {
12289
+ "variant:default": {
12290
+ description: "Amber progress bar",
12291
+ since: "0.3.0",
12292
+ usedBy: ["steuerdash"]
12293
+ },
12294
+ "variant:success": {
12295
+ description: "Green completion indicator",
12296
+ since: "0.3.0"
12297
+ },
12298
+ "variant:warning": {
12299
+ description: "Amber warning progress",
12300
+ since: "0.3.0"
12301
+ },
12302
+ "variant:error": {
12303
+ description: "Red error/failed progress",
12304
+ since: "0.3.0"
12305
+ },
12306
+ "size:sm": {
12307
+ description: "Compact single-row bar",
12308
+ since: "0.16.0"
12309
+ },
12310
+ "size:md": {
12311
+ description: "Standard bar height",
12312
+ since: "0.3.0",
12313
+ usedBy: ["steuerdash"]
12314
+ },
12315
+ "size:lg": {
12316
+ description: "Tall bar for prominent display",
12317
+ since: "0.16.0"
12318
+ },
12319
+ "trackStyle:block": {
12320
+ description: "Solid block fill (default)",
12321
+ since: "0.3.0",
12322
+ usedBy: ["steuerdash"]
12323
+ },
12324
+ "trackStyle:bordered": {
12325
+ description: "Outline bar with fill inside",
12326
+ since: "0.3.0"
12327
+ },
12328
+ "trackStyle:gradient": {
12329
+ description: "Gradient fill for smooth visual",
12330
+ since: "0.3.0"
12331
+ }
12332
+ },
12333
+ platforms: {
12334
+ react: {
12335
+ path: "src/components/Progress",
12336
+ status: "canonical"
12337
+ },
12338
+ swiftui: { status: "planned" }
12339
+ },
12340
+ changelog: [{
12341
+ version: "0.16.0",
12342
+ type: "changed",
12343
+ description: "Migrate to Tailwind-first (Wave 2); deprecate size aliases small/medium/large → sm/md/lg"
12344
+ }, {
12345
+ version: "0.3.0",
12346
+ type: "added",
12347
+ description: "Initial Progress — blocks character cells, indeterminate, showLabel, glow prop"
12348
+ }]
12349
+ },
12350
+ RetroEffects: {
12351
+ origin: "spacewar",
12352
+ consumers: ["spacewar", "rizomorf"],
12353
+ since: "0.3.0",
12354
+ originNote: "CRT scanline/glow effects from Spacewar! — compositor-only, prefers-reduced-motion safe",
12355
+ platforms: {
12356
+ react: {
12357
+ path: "src/components/RetroEffects",
12358
+ status: "canonical"
12359
+ },
12360
+ spritekit: {
12361
+ status: "planned",
12362
+ note: "Spacewar uses CRT shader natively; component is React-web-only"
12363
+ }
12364
+ },
12365
+ changelog: [
12366
+ {
12367
+ version: "0.30.0",
12368
+ type: "added",
12369
+ description: "bootOnce — gate CGA turn-on to once per browser tab/session via sessionStorage"
12370
+ },
12371
+ {
12372
+ version: "0.28.0",
12373
+ type: "added",
12374
+ description: "boot prop — CGA monitor turn-on sequence on mount (~650ms); onBootComplete callback"
12375
+ },
12376
+ {
12377
+ version: "0.18.0",
12378
+ type: "changed",
12379
+ description: "Migrate BEM to Tailwind-first"
12380
+ },
12381
+ {
12382
+ version: "0.8.0",
12383
+ type: "changed",
12384
+ description: "Align CRT animation values with design-craft spec"
12385
+ },
12386
+ {
12387
+ version: "0.3.0",
12388
+ type: "added",
12389
+ description: "Initial RetroEffects — scanlines, glow, flicker, bloom, intensity, powered"
12390
+ }
12391
+ ]
12392
+ },
12393
+ Skeleton: {
12394
+ origin: "eidotter",
12395
+ consumers: ["dmnctech"],
12396
+ originNote: "DOS/CGA loading placeholder — shade-character rows (░▒▓) with CRT hum-bar band rolling top→bottom (DMNC-1018)"
12397
+ },
12398
+ Stat: {
12399
+ origin: "steuerdash",
12400
+ consumers: ["steuerdash"],
12401
+ since: "0.3.0",
12402
+ originNote: "Key-value metric display created for tax dashboard — optional trend arrow and TextScramble animation",
12403
+ variants: {
12404
+ "size:sm": {
12405
+ description: "Compact metric for dense dashboards",
12406
+ since: "0.16.0"
12407
+ },
12408
+ "size:md": {
12409
+ description: "Standard metric display",
12410
+ since: "0.3.0",
12411
+ usedBy: ["steuerdash"]
12412
+ },
12413
+ "size:lg": {
12414
+ description: "Hero metric for prominent KPIs",
12415
+ since: "0.16.0",
12416
+ usedBy: ["steuerdash"]
12417
+ },
12418
+ "trend:up": {
12419
+ description: "Upward trend indicator (green arrow)",
12420
+ since: "0.3.0",
12421
+ usedBy: ["steuerdash"]
12422
+ },
12423
+ "trend:down": {
12424
+ description: "Downward trend indicator (red arrow)",
12425
+ since: "0.3.0",
12426
+ usedBy: ["steuerdash"]
12427
+ },
12428
+ "trend:neutral": {
12429
+ description: "No change indicator (muted dash)",
12430
+ since: "0.3.0"
12431
+ }
12432
+ },
12433
+ platforms: {
12434
+ react: {
12435
+ path: "src/components/Stat",
12436
+ status: "canonical"
12437
+ },
12438
+ swiftui: { status: "planned" }
12439
+ },
12440
+ changelog: [
12441
+ {
12442
+ version: "0.19.0",
12443
+ type: "changed",
12444
+ description: "Replace hardcoded font-size pixels with V.37 dos tokens"
12445
+ },
12446
+ {
12447
+ version: "0.16.0",
12448
+ type: "changed",
12449
+ description: "Migrate to Tailwind-first (Wave 2); deprecate size aliases; add size:sm/lg"
12450
+ },
12451
+ {
12452
+ version: "0.3.0",
12453
+ type: "added",
12454
+ description: "Initial Stat — label, value, trend, trendValue, scramble prop"
12455
+ }
12456
+ ]
12457
+ },
12458
+ Switch: {
12459
+ origin: "eidotter",
12460
+ consumers: [],
12461
+ since: "0.3.0",
12462
+ variants: {
12463
+ "size:sm": {
12464
+ description: "Compact 20px toggle for dense layouts",
12465
+ since: "0.16.0"
12466
+ },
12467
+ "size:md": {
12468
+ description: "Standard 24px toggle",
12469
+ since: "0.3.0"
12470
+ },
12471
+ "type:default": {
12472
+ description: "Full-width thumb track",
12473
+ since: "0.3.0"
12474
+ },
12475
+ "type:slim": {
12476
+ description: "Narrow pill track for inline use",
12477
+ since: "0.3.0"
12478
+ }
12479
+ },
12480
+ platforms: {
12481
+ react: {
12482
+ path: "src/components/Switch",
12483
+ status: "canonical"
12484
+ },
12485
+ swiftui: { status: "planned" }
12486
+ },
12487
+ changelog: [
12488
+ {
12489
+ version: "0.16.0",
12490
+ type: "changed",
12491
+ description: "Migrate to React Aria + Tailwind-first (Wave 1); add size:sm variant"
12492
+ },
12493
+ {
12494
+ version: "0.9.0",
12495
+ type: "changed",
12496
+ description: "Replace text-primary with cga-amber"
12497
+ },
12498
+ {
12499
+ version: "0.8.0",
12500
+ type: "changed",
12501
+ description: "Design-craft animation polish — toggle glow transition"
12502
+ },
12503
+ {
12504
+ version: "0.3.0",
12505
+ type: "added",
12506
+ description: "Initial Switch — controlled/uncontrolled, label, type:default/slim"
12507
+ }
12508
+ ]
12509
+ },
12510
+ FilterBar: {
12511
+ origin: "eidotter",
12512
+ consumers: ["lifelines", "rizomorf"],
12513
+ since: "0.7.0",
12514
+ originNote: "Multi-select toggle group for faceted filtering — keyboard nav, showAll, per-item color",
12515
+ variants: {
12516
+ "mode:multi": {
12517
+ description: "Multiple filters selectable simultaneously",
12518
+ since: "0.7.0",
12519
+ usedBy: ["lifelines", "rizomorf"]
12520
+ },
12521
+ "mode:single": {
12522
+ description: "Single active filter (radio behavior)",
12523
+ since: "0.7.0"
12524
+ },
12525
+ "size:sm": {
12526
+ description: "Compact filter chips",
12527
+ since: "0.16.0"
12528
+ },
12529
+ "size:md": {
12530
+ description: "Standard filter chips",
12531
+ since: "0.7.0",
12532
+ usedBy: ["lifelines", "rizomorf"]
12533
+ },
12534
+ "size:lg": {
12535
+ description: "Large filter chips for touch targets",
12536
+ since: "0.16.0"
12537
+ }
12538
+ },
12539
+ platforms: { react: {
12540
+ path: "src/components/FilterBar",
12541
+ status: "canonical"
12542
+ } },
12543
+ changelog: [
12544
+ {
12545
+ version: "0.16.0",
12546
+ type: "changed",
12547
+ description: "Migrate to Tailwind-first (Wave 3); deprecate size aliases"
12548
+ },
12549
+ {
12550
+ version: "0.13.0",
12551
+ type: "changed",
12552
+ description: "Replace raw <button> with AriaButton for filter chips"
12553
+ },
12554
+ {
12555
+ version: "0.7.0",
12556
+ type: "added",
12557
+ description: "Initial FilterBar — multi/single mode, items array, showAll, keyboard nav"
12558
+ }
12559
+ ]
12560
+ },
12561
+ Tag: {
12562
+ origin: "eidotter",
12563
+ consumers: ["lifelines", "rizomorf"],
12564
+ since: "0.7.0",
12565
+ originNote: "Interactive labels for tags, categories, and filter chips",
12566
+ variants: {
12567
+ "variant:default": {
12568
+ description: "Standard tag with subtle background",
12569
+ since: "0.7.0",
12570
+ usedBy: ["rizomorf"]
12571
+ },
12572
+ "variant:outlined": {
12573
+ description: "Border-only tag",
12574
+ since: "0.7.0",
12575
+ usedBy: ["lifelines"]
12576
+ },
12577
+ "variant:filled": {
12578
+ description: "Solid background tag",
12579
+ since: "0.7.0",
12580
+ usedBy: ["rizomorf", "lifelines"]
12581
+ },
12582
+ "size:small": {
12583
+ description: "Compact tag for dense layouts",
12584
+ since: "0.7.0"
12585
+ },
12586
+ "size:medium": {
12587
+ description: "Standard tag size",
12588
+ since: "0.7.0"
12589
+ }
12590
+ },
12591
+ platforms: {
12592
+ react: {
12593
+ path: "src/components/Tag",
12594
+ status: "canonical"
12595
+ },
12596
+ swiftui: { status: "planned" }
12597
+ },
12598
+ changelog: [
12599
+ {
12600
+ version: "0.11.0",
12601
+ type: "changed",
12602
+ description: "Convert font-size to rem tokens for WCAG SC 1.4.4"
12603
+ },
12604
+ {
12605
+ version: "0.8.0",
12606
+ type: "changed",
12607
+ description: "Design-craft animation polish"
12608
+ },
12609
+ {
12610
+ version: "0.7.0",
11720
12611
  type: "added",
11721
12612
  description: "Initial Tag and TagGroup components"
11722
12613
  }
@@ -11724,31 +12615,381 @@ var Xf = ({ title: e, date: t, intro: n, home: r, children: i, className: a, ...
11724
12615
  },
11725
12616
  Tabs: {
11726
12617
  origin: "eidotter",
11727
- consumers: ["steuerdash"]
12618
+ consumers: ["steuerdash"],
12619
+ since: "0.3.0",
12620
+ variants: {
12621
+ "variant:underline": {
12622
+ description: "Underline indicator tab bar (default)",
12623
+ since: "0.3.0",
12624
+ usedBy: ["steuerdash"]
12625
+ },
12626
+ "variant:pills": {
12627
+ description: "Filled pill tabs",
12628
+ since: "0.3.0"
12629
+ },
12630
+ "size:sm": {
12631
+ description: "Compact tabs for dense layouts",
12632
+ since: "0.16.0"
12633
+ },
12634
+ "size:md": {
12635
+ description: "Standard tab height",
12636
+ since: "0.3.0",
12637
+ usedBy: ["steuerdash"]
12638
+ },
12639
+ "size:lg": {
12640
+ description: "Large touch-friendly tabs",
12641
+ since: "0.16.0"
12642
+ }
12643
+ },
12644
+ platforms: {
12645
+ react: {
12646
+ path: "src/components/Tabs",
12647
+ status: "canonical"
12648
+ },
12649
+ swiftui: { status: "planned" }
12650
+ },
12651
+ changelog: [
12652
+ {
12653
+ version: "0.17.0",
12654
+ type: "changed",
12655
+ description: "Migrate to React Aria TabList/Tab/TabPanel (Wave 5)"
12656
+ },
12657
+ {
12658
+ version: "0.16.0",
12659
+ type: "changed",
12660
+ description: "Migrate to Tailwind-first (Wave 3); deprecate size aliases; JS-measured indicator via ResizeObserver"
12661
+ },
12662
+ {
12663
+ version: "0.11.0",
12664
+ type: "changed",
12665
+ description: "Dynamic text scaling — rem tokens for WCAG SC 1.4.4"
12666
+ },
12667
+ {
12668
+ version: "0.9.0",
12669
+ type: "changed",
12670
+ description: "Replace text-primary with cga-amber"
12671
+ },
12672
+ {
12673
+ version: "0.3.0",
12674
+ type: "added",
12675
+ description: "Initial Tabs — tabs array, activeTab, onSelectionChange, animated indicator"
12676
+ }
12677
+ ]
11728
12678
  },
11729
12679
  Terminal: {
11730
12680
  origin: "eidotter",
11731
- consumers: ["rizomorf"]
12681
+ consumers: ["rizomorf"],
12682
+ since: "0.2.0",
12683
+ originNote: "DOS window frame with px-based bitmap font sizing — legacy BEM, not migrated to Tailwind-first",
12684
+ variants: {
12685
+ "size:sm": {
12686
+ description: "Compact 320px window",
12687
+ since: "0.2.0"
12688
+ },
12689
+ "size:md": {
12690
+ description: "Standard 480px window",
12691
+ since: "0.2.0",
12692
+ usedBy: ["rizomorf"]
12693
+ },
12694
+ "size:lg": {
12695
+ description: "Full-width window",
12696
+ since: "0.2.0"
12697
+ },
12698
+ "state:active": {
12699
+ description: "Focused window with amber title bar",
12700
+ since: "0.2.0",
12701
+ usedBy: ["rizomorf"]
12702
+ },
12703
+ "state:inactive": {
12704
+ description: "Unfocused window with dimmed title bar",
12705
+ since: "0.2.0"
12706
+ },
12707
+ "state:minimized": {
12708
+ description: "Collapsed to title bar only",
12709
+ since: "0.2.0"
12710
+ }
12711
+ },
12712
+ platforms: { react: {
12713
+ path: "src/components/Terminal",
12714
+ status: "canonical"
12715
+ } },
12716
+ changelog: [
12717
+ {
12718
+ version: "0.30.0",
12719
+ type: "changed",
12720
+ description: "A11y keyboard focus fixes for window controls"
12721
+ },
12722
+ {
12723
+ version: "0.18.0",
12724
+ type: "changed",
12725
+ description: "Migrate BEM to Tailwind-first; switch to Flexi IBM VGA font"
12726
+ },
12727
+ {
12728
+ version: "0.14.0",
12729
+ type: "changed",
12730
+ description: "Breaking: minimizable/maximizable/closeable default to false — consumers must opt in"
12731
+ },
12732
+ {
12733
+ version: "0.13.0",
12734
+ type: "changed",
12735
+ description: "Replace raw <button> with AriaButton for window controls"
12736
+ },
12737
+ {
12738
+ version: "0.2.0",
12739
+ type: "added",
12740
+ description: "Initial Terminal — title bar, window controls, resizable, autoFocus, size/state variants"
12741
+ }
12742
+ ]
11732
12743
  },
11733
12744
  TimelineNode: {
11734
12745
  origin: "lifelines",
11735
12746
  consumers: ["lifelines", "rizomorf"],
11736
- originNote: "Timeline markers from Lifelines project"
12747
+ since: "0.4.0",
12748
+ originNote: "Timeline markers extracted from Lifelines — sits on the axis line, content-box sizing",
12749
+ variants: {
12750
+ "shape:circle": {
12751
+ description: "Circular node marker (default)",
12752
+ since: "0.4.0",
12753
+ usedBy: ["lifelines", "rizomorf"]
12754
+ },
12755
+ "shape:square": {
12756
+ description: "Square node marker",
12757
+ since: "0.4.0"
12758
+ },
12759
+ "shape:diamond": {
12760
+ description: "Diamond (rotated square) node marker",
12761
+ since: "0.4.0"
12762
+ },
12763
+ "variant:default": {
12764
+ description: "Muted amber node",
12765
+ since: "0.4.0",
12766
+ usedBy: ["lifelines", "rizomorf"]
12767
+ },
12768
+ "variant:primary": {
12769
+ description: "Full-brightness amber node with phosphor glow",
12770
+ since: "0.4.0",
12771
+ usedBy: ["lifelines"]
12772
+ },
12773
+ "variant:secondary": {
12774
+ description: "Dimmed node for secondary events",
12775
+ since: "0.4.0"
12776
+ },
12777
+ "variant:accent": {
12778
+ description: "CGA accent color node",
12779
+ since: "0.4.0"
12780
+ },
12781
+ "labelPosition:right": {
12782
+ description: "Label to the right of the node (default)",
12783
+ since: "0.4.0",
12784
+ usedBy: ["lifelines", "rizomorf"]
12785
+ },
12786
+ "labelPosition:left": {
12787
+ description: "Label to the left of the node",
12788
+ since: "0.4.0"
12789
+ },
12790
+ "labelPosition:top": {
12791
+ description: "Label above the node",
12792
+ since: "0.4.0"
12793
+ },
12794
+ "labelPosition:bottom": {
12795
+ description: "Label below the node",
12796
+ since: "0.4.0"
12797
+ },
12798
+ "size:sm": {
12799
+ description: "Compact 8px node",
12800
+ since: "0.16.0"
12801
+ },
12802
+ "size:md": {
12803
+ description: "Standard 12px node",
12804
+ since: "0.4.0",
12805
+ usedBy: ["lifelines", "rizomorf"]
12806
+ },
12807
+ "size:lg": {
12808
+ description: "Large 16px node for emphasis",
12809
+ since: "0.16.0"
12810
+ }
12811
+ },
12812
+ platforms: { react: {
12813
+ path: "src/components/TimelineNode",
12814
+ status: "canonical"
12815
+ } },
12816
+ changelog: [
12817
+ {
12818
+ version: "0.35.0",
12819
+ type: "changed",
12820
+ description: "Pin marker box-sizing to content-box so dots stay on the axis line (DMNC-1090)"
12821
+ },
12822
+ {
12823
+ version: "0.30.0",
12824
+ type: "changed",
12825
+ description: "A11y: high-contrast glow gap remediation"
12826
+ },
12827
+ {
12828
+ version: "0.18.0",
12829
+ type: "changed",
12830
+ description: "Migrate BEM to Tailwind-first; switch to Flexi IBM VGA font"
12831
+ },
12832
+ {
12833
+ version: "0.4.0",
12834
+ type: "added",
12835
+ description: "Initial TimelineNode — shape, variant, labelPosition, size, isActive, onClick"
12836
+ }
12837
+ ]
11737
12838
  },
11738
12839
  InlineExpand: {
11739
12840
  origin: "rizomorf",
11740
12841
  consumers: ["rizomorf"],
11741
- originNote: "Inline disclosure widget for expanding text within prose"
12842
+ since: "0.7.0",
12843
+ originNote: "Inline disclosure widget for expanding context within prose — sources with favicon fallback",
12844
+ platforms: { react: {
12845
+ path: "src/components/InlineExpand",
12846
+ status: "canonical"
12847
+ } },
12848
+ changelog: [
12849
+ {
12850
+ version: "0.30.0",
12851
+ type: "changed",
12852
+ description: "Fix behavioral bugs — double-toggle edge case (DMNC-1063)"
12853
+ },
12854
+ {
12855
+ version: "0.18.0",
12856
+ type: "changed",
12857
+ description: "Migrate BEM to Tailwind-first"
12858
+ },
12859
+ {
12860
+ version: "0.8.0",
12861
+ type: "added",
12862
+ description: "sources prop — citation links with Google Favicons API fallback"
12863
+ },
12864
+ {
12865
+ version: "0.7.0",
12866
+ type: "added",
12867
+ description: "Initial InlineExpand — expanded, defaultExpanded, onToggle, content slot"
12868
+ }
12869
+ ]
11742
12870
  },
11743
12871
  Separator: {
11744
12872
  origin: "rizomorf",
11745
12873
  consumers: ["rizomorf"],
11746
- originNote: "Horizontal/vertical divider for content separation"
12874
+ since: "0.8.0",
12875
+ originNote: "Horizontal/vertical divider for content separation — ported from rizomorf",
12876
+ variants: {
12877
+ "orientation:horizontal": {
12878
+ description: "Full-width horizontal rule (default)",
12879
+ since: "0.8.0",
12880
+ usedBy: ["rizomorf"]
12881
+ },
12882
+ "orientation:vertical": {
12883
+ description: "Inline vertical divider for flex/grid rows",
12884
+ since: "0.8.0"
12885
+ }
12886
+ },
12887
+ platforms: { react: {
12888
+ path: "src/components/Separator",
12889
+ status: "canonical"
12890
+ } },
12891
+ changelog: [
12892
+ {
12893
+ version: "0.16.0",
12894
+ type: "changed",
12895
+ description: "Migrate to Tailwind-first (Wave 2)"
12896
+ },
12897
+ {
12898
+ version: "0.9.0",
12899
+ type: "changed",
12900
+ description: "Replace text-primary with cga-amber"
12901
+ },
12902
+ {
12903
+ version: "0.8.0",
12904
+ type: "added",
12905
+ description: "Initial Separator — horizontal/vertical orientation, ported from rizomorf"
12906
+ }
12907
+ ]
11747
12908
  },
11748
12909
  TimelineContainer: {
11749
12910
  origin: "lifelines",
11750
12911
  consumers: ["lifelines"],
11751
- originNote: "Multi-zoom timeline with year/month/day/hour views. Supports interactive, static, and feed modes."
12912
+ since: "0.8.0",
12913
+ originNote: "Multi-zoom timeline with year/month/day/hour views. Supports interactive, static, feed, and master-detail modes.",
12914
+ variants: {
12915
+ "mode:interactive": {
12916
+ description: "Full drill-down with keyboard shortcuts and Ctrl+scroll zoom",
12917
+ since: "0.8.0",
12918
+ usedBy: ["lifelines"]
12919
+ },
12920
+ "mode:static": {
12921
+ description: "Read-only snapshot — no zoom or selection controls",
12922
+ since: "0.8.0"
12923
+ },
12924
+ "mode:feed": {
12925
+ description: "Paginated vertical list with LOAD MORE — append-safe",
12926
+ since: "0.21.0",
12927
+ usedBy: ["lifelines"]
12928
+ },
12929
+ "mode:master-detail": {
12930
+ description: "Split-pane with list rail + detail panel",
12931
+ since: "0.34.0"
12932
+ },
12933
+ "sortOrder:asc": {
12934
+ description: "Oldest entries first",
12935
+ since: "0.8.0"
12936
+ },
12937
+ "sortOrder:desc": {
12938
+ description: "Newest entries first (default)",
12939
+ since: "0.8.0",
12940
+ usedBy: ["lifelines"]
12941
+ }
12942
+ },
12943
+ platforms: { react: {
12944
+ path: "src/components/TimelineContainer",
12945
+ status: "canonical"
12946
+ } },
12947
+ changelog: [
12948
+ {
12949
+ version: "0.34.0",
12950
+ type: "added",
12951
+ description: "master-detail layout mode — split-pane list rail + detail panel (DMNC-878)"
12952
+ },
12953
+ {
12954
+ version: "0.21.0",
12955
+ type: "added",
12956
+ description: "feed mode — pageSize, onLoadMore, DOS-styled LOAD MORE button"
12957
+ },
12958
+ {
12959
+ version: "0.21.0",
12960
+ type: "added",
12961
+ description: "renderEntry prop — pluggable entry renderer with defaultRender() opt-in"
12962
+ },
12963
+ {
12964
+ version: "0.9.0",
12965
+ type: "changed",
12966
+ description: "Responsive layout with CSS container queries"
12967
+ },
12968
+ {
12969
+ version: "0.8.0",
12970
+ type: "added",
12971
+ description: "Initial TimelineContainer — year/month/day/hour drill-down, migrated from Lifelines"
12972
+ }
12973
+ ]
12974
+ },
12975
+ TextScramble: {
12976
+ origin: "eidotter",
12977
+ consumers: [],
12978
+ since: "0.10.0",
12979
+ originNote: "DOS text decode effect — rAF-driven character scramble reveal; used by Stat (scramble prop) and standalone",
12980
+ platforms: { react: {
12981
+ path: "src/components/TextScramble",
12982
+ status: "canonical"
12983
+ } },
12984
+ changelog: [{
12985
+ version: "0.18.0",
12986
+ type: "changed",
12987
+ description: "Migrate BEM to Tailwind-first; adopt cn() and forwardRef"
12988
+ }, {
12989
+ version: "0.10.0",
12990
+ type: "added",
12991
+ description: "Initial TextScramble — children string, speed, characters, delay; rAF-based reveal"
12992
+ }]
11752
12993
  },
11753
12994
  ChatMessage: {
11754
12995
  origin: "eidotter",
@@ -11824,23 +13065,68 @@ var Xf = ({ title: e, date: t, intro: n, home: r, children: i, className: a, ...
11824
13065
  type: "added",
11825
13066
  description: "Initial CmdPalette — generic items with keywords, mod+k global hotkey, custom renderItem, useId() per-instance DOM ids, selected-clamp on items mutation"
11826
13067
  }]
13068
+ },
13069
+ ProgressRing: {
13070
+ origin: "tracker",
13071
+ consumers: ["tracker"],
13072
+ since: "0.37.0",
13073
+ originNote: "16-segment quantized progress ring (SVG). Powers Tracker’s hold-to-complete feedback ring.",
13074
+ platforms: { react: {
13075
+ path: "src/components/ProgressRing",
13076
+ status: "canonical"
13077
+ } },
13078
+ changelog: [{
13079
+ version: "0.37.0",
13080
+ type: "added",
13081
+ description: "Initial ProgressRing — discrete quantized segment arcs, phosphor glow, centre label, currentColor theming"
13082
+ }]
13083
+ },
13084
+ CalendarHeatmap: {
13085
+ origin: "tracker",
13086
+ consumers: ["tracker"],
13087
+ since: "0.37.0",
13088
+ originNote: "Block-character month calendar heatmap (█ ░ · ▒). Domain-agnostic — takes a date→status map, not a domain object.",
13089
+ platforms: { react: {
13090
+ path: "src/components/CalendarHeatmap",
13091
+ status: "canonical"
13092
+ } },
13093
+ changelog: [{
13094
+ version: "0.37.0",
13095
+ type: "added",
13096
+ description: "Initial CalendarHeatmap — UTC date maths, Monday/Sunday week start, legend, successColor override, glyph overrides"
13097
+ }]
13098
+ },
13099
+ HoldToComplete: {
13100
+ origin: "tracker",
13101
+ consumers: ["tracker"],
13102
+ since: "0.37.0",
13103
+ originNote: "Press-and-hold-to-complete interaction with ProgressRing feedback. Pointer + keyboard, reduced-motion aware.",
13104
+ platforms: { react: {
13105
+ path: "src/components/HoldToComplete",
13106
+ status: "canonical"
13107
+ } },
13108
+ changelog: [{
13109
+ version: "0.37.0",
13110
+ type: "added",
13111
+ description: "Initial HoldToComplete — rAF hold animation with accelerating ease, onHoldProgress hook, Enter/Space to complete"
13112
+ }]
11827
13113
  }
11828
13114
  };
11829
- function pp(e) {
11830
- return fp[e];
13115
+ function kp(e) {
13116
+ return Op[e];
11831
13117
  }
11832
- function mp(e) {
11833
- return Object.entries(fp).filter(([, t]) => t.origin === e).map(([e]) => e);
13118
+ function Ap(e) {
13119
+ return Object.entries(Op).filter(([, t]) => t.origin === e).map(([e]) => e);
11834
13120
  }
11835
- function hp(e) {
11836
- return Object.entries(fp).filter(([, t]) => t.consumers.includes(e)).map(([e]) => e);
13121
+ function jp(e) {
13122
+ return Object.entries(Op).filter(([, t]) => t.consumers.includes(e)).map(([e]) => e);
11837
13123
  }
11838
- function gp(e, t) {
11839
- let n = fp[e];
13124
+ function Mp(e, t) {
13125
+ let n = Op[e];
11840
13126
  return n?.variants ? Object.entries(n.variants).filter(([, e]) => e.usedBy?.includes(t)).map(([e]) => e) : [];
11841
13127
  }
11842
- function _p(e) {
11843
- let t = fp[e];
13128
+ function Np(e) {
13129
+ let t = Op[e];
11844
13130
  if (!t?.variants) return {};
11845
13131
  let n = {};
11846
13132
  for (let [e, r] of Object.entries(t.variants)) n[e] = r.usedBy ?? [];
@@ -11848,6 +13134,6 @@ function _p(e) {
11848
13134
  }
11849
13135
  //#endregion
11850
13136
  //#region src/index.ts
11851
- var vp = "0.30.0";
13137
+ var Pp = "0.30.0";
11852
13138
  //#endregion
11853
- export { Hf as AIText, ou as AccordionFill, $f as AddressBlock, iu as Alert, Au as Badge, Vf as BrandLockup, Nu as Breadcrumb, lu as Button, du as Card, wf as ChatContainer, Sf as ChatHistory, Cf as ChatInput, xf as ChatMessage, fu as Checkbox, uf as ChecklistRow, Rf as CmdPalette, pu as CommandPrompt, df as CopyButton, ap as DatenschutzController, lp as DatenschutzEncryption, cp as DatenschutzFonts, op as DatenschutzHosting, sp as DatenschutzPostHog, up as DatenschutzRights, _f as DesktopNav, Pf as DosFigure, cf as EmptyState, $d as FilterBar, Ef as Footer, Of as Header, Zl as Icon, ep as ImpressumAddress, tp as ImpressumContact, rp as ImpressumLiabilityContent, ip as ImpressumLiabilityLinks, np as ImpressumResponsible, tf as InlineExpand, Nf as InlineLink, Cu as Input, mf as LabeledProgress, pf as LedgerRow, Xf as LegalPage, Cd as Lightbox, zf as Logo, vf as MobileNav, Ud as Modal, yf as Nav, Af as Notification, xu as Progress, Ru as RetroEffects, au as Section, of as SectionHeading, ff as Select, rf as Separator, Yf as Skeleton, Zd as Stat, ju as Switch, Du as Tabs, Fd as Tag, Ld as TagGroup, wu as Terminal, hf as TextScramble, Hd as TimelineContainer, Uu as TimelineNode, Bf as Wordmark, Wu as ZOOM_LEVELS, fp as componentRegistry, Tf as defaultLegalLinks, pp as getComponentMeta, hp as getComponentsByConsumer, mp as getComponentsByOrigin, _p as getVariantConsumerMap, gp as getVariantsUsedBy, ef as isSafeUrl, dp as projects, Kd as useTextScramble, vp as version };
13139
+ export { ip as AIText, ou as AccordionFill, hp as AddressBlock, iu as Alert, Gu as Badge, rp as BrandLockup, Ju as Breadcrumb, lu as Button, Mu as CalendarHeatmap, du as Card, Bf as ChatContainer, Rf as ChatHistory, zf as ChatInput, Lf as ChatMessage, fu as Checkbox, Ef as ChecklistRow, ep as CmdPalette, pu as CommandPrompt, Df as CopyButton, xp as DatenschutzController, Tp as DatenschutzEncryption, wp as DatenschutzFonts, Sp as DatenschutzHosting, Cp as DatenschutzPostHog, Ep as DatenschutzRights, Nf as DesktopNav, Xf as DosFigure, wf as EmptyState, hf as FilterBar, Hf as Footer, Wf as Header, Iu as HoldToComplete, Zl as Icon, gp as ImpressumAddress, _p as ImpressumContact, yp as ImpressumLiabilityContent, bp as ImpressumLiabilityLinks, vp as ImpressumResponsible, vf as InlineExpand, Yf as InlineLink, Ru as Input, Af as LabeledProgress, kf as LedgerRow, fp as LegalPage, Rd as Lightbox, tp as Logo, Pf as MobileNav, af as Modal, Ff as Nav, Kf as Notification, xu as Progress, Cu as ProgressRing, $u as RetroEffects, au as Section, Sf as SectionHeading, Of as Select, bf as Separator, dp as Skeleton, pf as Stat, Ku as Switch, Hu as Tabs, Xd as Tag, Qd as TagGroup, zu as Terminal, jf as TextScramble, rf as TimelineContainer, id as TimelineNode, np as Wordmark, ad as ZOOM_LEVELS, Op as componentRegistry, Vf as defaultLegalLinks, kp as getComponentMeta, jp as getComponentsByConsumer, Ap as getComponentsByOrigin, Np as getVariantConsumerMap, Mp as getVariantsUsedBy, gf as isSafeUrl, Dp as projects, cf as useTextScramble, Pp as version };