kaleido-ui 0.2.7 → 0.2.9

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.
@@ -93,6 +93,7 @@ __export(web_exports, {
93
93
  CopyIcon: () => CopyIcon,
94
94
  Copyable: () => Copyable,
95
95
  DEFAULT_AMOUNT_LOCALE: () => DEFAULT_AMOUNT_LOCALE,
96
+ DatePicker: () => DatePicker,
96
97
  DateRangeFilter: () => DateRangeFilter,
97
98
  DepositAssetSelection: () => DepositAssetSelection,
98
99
  DepositGeneratedView: () => DepositGeneratedView,
@@ -9548,45 +9549,253 @@ function Boundary({ label, value }) {
9548
9549
  ] });
9549
9550
  }
9550
9551
 
9551
- // src/web/components/value-list.tsx
9552
+ // src/web/components/date-picker.tsx
9553
+ var React26 = __toESM(require("react"), 1);
9552
9554
  var import_jsx_runtime98 = require("react/jsx-runtime");
9555
+ var pad = (n) => String(n).padStart(2, "0");
9556
+ var toIso = (d) => `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;
9557
+ function parseIso(value) {
9558
+ const m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value ?? "");
9559
+ if (!m) return null;
9560
+ const d = new Date(Number(m[1]), Number(m[2]) - 1, Number(m[3]));
9561
+ return toIso(d) === value ? d : null;
9562
+ }
9563
+ var addDays = (d, n) => new Date(d.getFullYear(), d.getMonth(), d.getDate() + n);
9564
+ var startOfMonth = (d) => new Date(d.getFullYear(), d.getMonth(), 1);
9565
+ function DatePicker({
9566
+ value,
9567
+ onChange,
9568
+ placeholder = "Select a date",
9569
+ min,
9570
+ max,
9571
+ disabled,
9572
+ locale = "en-US",
9573
+ weekStartsOn = 1,
9574
+ id,
9575
+ previousMonthLabel = "Previous month",
9576
+ nextMonthLabel = "Next month",
9577
+ clearLabel = "Clear",
9578
+ todayLabel = "Today",
9579
+ className,
9580
+ ...rest
9581
+ }) {
9582
+ const selected = parseIso(value);
9583
+ const minDate = parseIso(min);
9584
+ const maxDate = parseIso(max);
9585
+ const [open, setOpen] = React26.useState(false);
9586
+ const [focused, setFocused] = React26.useState(() => selected ?? /* @__PURE__ */ new Date());
9587
+ const gridRef = React26.useRef(null);
9588
+ const wantFocus = React26.useRef(false);
9589
+ const inRange = (d) => !(minDate && d < minDate) && !(maxDate && d > maxDate);
9590
+ const handleOpenChange = (next) => {
9591
+ if (next) {
9592
+ setFocused(selected ?? /* @__PURE__ */ new Date());
9593
+ wantFocus.current = true;
9594
+ }
9595
+ setOpen(next);
9596
+ };
9597
+ React26.useEffect(() => {
9598
+ if (!open || !wantFocus.current) return;
9599
+ gridRef.current?.querySelector('button[tabindex="0"]')?.focus();
9600
+ }, [open, focused]);
9601
+ const month = startOfMonth(focused);
9602
+ const lead = (month.getDay() - weekStartsOn + 7) % 7;
9603
+ const gridStart = addDays(month, -lead);
9604
+ const days = Array.from({ length: 42 }, (_, i) => addDays(gridStart, i));
9605
+ const rows = [0, 1, 2, 3, 4, 5].filter((r) => days.slice(r * 7, r * 7 + 7).some((d) => d.getMonth() === month.getMonth()));
9606
+ const monthFmt = new Intl.DateTimeFormat(locale, { month: "long", year: "numeric" });
9607
+ const weekdayLong = new Intl.DateTimeFormat(locale, { weekday: "long" });
9608
+ const weekdayShort = new Intl.DateTimeFormat(locale, { weekday: "short" });
9609
+ const dayFull = new Intl.DateTimeFormat(locale, { dateStyle: "full" });
9610
+ const triggerFmt = new Intl.DateTimeFormat(locale, { dateStyle: "medium" });
9611
+ const heads = Array.from({ length: 7 }, (_, i) => addDays(gridStart, i));
9612
+ const move = (next) => {
9613
+ wantFocus.current = true;
9614
+ setFocused(next);
9615
+ };
9616
+ const shiftMonth = (delta) => {
9617
+ const last = new Date(focused.getFullYear(), focused.getMonth() + delta + 1, 0).getDate();
9618
+ move(new Date(focused.getFullYear(), focused.getMonth() + delta, Math.min(focused.getDate(), last)));
9619
+ };
9620
+ const choose = (d) => {
9621
+ if (!inRange(d)) return;
9622
+ onChange(toIso(d));
9623
+ setOpen(false);
9624
+ };
9625
+ const onKeyDown = (event) => {
9626
+ const step = {
9627
+ ArrowLeft: () => addDays(focused, -1),
9628
+ ArrowRight: () => addDays(focused, 1),
9629
+ ArrowUp: () => addDays(focused, -7),
9630
+ ArrowDown: () => addDays(focused, 7),
9631
+ Home: () => addDays(focused, -((focused.getDay() - weekStartsOn + 7) % 7)),
9632
+ End: () => addDays(focused, 6 - (focused.getDay() - weekStartsOn + 7) % 7)
9633
+ };
9634
+ if (event.key === "PageUp" || event.key === "PageDown") {
9635
+ event.preventDefault();
9636
+ shiftMonth(event.key === "PageUp" ? -1 : 1);
9637
+ return;
9638
+ }
9639
+ const next = step[event.key]?.();
9640
+ if (next) {
9641
+ event.preventDefault();
9642
+ move(next);
9643
+ }
9644
+ };
9645
+ const todayIso = toIso(/* @__PURE__ */ new Date());
9646
+ return /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(Popover, { open, onOpenChange: handleOpenChange, children: [
9647
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
9648
+ "button",
9649
+ {
9650
+ type: "button",
9651
+ id,
9652
+ disabled,
9653
+ "aria-label": rest["aria-label"],
9654
+ "data-slot": "date-picker-trigger",
9655
+ className: cn(
9656
+ "flex h-12 w-full items-center justify-between gap-3 px-4 py-3 text-left text-body",
9657
+ fieldSurface,
9658
+ !selected && "text-muted-foreground",
9659
+ className
9660
+ ),
9661
+ children: [
9662
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { className: "truncate", children: selected ? triggerFmt.format(selected) : placeholder }),
9663
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(IconGlyph, { glyph: Event2, "aria-hidden": "true", className: "shrink-0 text-secondary-content" })
9664
+ ]
9665
+ }
9666
+ ) }),
9667
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
9668
+ PopoverContent,
9669
+ {
9670
+ align: "start",
9671
+ className: "w-auto p-3",
9672
+ onOpenAutoFocus: (event) => event.preventDefault(),
9673
+ children: /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { "data-slot": "date-picker", className: "flex flex-col gap-2", children: [
9674
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
9675
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(GlyphButton, { size: "sm", icon: ChevronLeft, label: previousMonthLabel, onClick: () => shiftMonth(-1) }),
9676
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("p", { "aria-live": "polite", className: "m-0 text-caption font-semibold text-foreground", children: monthFmt.format(month) }),
9677
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(GlyphButton, { size: "sm", icon: ChevronRight, label: nextMonthLabel, onClick: () => shiftMonth(1) })
9678
+ ] }),
9679
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
9680
+ "div",
9681
+ {
9682
+ ref: gridRef,
9683
+ role: "grid",
9684
+ "aria-label": monthFmt.format(month),
9685
+ onKeyDown,
9686
+ className: "flex flex-col gap-1",
9687
+ children: [
9688
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { role: "row", className: "grid grid-cols-7", children: heads.map((d) => /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
9689
+ "span",
9690
+ {
9691
+ role: "columnheader",
9692
+ "aria-label": weekdayLong.format(d),
9693
+ className: "py-1 text-center text-mini font-medium uppercase tracking-eyebrow text-muted-foreground",
9694
+ children: weekdayShort.format(d).slice(0, 2)
9695
+ },
9696
+ d.getDay()
9697
+ )) }),
9698
+ rows.map((r) => /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { role: "row", className: "grid grid-cols-7 gap-1", children: days.slice(r * 7, r * 7 + 7).map((d) => {
9699
+ const iso = toIso(d);
9700
+ const outside = d.getMonth() !== month.getMonth();
9701
+ const isSelected = iso === value;
9702
+ const isFocused = iso === toIso(focused);
9703
+ const enabled = inRange(d);
9704
+ return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { role: "gridcell", "aria-selected": isSelected, children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
9705
+ "button",
9706
+ {
9707
+ type: "button",
9708
+ tabIndex: isFocused ? 0 : -1,
9709
+ disabled: !enabled,
9710
+ "aria-label": dayFull.format(d),
9711
+ "aria-current": iso === todayIso ? "date" : void 0,
9712
+ "data-date": iso,
9713
+ onClick: () => choose(d),
9714
+ className: cn(
9715
+ "size-9 rounded-xl text-caption tabular-nums transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 disabled:cursor-not-allowed disabled:opacity-30",
9716
+ isSelected ? "bg-primary font-semibold text-primary-foreground shadow-button-primary" : cn(
9717
+ "hover:bg-foreground/10",
9718
+ outside ? "text-foreground/55" : "text-foreground",
9719
+ iso === todayIso && "font-semibold text-brand"
9720
+ )
9721
+ ),
9722
+ children: d.getDate()
9723
+ }
9724
+ ) }, iso);
9725
+ }) }, r))
9726
+ ]
9727
+ }
9728
+ ),
9729
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "flex items-center justify-between", children: [
9730
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
9731
+ "button",
9732
+ {
9733
+ type: "button",
9734
+ disabled: !selected,
9735
+ onClick: () => {
9736
+ onChange("");
9737
+ setOpen(false);
9738
+ },
9739
+ className: "rounded-lg px-2 py-1 text-caption font-medium text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 disabled:opacity-40",
9740
+ children: clearLabel
9741
+ }
9742
+ ),
9743
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
9744
+ "button",
9745
+ {
9746
+ type: "button",
9747
+ disabled: !inRange(parseIso(todayIso)),
9748
+ onClick: () => choose(parseIso(todayIso)),
9749
+ className: "rounded-lg px-2 py-1 text-caption font-medium text-brand focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 disabled:opacity-40",
9750
+ children: todayLabel
9751
+ }
9752
+ )
9753
+ ] })
9754
+ ] })
9755
+ }
9756
+ )
9757
+ ] });
9758
+ }
9759
+
9760
+ // src/web/components/value-list.tsx
9761
+ var import_jsx_runtime99 = require("react/jsx-runtime");
9553
9762
  function ValueList({ values, singular, plural, emptyLabel = "None", defaultOpen = false, className }) {
9554
9763
  if (values.length === 0) {
9555
- return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { className: cn("text-caption text-muted-foreground", className), children: emptyLabel });
9764
+ return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: cn("text-caption text-muted-foreground", className), children: emptyLabel });
9556
9765
  }
9557
9766
  const summary = `${values.length} ${values.length === 1 ? singular : plural}`;
9558
- return /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(Collapsible, { defaultOpen, "data-slot": "value-list", className: cn("min-w-0", className), children: [
9559
- /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
9767
+ return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Collapsible, { defaultOpen, "data-slot": "value-list", className: cn("min-w-0", className), children: [
9768
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
9560
9769
  CollapsibleTrigger,
9561
9770
  {
9562
9771
  type: "button",
9563
9772
  className: "inline-flex items-center gap-1 rounded-lg text-caption font-semibold text-foreground transition-colors hover:text-secondary-content data-[state=open]:text-secondary-content",
9564
9773
  children: [
9565
9774
  summary,
9566
- /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(CollapsibleChevron, {})
9775
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(CollapsibleChevron, {})
9567
9776
  ]
9568
9777
  }
9569
9778
  ),
9570
- /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(CollapsibleContent, { children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("ul", { className: "m-0 mt-2 list-none space-y-1 p-0", children: values.map((value, index) => /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("li", { className: "flex items-center gap-1 rounded-xl kui-well px-3 py-1.5", children: [
9571
- /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { className: "min-w-0 select-all break-all font-mono text-caption text-foreground", children: value }),
9572
- /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(CopyButton, { value, label: singular })
9779
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(CollapsibleContent, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("ul", { className: "m-0 mt-2 list-none space-y-1 p-0", children: values.map((value, index) => /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("li", { className: "flex items-center gap-1 rounded-xl kui-well px-3 py-1.5", children: [
9780
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "min-w-0 select-all break-all font-mono text-caption text-foreground", children: value }),
9781
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(CopyButton, { value, label: singular })
9573
9782
  ] }, `${index}-${value}`)) }) })
9574
9783
  ] });
9575
9784
  }
9576
9785
 
9577
9786
  // src/web/components/event-timeline.tsx
9578
- var import_jsx_runtime99 = require("react/jsx-runtime");
9787
+ var import_jsx_runtime100 = require("react/jsx-runtime");
9579
9788
  function EventTimeline({ events, label, className }) {
9580
- return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("ol", { "aria-label": label, "data-slot": "event-timeline", className: cn("m-0 list-none space-y-1.5 p-0", className), children: events.map((event) => /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
9789
+ return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("ol", { "aria-label": label, "data-slot": "event-timeline", className: cn("m-0 list-none space-y-1.5 p-0", className), children: events.map((event) => /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(
9581
9790
  "li",
9582
9791
  {
9583
9792
  "data-slot": "event-timeline-item",
9584
9793
  className: "relative flex items-baseline justify-between gap-3 rounded-xl kui-well py-2.5 pl-7 pr-3 before:absolute before:left-3 before:top-1/2 before:size-1.5 before:-translate-y-1/2 before:rounded-full before:bg-primary/60 last:before:bg-primary last:before:shadow-glow-primary-soft",
9585
9794
  children: [
9586
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "min-w-0 text-caption font-medium text-foreground", children: event.label }),
9587
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "flex shrink-0 items-baseline gap-2 text-caption tabular-nums text-muted-foreground", children: [
9588
- event.duration !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { "data-slot": "event-timeline-duration", children: event.duration }),
9589
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("time", { dateTime: event.dateTime, children: event.timestamp })
9795
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("span", { className: "min-w-0 text-caption font-medium text-foreground", children: event.label }),
9796
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("span", { className: "flex shrink-0 items-baseline gap-2 text-caption tabular-nums text-muted-foreground", children: [
9797
+ event.duration !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("span", { "data-slot": "event-timeline-duration", children: event.duration }),
9798
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("time", { dateTime: event.dateTime, children: event.timestamp })
9590
9799
  ] })
9591
9800
  ]
9592
9801
  },
@@ -9596,7 +9805,7 @@ function EventTimeline({ events, label, className }) {
9596
9805
 
9597
9806
  // src/web/components/notice-bar.tsx
9598
9807
  var import_react28 = require("react");
9599
- var import_jsx_runtime100 = require("react/jsx-runtime");
9808
+ var import_jsx_runtime101 = require("react/jsx-runtime");
9600
9809
  var useIsomorphicLayoutEffect2 = typeof window === "undefined" ? import_react28.useEffect : import_react28.useLayoutEffect;
9601
9810
  function NoticeBar({ children, hidden = false, heightVariable = "--kui-notice-height", className }) {
9602
9811
  const ref = (0, import_react28.useRef)(null);
@@ -9625,7 +9834,7 @@ function NoticeBar({ children, hidden = false, heightVariable = "--kui-notice-he
9625
9834
  };
9626
9835
  }, [hidden, heightVariable]);
9627
9836
  if (hidden) return null;
9628
- return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
9837
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
9629
9838
  "div",
9630
9839
  {
9631
9840
  ref,
@@ -9637,7 +9846,7 @@ function NoticeBar({ children, hidden = false, heightVariable = "--kui-notice-he
9637
9846
  }
9638
9847
 
9639
9848
  // src/web/components/floating-notice.tsx
9640
- var import_jsx_runtime101 = require("react/jsx-runtime");
9849
+ var import_jsx_runtime102 = require("react/jsx-runtime");
9641
9850
  function FloatingNotice({
9642
9851
  children,
9643
9852
  onDismiss,
@@ -9647,7 +9856,7 @@ function FloatingNotice({
9647
9856
  className
9648
9857
  }) {
9649
9858
  const showClose = dismissible && Boolean(onDismiss);
9650
- return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
9859
+ return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
9651
9860
  "div",
9652
9861
  {
9653
9862
  "data-slot": "floating-notice",
@@ -9656,16 +9865,16 @@ function FloatingNotice({
9656
9865
  "fixed bottom-4 left-1/2 z-[var(--z-modal)] w-[min(32rem,calc(100vw-2rem))] -translate-x-1/2 rounded-2xl bg-card bg-gradient-card-hero shadow-toast",
9657
9866
  className
9658
9867
  ),
9659
- children: /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "relative", children: [
9868
+ children: /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { className: "relative", children: [
9660
9869
  children,
9661
- showClose && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(GlyphButton, { icon: Close, label: dismissLabel, size: "sm", onClick: onDismiss, className: "absolute right-2 top-2" })
9870
+ showClose && /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(GlyphButton, { icon: Close, label: dismissLabel, size: "sm", onClick: onDismiss, className: "absolute right-2 top-2" })
9662
9871
  ] })
9663
9872
  }
9664
9873
  );
9665
9874
  }
9666
9875
 
9667
9876
  // src/web/components/summary-rows.tsx
9668
- var import_jsx_runtime102 = require("react/jsx-runtime");
9877
+ var import_jsx_runtime103 = require("react/jsx-runtime");
9669
9878
  var valueTone = {
9670
9879
  default: "text-foreground",
9671
9880
  primary: "text-brand",
@@ -9680,18 +9889,18 @@ function SummaryRows({ rows, as = "dl", className }) {
9680
9889
  const isDl = as === "dl";
9681
9890
  const Label4 = isDl ? "dt" : "span";
9682
9891
  const Value2 = isDl ? "dd" : "div";
9683
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
9892
+ return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
9684
9893
  List2,
9685
9894
  {
9686
9895
  "data-slot": "summary-rows",
9687
9896
  className: cn("m-0 list-none p-0", className),
9688
9897
  children: rows.map((row, index) => {
9689
9898
  const muted = row.tone === "muted";
9690
- const content = /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(import_jsx_runtime102.Fragment, { children: [
9691
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Label4, { className: "shrink-0 text-caption text-muted-foreground", children: row.label }),
9692
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(DottedLeader, {}),
9693
- /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(Value2, { className: "m-0 flex min-w-0 max-w-[65%] items-baseline gap-2", children: [
9694
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
9899
+ const content = /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(import_jsx_runtime103.Fragment, { children: [
9900
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Label4, { className: "shrink-0 text-caption text-muted-foreground", children: row.label }),
9901
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(DottedLeader, {}),
9902
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(Value2, { className: "m-0 flex min-w-0 max-w-[65%] items-baseline gap-2", children: [
9903
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
9695
9904
  "span",
9696
9905
  {
9697
9906
  className: cn(
@@ -9703,7 +9912,7 @@ function SummaryRows({ rows, as = "dl", className }) {
9703
9912
  children: row.value
9704
9913
  }
9705
9914
  ),
9706
- row.hint && /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("span", { className: "shrink-0 text-xxs text-muted-foreground", children: row.hint })
9915
+ row.hint && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("span", { className: "shrink-0 text-xxs text-muted-foreground", children: row.hint })
9707
9916
  ] })
9708
9917
  ] });
9709
9918
  const rowProps = {
@@ -9711,16 +9920,16 @@ function SummaryRows({ rows, as = "dl", className }) {
9711
9920
  "data-emphasis": row.emphasis ? "true" : void 0,
9712
9921
  className: rowClass
9713
9922
  };
9714
- return isDl ? /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { ...rowProps, children: content }, index) : /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("li", { ...rowProps, children: content }, index);
9923
+ return isDl ? /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { ...rowProps, children: content }, index) : /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("li", { ...rowProps, children: content }, index);
9715
9924
  })
9716
9925
  }
9717
9926
  );
9718
9927
  }
9719
9928
 
9720
9929
  // src/web/components/section-label.tsx
9721
- var import_jsx_runtime103 = require("react/jsx-runtime");
9930
+ var import_jsx_runtime104 = require("react/jsx-runtime");
9722
9931
  function SectionLabel({ children, className }) {
9723
- return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
9932
+ return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
9724
9933
  "span",
9725
9934
  {
9726
9935
  className: cn("text-mini font-medium uppercase tracking-eyebrow-wide text-muted-foreground", className),
@@ -9730,21 +9939,21 @@ function SectionLabel({ children, className }) {
9730
9939
  }
9731
9940
 
9732
9941
  // src/web/components/section-header.tsx
9733
- var import_jsx_runtime104 = require("react/jsx-runtime");
9942
+ var import_jsx_runtime105 = require("react/jsx-runtime");
9734
9943
  function SectionHeader({
9735
9944
  children,
9736
9945
  right,
9737
9946
  as: Tag = "h2",
9738
9947
  className
9739
9948
  }) {
9740
- return /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)("div", { className: cn("flex items-center justify-between gap-3 px-1", className), children: [
9741
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Tag, { className: cn("text-muted-foreground", eyebrow), children }),
9949
+ return /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: cn("flex items-center justify-between gap-3 px-1", className), children: [
9950
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Tag, { className: cn("text-muted-foreground", eyebrow), children }),
9742
9951
  right
9743
9952
  ] });
9744
9953
  }
9745
9954
 
9746
9955
  // src/web/components/info-chip.tsx
9747
- var import_jsx_runtime105 = require("react/jsx-runtime");
9956
+ var import_jsx_runtime106 = require("react/jsx-runtime");
9748
9957
  var defaultStatusLabel = {
9749
9958
  success: "Success",
9750
9959
  warning: "Warning",
@@ -9770,7 +9979,7 @@ var statusDotClass = {
9770
9979
  info: "bg-secondary-content"
9771
9980
  };
9772
9981
  function StatusChip2({ status, label, pulse = true, className }) {
9773
- return /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
9982
+ return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
9774
9983
  "span",
9775
9984
  {
9776
9985
  "data-slot": "status-chip",
@@ -9781,17 +9990,17 @@ function StatusChip2({ status, label, pulse = true, className }) {
9781
9990
  className
9782
9991
  ),
9783
9992
  children: [
9784
- /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("span", { "aria-hidden": "true", className: "relative flex size-1.5 shrink-0", children: [
9785
- pulse && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
9993
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("span", { "aria-hidden": "true", className: "relative flex size-1.5 shrink-0", children: [
9994
+ pulse && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
9786
9995
  "span",
9787
9996
  {
9788
9997
  "data-slot": "status-chip-pulse",
9789
9998
  className: cn("absolute inset-0 rounded-full opacity-0 motion-safe:animate-ping motion-safe:opacity-75", statusDotClass[status])
9790
9999
  }
9791
10000
  ),
9792
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { className: cn("relative size-1.5 rounded-full", statusDotClass[status]) })
10001
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: cn("relative size-1.5 rounded-full", statusDotClass[status]) })
9793
10002
  ] }),
9794
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { className: "truncate", children: label ?? defaultStatusLabel[status] })
10003
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: "truncate", children: label ?? defaultStatusLabel[status] })
9795
10004
  ]
9796
10005
  }
9797
10006
  );
@@ -9811,7 +10020,7 @@ function InfoChip({
9811
10020
  "data-info-kind": dataInfoKind
9812
10021
  }) {
9813
10022
  const readableStatus = status ? statusLabel ?? defaultStatusLabel[status] : null;
9814
- return /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
10023
+ return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
9815
10024
  "div",
9816
10025
  {
9817
10026
  "data-slot": "info-chip",
@@ -9823,7 +10032,7 @@ function InfoChip({
9823
10032
  className
9824
10033
  ),
9825
10034
  children: [
9826
- leading && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
10035
+ leading && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
9827
10036
  "span",
9828
10037
  {
9829
10038
  "aria-hidden": "true",
@@ -9834,10 +10043,10 @@ function InfoChip({
9834
10043
  children: leading
9835
10044
  }
9836
10045
  ),
9837
- /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("dl", { className: "min-w-0 flex-1", children: [
9838
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("dt", { className: cn("truncate text-muted-foreground", eyebrow), children: label }),
9839
- /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("dd", { className: "mt-0.5 flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1", children: [
9840
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
10046
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("dl", { className: "min-w-0 flex-1", children: [
10047
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("dt", { className: cn("truncate text-muted-foreground", eyebrow), children: label }),
10048
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("dd", { className: "mt-0.5 flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1", children: [
10049
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
9841
10050
  "span",
9842
10051
  {
9843
10052
  className: cn(
@@ -9847,10 +10056,10 @@ function InfoChip({
9847
10056
  children: value
9848
10057
  }
9849
10058
  ),
9850
- status && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(StatusChip2, { status, label: readableStatus ?? void 0 })
10059
+ status && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(StatusChip2, { status, label: readableStatus ?? void 0 })
9851
10060
  ] })
9852
10061
  ] }),
9853
- onEdit && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(GlyphButton, { icon: Edit, label: editLabel, onClick: onEdit, disabled: editDisabled })
10062
+ onEdit && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(GlyphButton, { icon: Edit, label: editLabel, onClick: onEdit, disabled: editDisabled })
9854
10063
  ]
9855
10064
  }
9856
10065
  );
@@ -9862,12 +10071,12 @@ function NetworkInfoChip({
9862
10071
  iconBasePath,
9863
10072
  ...infoChipProps
9864
10073
  }) {
9865
- return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
10074
+ return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
9866
10075
  InfoChip,
9867
10076
  {
9868
10077
  ...infoChipProps,
9869
10078
  "data-info-kind": "network",
9870
- leading: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(NetworkBadge, { network, iconBasePath, size: "md" }),
10079
+ leading: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(NetworkBadge, { network, iconBasePath, size: "md" }),
9871
10080
  label,
9872
10081
  value
9873
10082
  }
@@ -9881,12 +10090,12 @@ function AssetInfoChip({
9881
10090
  cdnBaseUrl,
9882
10091
  ...infoChipProps
9883
10092
  }) {
9884
- return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
10093
+ return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
9885
10094
  InfoChip,
9886
10095
  {
9887
10096
  ...infoChipProps,
9888
10097
  "data-info-kind": "asset",
9889
- leading: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(AssetIcon, { ticker, logoUri, cdnBaseUrl, size: 28 }),
10098
+ leading: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(AssetIcon, { ticker, logoUri, cdnBaseUrl, size: 28 }),
9890
10099
  label,
9891
10100
  value
9892
10101
  }
@@ -9895,7 +10104,7 @@ function AssetInfoChip({
9895
10104
 
9896
10105
  // src/web/components/error-boundary.tsx
9897
10106
  var import_react29 = require("react");
9898
- var import_jsx_runtime106 = require("react/jsx-runtime");
10107
+ var import_jsx_runtime107 = require("react/jsx-runtime");
9899
10108
  var ErrorBoundary = class extends import_react29.Component {
9900
10109
  constructor(props) {
9901
10110
  super(props);
@@ -9909,11 +10118,11 @@ var ErrorBoundary = class extends import_react29.Component {
9909
10118
  }
9910
10119
  render() {
9911
10120
  if (this.state.hasError) {
9912
- return this.props.fallback ?? /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "min-h-screen bg-background bg-page-radial text-foreground font-display flex flex-col items-center justify-center p-6 gap-4", children: [
9913
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(IconGlyph, { glyph: Error2, className: "text-danger-fg text-icon-5xl" }),
9914
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("h2", { className: "text-subhead font-bold", children: "Something went wrong" }),
9915
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("p", { className: "text-caption text-muted-foreground text-center", children: this.state.error?.message ?? "An unexpected error occurred." }),
9916
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
10121
+ return this.props.fallback ?? /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "min-h-screen bg-background bg-page-radial text-foreground font-display flex flex-col items-center justify-center p-6 gap-4", children: [
10122
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(IconGlyph, { glyph: Error2, className: "text-danger-fg text-icon-5xl" }),
10123
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("h2", { className: "text-subhead font-bold", children: "Something went wrong" }),
10124
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("p", { className: "text-caption text-muted-foreground text-center", children: this.state.error?.message ?? "An unexpected error occurred." }),
10125
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
9917
10126
  "button",
9918
10127
  {
9919
10128
  onClick: () => {
@@ -9931,7 +10140,7 @@ var ErrorBoundary = class extends import_react29.Component {
9931
10140
  };
9932
10141
 
9933
10142
  // src/web/components/recovery-phrase-card.tsx
9934
- var import_jsx_runtime107 = require("react/jsx-runtime");
10143
+ var import_jsx_runtime108 = require("react/jsx-runtime");
9935
10144
  function RecoveryPhraseCard({
9936
10145
  words,
9937
10146
  revealed = false,
@@ -9950,10 +10159,10 @@ function RecoveryPhraseCard({
9950
10159
  const selfCopy = !onCopy && copyValue !== void 0;
9951
10160
  const handleCopy = onCopy ?? (selfCopy ? () => void clipboard.copy(copyValue) : void 0);
9952
10161
  const copied = selfCopy && clipboard.state === "copied";
9953
- return /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("section", { className: cn("space-y-2", className), children: [
9954
- /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "flex items-center justify-between px-0.5", children: [
9955
- /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("p", { className: cn("text-muted-foreground", eyebrow), children: title }),
9956
- hasWords && revealed && onRevealChange && /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(
10162
+ return /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("section", { className: cn("space-y-2", className), children: [
10163
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "flex items-center justify-between px-0.5", children: [
10164
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("p", { className: cn("text-muted-foreground", eyebrow), children: title }),
10165
+ hasWords && revealed && onRevealChange && /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(
9957
10166
  Button,
9958
10167
  {
9959
10168
  type: "button",
@@ -9961,27 +10170,27 @@ function RecoveryPhraseCard({
9961
10170
  size: "xs",
9962
10171
  onClick: () => onRevealChange(!revealed),
9963
10172
  children: [
9964
- /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(IconGlyph, { glyph: VisibilityOff, className: "text-icon-md" }),
10173
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(IconGlyph, { glyph: VisibilityOff, className: "text-icon-md" }),
9965
10174
  "Hide"
9966
10175
  ]
9967
10176
  }
9968
10177
  )
9969
10178
  ] }),
9970
- /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "relative", children: [
9971
- hasWords ? /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
10179
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "relative", children: [
10180
+ hasWords ? /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
9972
10181
  "div",
9973
10182
  {
9974
10183
  className: cn(
9975
10184
  "grid grid-cols-3 gap-2 transition-all duration-300",
9976
10185
  !revealed && "pointer-events-none select-none blur-sm"
9977
10186
  ),
9978
- children: words.map((word, index) => /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)("div", { className: "flex items-center gap-2 rounded-xl bg-card bg-gradient-card px-3 py-2.5 shadow-raised", children: [
9979
- /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("span", { className: "w-4 shrink-0 text-caption font-bold text-secondary-content", children: index + 1 }),
9980
- /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("span", { className: "font-mono text-body text-foreground", children: word })
10187
+ children: words.map((word, index) => /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "flex items-center gap-2 rounded-xl bg-card bg-gradient-card px-3 py-2.5 shadow-raised", children: [
10188
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("span", { className: "w-4 shrink-0 text-caption font-bold text-secondary-content", children: index + 1 }),
10189
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("span", { className: "font-mono text-body text-foreground", children: word })
9981
10190
  ] }, `${index}-${word}`))
9982
10191
  }
9983
- ) : /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "rounded-xl bg-warning/10 px-4 py-3 text-body text-warning-fg", children: emptyMessage }),
9984
- hasWords && !revealed && onRevealChange && /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: "absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(
10192
+ ) : /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "rounded-xl bg-warning/10 px-4 py-3 text-body text-warning-fg", children: emptyMessage }),
10193
+ hasWords && !revealed && onRevealChange && /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(
9985
10194
  Button,
9986
10195
  {
9987
10196
  type: "button",
@@ -9989,13 +10198,13 @@ function RecoveryPhraseCard({
9989
10198
  size: "sm",
9990
10199
  onClick: () => onRevealChange(true),
9991
10200
  children: [
9992
- /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(IconGlyph, { glyph: Visibility, className: "text-icon-lg" }),
10201
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(IconGlyph, { glyph: Visibility, className: "text-icon-lg" }),
9993
10202
  "Tap to reveal"
9994
10203
  ]
9995
10204
  }
9996
10205
  ) })
9997
10206
  ] }),
9998
- hasWords && revealed && handleCopy && /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(
10207
+ hasWords && revealed && handleCopy && /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(
9999
10208
  Button,
10000
10209
  {
10001
10210
  type: "button",
@@ -10004,18 +10213,18 @@ function RecoveryPhraseCard({
10004
10213
  onClick: handleCopy,
10005
10214
  className: cn("w-full", copied && "bg-primary/10 bg-gradient-active text-brand ring-primary/40 hover:ring-primary/50"),
10006
10215
  children: [
10007
- /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(IconGlyph, { glyph: copied ? Check : ContentCopy, className: "text-icon-lg" }),
10216
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(IconGlyph, { glyph: copied ? Check : ContentCopy, className: "text-icon-lg" }),
10008
10217
  copied ? copiedLabel : copyLabel
10009
10218
  ]
10010
10219
  }
10011
10220
  ),
10012
- selfCopy && clipboard.state === "failed" && /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("p", { role: "alert", className: "m-0 text-caption text-danger-fg", children: copyFailedMessage }),
10013
- selfCopy && /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("span", { "aria-live": "polite", className: "sr-only", children: copied ? copiedLabel : "" })
10221
+ selfCopy && clipboard.state === "failed" && /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("p", { role: "alert", className: "m-0 text-caption text-danger-fg", children: copyFailedMessage }),
10222
+ selfCopy && /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("span", { "aria-live": "polite", className: "sr-only", children: copied ? copiedLabel : "" })
10014
10223
  ] });
10015
10224
  }
10016
10225
 
10017
10226
  // src/web/components/settings-selector-row.tsx
10018
- var import_jsx_runtime108 = require("react/jsx-runtime");
10227
+ var import_jsx_runtime109 = require("react/jsx-runtime");
10019
10228
  function SettingsSelectorRow({
10020
10229
  icon,
10021
10230
  title,
@@ -10024,9 +10233,9 @@ function SettingsSelectorRow({
10024
10233
  className,
10025
10234
  iconClassName
10026
10235
  }) {
10027
- return /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: cn("flex items-start justify-between gap-3 rounded-2xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card p-5 shadow-card-secondary", className), children: [
10028
- /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "flex min-w-0 flex-1 items-start gap-3", children: [
10029
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
10236
+ return /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)("div", { className: cn("flex items-start justify-between gap-3 rounded-2xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card p-5 shadow-card-secondary", className), children: [
10237
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)("div", { className: "flex min-w-0 flex-1 items-start gap-3", children: [
10238
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
10030
10239
  "div",
10031
10240
  {
10032
10241
  className: cn(
@@ -10036,17 +10245,17 @@ function SettingsSelectorRow({
10036
10245
  children: icon
10037
10246
  }
10038
10247
  ),
10039
- /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col", children: [
10040
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("span", { className: "text-body font-bold tracking-wide text-foreground", children: title }),
10041
- description && /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("span", { className: "mt-0.5 text-caption font-medium text-muted-foreground", children: description })
10248
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col", children: [
10249
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("span", { className: "text-body font-bold tracking-wide text-foreground", children: title }),
10250
+ description && /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("span", { className: "mt-0.5 text-caption font-medium text-muted-foreground", children: description })
10042
10251
  ] })
10043
10252
  ] }),
10044
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { className: "shrink-0", children: control })
10253
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "shrink-0", children: control })
10045
10254
  ] });
10046
10255
  }
10047
10256
 
10048
10257
  // src/web/components/bottom-sheet.tsx
10049
- var import_jsx_runtime109 = require("react/jsx-runtime");
10258
+ var import_jsx_runtime110 = require("react/jsx-runtime");
10050
10259
  function BottomSheet({
10051
10260
  open,
10052
10261
  title,
@@ -10062,7 +10271,7 @@ function BottomSheet({
10062
10271
  const handleBackdropClick = (event) => {
10063
10272
  if (closeOnBackdrop && event.target === event.currentTarget) onClose?.();
10064
10273
  };
10065
- return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
10274
+ return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
10066
10275
  "div",
10067
10276
  {
10068
10277
  className: cn(
@@ -10070,7 +10279,7 @@ function BottomSheet({
10070
10279
  className
10071
10280
  ),
10072
10281
  onClick: handleBackdropClick,
10073
- children: /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(
10282
+ children: /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
10074
10283
  ScrollArea,
10075
10284
  {
10076
10285
  className: cn(
@@ -10079,13 +10288,13 @@ function BottomSheet({
10079
10288
  ),
10080
10289
  viewportClassName: "max-h-[90vh] px-4 pb-6 pt-5",
10081
10290
  children: [
10082
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "-mt-1 flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "h-1 w-10 rounded-full bg-secondary/40" }) }),
10083
- (title || icon) && /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)("div", { className: "mt-4 flex items-center gap-2", children: [
10291
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("div", { className: "-mt-1 flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("div", { className: "h-1 w-10 rounded-full bg-secondary/40" }) }),
10292
+ (title || icon) && /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "mt-4 flex items-center gap-2", children: [
10084
10293
  icon,
10085
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("p", { className: "text-body font-bold text-foreground", children: title })
10294
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("p", { className: "text-body font-bold text-foreground", children: title })
10086
10295
  ] }),
10087
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: cn((title || icon) && "mt-3"), children }),
10088
- actions && actions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "mt-4 flex gap-2", children: actions.map((action, index) => /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(
10296
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("div", { className: cn((title || icon) && "mt-3"), children }),
10297
+ actions && actions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("div", { className: "mt-4 flex gap-2", children: actions.map((action, index) => /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
10089
10298
  Button,
10090
10299
  {
10091
10300
  type: "button",
@@ -10095,7 +10304,7 @@ function BottomSheet({
10095
10304
  onClick: action.onClick,
10096
10305
  disabled: action.disabled,
10097
10306
  children: [
10098
- action.icon && /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Icon, { name: action.icon, className: "text-icon-md" }),
10307
+ action.icon && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Icon, { name: action.icon, className: "text-icon-md" }),
10099
10308
  action.label
10100
10309
  ]
10101
10310
  },
@@ -10109,7 +10318,7 @@ function BottomSheet({
10109
10318
  }
10110
10319
 
10111
10320
  // src/web/components/basic-collapsible.tsx
10112
- var import_jsx_runtime110 = require("react/jsx-runtime");
10321
+ var import_jsx_runtime111 = require("react/jsx-runtime");
10113
10322
  function BasicCollapsible({
10114
10323
  title,
10115
10324
  children,
@@ -10120,7 +10329,7 @@ function BasicCollapsible({
10120
10329
  triggerClassName,
10121
10330
  contentClassName
10122
10331
  }) {
10123
- return /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
10332
+ return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
10124
10333
  Collapsible,
10125
10334
  {
10126
10335
  open,
@@ -10129,7 +10338,7 @@ function BasicCollapsible({
10129
10338
  "data-slot": "basic-collapsible",
10130
10339
  className: cn("overflow-hidden rounded-xl bg-surface-inset/40 shadow-raised", className),
10131
10340
  children: [
10132
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
10341
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
10133
10342
  CollapsibleTrigger,
10134
10343
  {
10135
10344
  className: cn(
@@ -10138,18 +10347,18 @@ function BasicCollapsible({
10138
10347
  ),
10139
10348
  children: [
10140
10349
  title,
10141
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(CollapsibleChevron, {})
10350
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(CollapsibleChevron, {})
10142
10351
  ]
10143
10352
  }
10144
10353
  ),
10145
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(CollapsibleContent, { className: cn("px-3 pb-3 pt-1 text-caption text-muted-foreground", contentClassName), children })
10354
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(CollapsibleContent, { className: cn("px-3 pb-3 pt-1 text-caption text-muted-foreground", contentClassName), children })
10146
10355
  ]
10147
10356
  }
10148
10357
  );
10149
10358
  }
10150
10359
 
10151
10360
  // src/web/components/stepper-number-input.tsx
10152
- var import_jsx_runtime111 = require("react/jsx-runtime");
10361
+ var import_jsx_runtime112 = require("react/jsx-runtime");
10153
10362
  function StepperNumberInput({
10154
10363
  value,
10155
10364
  onChange,
@@ -10166,7 +10375,7 @@ function StepperNumberInput({
10166
10375
  const bounded = max === void 0 ? boundedMin : Math.min(max, boundedMin);
10167
10376
  onChange(Number.isFinite(bounded) ? bounded : min ?? 0);
10168
10377
  };
10169
- return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
10378
+ return /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(
10170
10379
  "div",
10171
10380
  {
10172
10381
  className: cn(
@@ -10174,7 +10383,7 @@ function StepperNumberInput({
10174
10383
  className
10175
10384
  ),
10176
10385
  children: [
10177
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
10386
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
10178
10387
  "button",
10179
10388
  {
10180
10389
  type: "button",
@@ -10182,10 +10391,10 @@ function StepperNumberInput({
10182
10391
  disabled: disabled || min !== void 0 && value <= min,
10183
10392
  onClick: () => clamp(value - step),
10184
10393
  "aria-label": "Decrease",
10185
- children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(IconGlyph, { glyph: Remove, className: "text-icon-md" })
10394
+ children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(IconGlyph, { glyph: Remove, className: "text-icon-md" })
10186
10395
  }
10187
10396
  ),
10188
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
10397
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
10189
10398
  "input",
10190
10399
  {
10191
10400
  type: "number",
@@ -10202,7 +10411,7 @@ function StepperNumberInput({
10202
10411
  )
10203
10412
  }
10204
10413
  ),
10205
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
10414
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
10206
10415
  "button",
10207
10416
  {
10208
10417
  type: "button",
@@ -10210,7 +10419,7 @@ function StepperNumberInput({
10210
10419
  disabled: disabled || max !== void 0 && value >= max,
10211
10420
  onClick: () => clamp(value + step),
10212
10421
  "aria-label": "Increase",
10213
- children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(IconGlyph, { glyph: Add, className: "text-icon-md" })
10422
+ children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(IconGlyph, { glyph: Add, className: "text-icon-md" })
10214
10423
  }
10215
10424
  )
10216
10425
  ]
@@ -10220,7 +10429,7 @@ function StepperNumberInput({
10220
10429
 
10221
10430
  // src/web/components/metric-card.tsx
10222
10431
  var import_react30 = require("react");
10223
- var import_jsx_runtime112 = require("react/jsx-runtime");
10432
+ var import_jsx_runtime113 = require("react/jsx-runtime");
10224
10433
  var toneClasses2 = {
10225
10434
  primary: "bg-primary/10 text-brand",
10226
10435
  purple: "bg-network-arkade/10 text-network-arkade-fg",
@@ -10241,16 +10450,36 @@ function MetricCard({
10241
10450
  trend,
10242
10451
  definition,
10243
10452
  change,
10453
+ labelStyle = "eyebrow",
10244
10454
  className,
10245
10455
  ...rest
10246
10456
  }) {
10247
10457
  const labelId = (0, import_react30.useId)();
10458
+ const valueRef = (0, import_react30.useRef)(null);
10248
10459
  const comfortable = size === "comfortable";
10249
10460
  const placement = iconPlacement ?? (comfortable ? "end" : "label");
10250
10461
  const hasEnd = placement === "end" || !!trend;
10251
10462
  const iconBox = comfortable ? "size-9 rounded-xl shadow-raised" : placement === "end" ? "size-7 rounded-lg" : "size-5 rounded-md";
10252
10463
  const iconGlyph = comfortable ? "text-icon-lg" : placement === "end" ? "text-icon-md" : "text-icon-xs";
10253
- const iconNode = icon ? /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
10464
+ (0, import_react30.useLayoutEffect)(() => {
10465
+ const el = valueRef.current;
10466
+ const column = el?.parentElement;
10467
+ if (!el || !column || !hasEnd) return;
10468
+ const fit = () => {
10469
+ el.style.fontSize = "";
10470
+ const base = parseFloat(getComputedStyle(el).fontSize);
10471
+ let size2 = base;
10472
+ while (el.scrollWidth > el.clientWidth + 0.5 && size2 > base * 0.6) {
10473
+ size2 -= 1;
10474
+ el.style.fontSize = `${size2}px`;
10475
+ }
10476
+ };
10477
+ fit();
10478
+ const observer = new ResizeObserver(fit);
10479
+ observer.observe(column);
10480
+ return () => observer.disconnect();
10481
+ }, [value, hasEnd, comfortable]);
10482
+ const iconNode = icon ? /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
10254
10483
  "span",
10255
10484
  {
10256
10485
  "data-slot": "metric-card-icon",
@@ -10259,11 +10488,19 @@ function MetricCard({
10259
10488
  iconBox,
10260
10489
  toneClasses2[tone]
10261
10490
  ),
10262
- children: typeof icon === "string" ? /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Icon, { name: icon, className: iconGlyph }) : icon
10491
+ children: typeof icon === "string" ? /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Icon, { name: icon, className: iconGlyph }) : icon
10263
10492
  }
10264
10493
  ) : null;
10265
- const labelNode = /* @__PURE__ */ (0, import_jsx_runtime112.jsx)("span", { id: labelId, "data-slot": "metric-card-label", className: cn(eyebrow, "text-muted-foreground"), children: label });
10266
- return /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(
10494
+ const labelNode = /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
10495
+ "span",
10496
+ {
10497
+ id: labelId,
10498
+ "data-slot": "metric-card-label",
10499
+ className: labelStyle === "title" ? "text-body font-semibold text-foreground" : cn(eyebrow, "text-muted-foreground"),
10500
+ children: label
10501
+ }
10502
+ );
10503
+ return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(
10267
10504
  "div",
10268
10505
  {
10269
10506
  role: "group",
@@ -10277,36 +10514,42 @@ function MetricCard({
10277
10514
  ),
10278
10515
  ...rest,
10279
10516
  children: [
10280
- /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("div", { className: hasEnd ? "min-w-0 flex-1 space-y-1" : "contents", children: [
10281
- /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("div", { className: "flex items-center gap-1.5", children: [
10282
- placement === "label" && iconNode,
10283
- labelNode
10517
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("div", { className: hasEnd ? "flex min-w-0 flex-1 flex-col justify-between gap-4" : "contents", children: [
10518
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("div", { className: hasEnd ? labelStyle === "title" ? "space-y-0" : "space-y-1" : "contents", children: [
10519
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("div", { className: "flex items-center gap-1.5", children: [
10520
+ placement === "label" && iconNode,
10521
+ labelNode
10522
+ ] }),
10523
+ definition && /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("p", { "data-slot": "metric-card-definition", className: "m-0 text-caption text-muted-foreground", children: definition })
10284
10524
  ] }),
10285
- definition && /* @__PURE__ */ (0, import_jsx_runtime112.jsx)("p", { "data-slot": "metric-card-definition", className: "m-0 text-caption text-muted-foreground", children: definition }),
10286
- /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
10287
- "p",
10288
- {
10289
- "data-slot": "metric-card-value",
10290
- className: cn(
10291
- "m-0 font-bold tabular-nums text-foreground",
10292
- comfortable ? "text-headline" : "text-body"
10293
- ),
10294
- children: value
10295
- }
10296
- ),
10297
- change && /* @__PURE__ */ (0, import_jsx_runtime112.jsx)("p", { "data-slot": "metric-card-change", className: cn("m-0 tabular-nums text-foreground", comfortable ? "text-caption" : "text-xxs"), children: change }),
10298
- description && /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
10299
- "p",
10300
- {
10301
- "data-slot": "metric-card-description",
10302
- className: cn("m-0 text-muted-foreground", comfortable ? "text-caption" : "text-xxs"),
10303
- children: description
10304
- }
10305
- )
10525
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("div", { className: hasEnd ? "space-y-1" : "contents", children: [
10526
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
10527
+ "p",
10528
+ {
10529
+ ref: valueRef,
10530
+ "data-slot": "metric-card-value",
10531
+ className: cn(
10532
+ "m-0 font-bold tabular-nums text-foreground",
10533
+ hasEnd && "whitespace-nowrap",
10534
+ comfortable ? "text-headline" : "text-body"
10535
+ ),
10536
+ children: value
10537
+ }
10538
+ ),
10539
+ change && /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("p", { "data-slot": "metric-card-change", className: cn("m-0 tabular-nums text-foreground", comfortable ? "text-caption" : "text-xxs"), children: change }),
10540
+ description && /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
10541
+ "p",
10542
+ {
10543
+ "data-slot": "metric-card-description",
10544
+ className: cn("m-0 text-muted-foreground", comfortable ? "text-caption" : "text-xxs"),
10545
+ children: description
10546
+ }
10547
+ )
10548
+ ] })
10306
10549
  ] }),
10307
- hasEnd && /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("div", { className: "flex shrink-0 flex-col items-end justify-between gap-2", children: [
10550
+ hasEnd && /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("div", { className: "flex shrink-0 flex-col items-end justify-between gap-3", children: [
10308
10551
  placement === "end" && iconNode,
10309
- trend && /* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { "data-slot": "metric-card-trend", className: "min-h-0 flex-1", children: trend })
10552
+ trend && /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("div", { "data-slot": "metric-card-trend", className: "min-h-0 flex-1", children: trend })
10310
10553
  ] })
10311
10554
  ]
10312
10555
  }
@@ -10314,10 +10557,10 @@ function MetricCard({
10314
10557
  }
10315
10558
 
10316
10559
  // src/web/components/copyable.tsx
10317
- var import_jsx_runtime113 = require("react/jsx-runtime");
10560
+ var import_jsx_runtime114 = require("react/jsx-runtime");
10318
10561
  function Copyable({ value, label, children, mono = true, wrap = false, className }) {
10319
- return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("span", { "data-slot": "copyable", className: cn("inline-flex min-w-0 max-w-full items-center gap-1", className), children: [
10320
- /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
10562
+ return /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)("span", { "data-slot": "copyable", className: cn("inline-flex min-w-0 max-w-full items-center gap-1", className), children: [
10563
+ /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
10321
10564
  "span",
10322
10565
  {
10323
10566
  title: value,
@@ -10325,29 +10568,29 @@ function Copyable({ value, label, children, mono = true, wrap = false, className
10325
10568
  children: children ?? value
10326
10569
  }
10327
10570
  ),
10328
- /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(CopyButton, { value, label })
10571
+ /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(CopyButton, { value, label })
10329
10572
  ] });
10330
10573
  }
10331
10574
 
10332
10575
  // src/web/components/code-block.tsx
10333
- var import_jsx_runtime114 = require("react/jsx-runtime");
10576
+ var import_jsx_runtime115 = require("react/jsx-runtime");
10334
10577
  function CodeBlock({ code, label = "code", language, className }) {
10335
- return /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(
10578
+ return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
10336
10579
  "figure",
10337
10580
  {
10338
10581
  "data-slot": "code-block",
10339
10582
  "aria-label": label,
10340
10583
  className: cn("relative m-0 min-w-0 overflow-hidden rounded-xl bg-muted/60 shadow-inner ring-1 ring-inset ring-secondary/15", className),
10341
10584
  children: [
10342
- language && /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("figcaption", { className: cn("px-4 pt-3 text-muted-foreground", eyebrow), children: language }),
10343
- /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("div", { className: "absolute right-2 top-2", children: /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(CopyButton, { value: code, label }) }),
10344
- /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
10585
+ language && /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("figcaption", { className: cn("px-4 pt-3 text-muted-foreground", eyebrow), children: language }),
10586
+ /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("div", { className: "absolute right-2 top-2", children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(CopyButton, { value: code, label }) }),
10587
+ /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
10345
10588
  HorizontalScrollArea,
10346
10589
  {
10347
10590
  className: "my-4 ml-4 mr-12",
10348
10591
  viewportAs: "pre",
10349
10592
  viewportClassName: "m-0 pb-3 font-mono text-caption text-foreground",
10350
- children: /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("code", { children: code })
10593
+ children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("code", { children: code })
10351
10594
  }
10352
10595
  )
10353
10596
  ]
@@ -10372,7 +10615,7 @@ var chartScatterSeriesLimit = 3;
10372
10615
 
10373
10616
  // src/web/components/filter-chip-group.tsx
10374
10617
  var import_react31 = require("react");
10375
- var import_jsx_runtime115 = require("react/jsx-runtime");
10618
+ var import_jsx_runtime116 = require("react/jsx-runtime");
10376
10619
  function FilterChipGroup({
10377
10620
  options,
10378
10621
  value,
@@ -10399,7 +10642,7 @@ function FilterChipGroup({
10399
10642
  onChange(target.option.value);
10400
10643
  refs.current[target.index]?.focus();
10401
10644
  };
10402
- return /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
10645
+ return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
10403
10646
  "div",
10404
10647
  {
10405
10648
  role: segmented ? "radiogroup" : void 0,
@@ -10413,7 +10656,7 @@ function FilterChipGroup({
10413
10656
  children: options.map((option, index) => {
10414
10657
  const active = option.value === value;
10415
10658
  const iconOnly = option.label === void 0 || option.label === null;
10416
- return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
10659
+ return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
10417
10660
  "button",
10418
10661
  {
10419
10662
  ref: (node) => {
@@ -10441,7 +10684,7 @@ function FilterChipGroup({
10441
10684
  children: [
10442
10685
  option.icon,
10443
10686
  option.label,
10444
- option.count !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
10687
+ option.count !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
10445
10688
  "span",
10446
10689
  {
10447
10690
  className: cn(
@@ -10461,7 +10704,7 @@ function FilterChipGroup({
10461
10704
  }
10462
10705
 
10463
10706
  // src/web/components/charts/core.tsx
10464
- var import_jsx_runtime116 = require("react/jsx-runtime");
10707
+ var import_jsx_runtime117 = require("react/jsx-runtime");
10465
10708
  var BAR_GAP = 2;
10466
10709
  var BAR_RADIUS = 4;
10467
10710
  function barPath(x, y, w, h, end) {
@@ -10526,15 +10769,15 @@ function ChartLegend({
10526
10769
  className
10527
10770
  }) {
10528
10771
  const visibleCount = items.filter((item) => !hidden?.has(item.id)).length;
10529
- return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
10772
+ return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
10530
10773
  "ul",
10531
10774
  {
10532
10775
  "data-slot": "chart-legend",
10533
10776
  className: cn("m-0 flex list-none flex-wrap justify-center gap-x-4 gap-y-1 p-0 text-caption text-foreground", className),
10534
10777
  children: items.map((item) => {
10535
10778
  const off = hidden?.has(item.id) ?? false;
10536
- const key = item.swatch ?? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(LegendSwatch, { color: item.color, shape: keyShape });
10537
- return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("li", { className: "flex items-center", children: onToggle ? /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
10779
+ const key = item.swatch ?? /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(LegendSwatch, { color: item.color, shape: keyShape });
10780
+ return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("li", { className: "flex items-center", children: onToggle ? /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(
10538
10781
  "button",
10539
10782
  {
10540
10783
  type: "button",
@@ -10551,7 +10794,7 @@ function ChartLegend({
10551
10794
  item.label
10552
10795
  ]
10553
10796
  }
10554
- ) : /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("span", { className: "flex items-center gap-1.5 px-1.5 py-0.5", children: [
10797
+ ) : /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("span", { className: "flex items-center gap-1.5 px-1.5 py-0.5", children: [
10555
10798
  key,
10556
10799
  item.label
10557
10800
  ] }) }, item.id);
@@ -10577,7 +10820,7 @@ function useSeriesVisibility(ids) {
10577
10820
  };
10578
10821
  }
10579
10822
  function LegendSwatch({ color, shape = "rect" }) {
10580
- return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("svg", { width: "12", height: "12", "aria-hidden": "true", className: "shrink-0", children: shape === "line" ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("line", { x1: "1", x2: "11", y1: "6", y2: "6", stroke: color, strokeWidth: "2", strokeLinecap: "round" }) : shape === "dot" ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("circle", { cx: "6", cy: "6", r: "4", fill: color }) : /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("rect", { width: "12", height: "12", rx: "3", fill: color }) });
10823
+ return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("svg", { width: "12", height: "12", "aria-hidden": "true", className: "shrink-0", children: shape === "line" ? /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("line", { x1: "1", x2: "11", y1: "6", y2: "6", stroke: color, strokeWidth: "2", strokeLinecap: "round" }) : shape === "dot" ? /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("circle", { cx: "6", cy: "6", r: "4", fill: color }) : /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("rect", { width: "12", height: "12", rx: "3", fill: color }) });
10581
10824
  }
10582
10825
  function ChartTooltip({
10583
10826
  title,
@@ -10588,7 +10831,7 @@ function ChartTooltip({
10588
10831
  swatch = "line"
10589
10832
  }) {
10590
10833
  const flip = x > width * 0.6;
10591
- return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
10834
+ return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(
10592
10835
  "div",
10593
10836
  {
10594
10837
  "data-slot": "chart-tooltip",
@@ -10600,11 +10843,11 @@ function ChartTooltip({
10600
10843
  top: Math.max(0, y - 8)
10601
10844
  },
10602
10845
  children: [
10603
- /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("div", { className: "mb-1 font-semibold text-foreground", children: title }),
10604
- /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("ul", { className: "m-0 list-none space-y-0.5 p-0", children: rows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("li", { className: "flex items-center gap-2 whitespace-nowrap", children: [
10605
- /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(LegendSwatch, { color: row.color, shape: swatch }),
10606
- /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("span", { className: "font-semibold tabular-nums text-foreground", children: row.value }),
10607
- /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("span", { className: "text-muted-foreground", children: row.label })
10846
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("div", { className: "mb-1 font-semibold text-foreground", children: title }),
10847
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("ul", { className: "m-0 list-none space-y-0.5 p-0", children: rows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("li", { className: "flex items-center gap-2 whitespace-nowrap", children: [
10848
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(LegendSwatch, { color: row.color, shape: swatch }),
10849
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("span", { className: "font-semibold tabular-nums text-foreground", children: row.value }),
10850
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("span", { className: "text-muted-foreground", children: row.label })
10608
10851
  ] }, row.id)) })
10609
10852
  ]
10610
10853
  }
@@ -10632,8 +10875,8 @@ function nextActiveIndex(key, current, count3, { vertical = false } = {}) {
10632
10875
  }
10633
10876
  }
10634
10877
  var viewOptions = [
10635
- { value: "chart", ariaLabel: "Chart", icon: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(IconGlyph, { glyph: BarChart, size: "sm" }) },
10636
- { value: "table", ariaLabel: "Table", icon: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(IconGlyph, { glyph: TableRows, size: "sm" }) }
10878
+ { value: "chart", ariaLabel: "Chart", icon: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(IconGlyph, { glyph: BarChart, size: "sm" }) },
10879
+ { value: "table", ariaLabel: "Table", icon: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(IconGlyph, { glyph: TableRows, size: "sm" }) }
10637
10880
  ];
10638
10881
  var tableOption = viewOptions[1];
10639
10882
  function ChartViewToggle({
@@ -10643,9 +10886,9 @@ function ChartViewToggle({
10643
10886
  chartView,
10644
10887
  onChartViewChange
10645
10888
  }) {
10646
- const options = views && views.length > 0 ? [...views.map((v) => ({ value: v.value, ariaLabel: v.label, icon: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Icon, { name: v.icon, size: "sm" }) })), tableOption] : viewOptions;
10889
+ const options = views && views.length > 0 ? [...views.map((v) => ({ value: v.value, ariaLabel: v.label, icon: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Icon, { name: v.icon, size: "sm" }) })), tableOption] : viewOptions;
10647
10890
  const value = view === "table" ? "table" : views && views.length > 0 ? chartView ?? views[0].value : "chart";
10648
- return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("div", { "data-slot": "chart-view-toggle", className: "shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
10891
+ return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("div", { "data-slot": "chart-view-toggle", className: "shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
10649
10892
  FilterChipGroup,
10650
10893
  {
10651
10894
  variant: "segmented",
@@ -10666,16 +10909,16 @@ function ChartTimeframeMenu({
10666
10909
  onChange
10667
10910
  }) {
10668
10911
  const current = timeframes.find((t) => t.value === value) ?? timeframes[0];
10669
- return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("div", { "data-slot": "chart-timeframe", className: "shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(DropdownMenu, { children: [
10670
- /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(GlyphButton, { icon: Event2, label: `Timeframe: ${current.label}` }) }),
10671
- /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(DropdownMenuContent, { className: "min-w-28", children: timeframes.map((t) => /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
10912
+ return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("div", { "data-slot": "chart-timeframe", className: "shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(DropdownMenu, { children: [
10913
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(GlyphButton, { icon: Event2, label: `Timeframe: ${current.label}` }) }),
10914
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(DropdownMenuContent, { className: "min-w-28", children: timeframes.map((t) => /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(
10672
10915
  DropdownMenuItem,
10673
10916
  {
10674
10917
  onSelect: () => onChange(t.value),
10675
- icon: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(IconGlyph, { glyph: Check, className: t.value === current.value ? void 0 : "invisible" }),
10918
+ icon: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(IconGlyph, { glyph: Check, className: t.value === current.value ? void 0 : "invisible" }),
10676
10919
  children: [
10677
10920
  t.label,
10678
- t.value === current.value && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("span", { className: "sr-only", children: " (current)" })
10921
+ t.value === current.value && /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("span", { className: "sr-only", children: " (current)" })
10679
10922
  ]
10680
10923
  },
10681
10924
  t.value
@@ -10689,8 +10932,8 @@ function ChartFiltersMenu({
10689
10932
  }) {
10690
10933
  const on = filters.filter((f) => active.includes(f.value));
10691
10934
  const toggle = (value) => onChange(active.includes(value) ? active.filter((v) => v !== value) : [...active, value]);
10692
- return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("div", { "data-slot": "chart-filters", className: "shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(DropdownMenu, { children: [
10693
- /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
10935
+ return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("div", { "data-slot": "chart-filters", className: "shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(DropdownMenu, { children: [
10936
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
10694
10937
  GlyphButton,
10695
10938
  {
10696
10939
  icon: Tune,
@@ -10698,9 +10941,9 @@ function ChartFiltersMenu({
10698
10941
  label: on.length > 0 ? `Filters: ${on.length} on` : "Filters"
10699
10942
  }
10700
10943
  ) }),
10701
- /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(DropdownMenuContent, { className: "min-w-44", children: filters.map((f) => {
10944
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(DropdownMenuContent, { className: "min-w-44", children: filters.map((f) => {
10702
10945
  const checked = active.includes(f.value);
10703
- return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
10946
+ return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
10704
10947
  DropdownMenuItem,
10705
10948
  {
10706
10949
  role: "menuitemcheckbox",
@@ -10709,7 +10952,7 @@ function ChartFiltersMenu({
10709
10952
  event.preventDefault();
10710
10953
  toggle(f.value);
10711
10954
  },
10712
- icon: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(IconGlyph, { glyph: Check, className: checked ? void 0 : "invisible" }),
10955
+ icon: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(IconGlyph, { glyph: Check, className: checked ? void 0 : "invisible" }),
10713
10956
  children: f.label
10714
10957
  },
10715
10958
  f.value
@@ -10735,20 +10978,20 @@ function ChartHeader({
10735
10978
  const showTimeframes = timeframes && timeframes.length > 0 && onTimeframeChange;
10736
10979
  const showFilters = filters && filters.length > 0 && onFiltersChange;
10737
10980
  const hasText = Boolean(title || description);
10738
- return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(
10981
+ return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(
10739
10982
  "div",
10740
10983
  {
10741
10984
  "data-slot": "chart-header",
10742
10985
  className: cn("flex flex-wrap items-start gap-x-4 gap-y-2", hasText ? "justify-between" : "justify-end"),
10743
10986
  children: [
10744
- hasText && /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("div", { className: "flex min-w-0 flex-col gap-1", children: [
10745
- title && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("h3", { className: "m-0 text-subhead font-semibold leading-none tracking-tight text-foreground", children: title }),
10746
- description && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("p", { className: "m-0 text-caption text-muted-foreground", children: description })
10987
+ hasText && /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("div", { className: "flex min-w-0 flex-col gap-1", children: [
10988
+ title && /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("h3", { className: "m-0 text-subhead font-semibold leading-none tracking-tight text-foreground", children: title }),
10989
+ description && /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("p", { className: "m-0 text-caption text-muted-foreground", children: description })
10747
10990
  ] }),
10748
- /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("div", { className: "flex shrink-0 items-center gap-1", children: [
10749
- (showTimeframes || showFilters) && /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("div", { className: "flex items-center gap-0.5", children: [
10750
- showFilters && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(ChartFiltersMenu, { filters, active: activeFilters ?? [], onChange: onFiltersChange }),
10751
- showTimeframes && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
10991
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("div", { className: "flex shrink-0 items-center gap-1", children: [
10992
+ (showTimeframes || showFilters) && /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("div", { className: "flex items-center gap-0.5", children: [
10993
+ showFilters && /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(ChartFiltersMenu, { filters, active: activeFilters ?? [], onChange: onFiltersChange }),
10994
+ showTimeframes && /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
10752
10995
  ChartTimeframeMenu,
10753
10996
  {
10754
10997
  timeframes,
@@ -10757,7 +11000,7 @@ function ChartHeader({
10757
11000
  }
10758
11001
  )
10759
11002
  ] }),
10760
- /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
11003
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
10761
11004
  ChartViewToggle,
10762
11005
  {
10763
11006
  view,
@@ -10773,13 +11016,13 @@ function ChartHeader({
10773
11016
  );
10774
11017
  }
10775
11018
  function ChartLegendRow({ children }) {
10776
- return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("div", { "data-slot": "chart-legend-row", children });
11019
+ return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("div", { "data-slot": "chart-legend-row", children });
10777
11020
  }
10778
11021
  function ChartDataTable({ label, table }) {
10779
- return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(Table, { children: [
10780
- /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("caption", { className: "sr-only", children: label }),
10781
- /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(TableHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(TableRow, { children: table.columns.map((column, index) => /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(TableHead, { className: index > 0 ? "text-right" : void 0, children: column }, index)) }) }),
10782
- /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(TableBody, { children: table.rows.map((row, rowIndex) => /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(TableRow, { children: row.map((cell, cellIndex) => /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(TableCell, { className: cellIndex > 0 ? "text-right tabular-nums" : void 0, children: cell }, cellIndex)) }, rowIndex)) })
11022
+ return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(Table, { children: [
11023
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("caption", { className: "sr-only", children: label }),
11024
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(TableHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(TableRow, { children: table.columns.map((column, index) => /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(TableHead, { className: index > 0 ? "text-right" : void 0, children: column }, index)) }) }),
11025
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(TableBody, { children: table.rows.map((row, rowIndex) => /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(TableRow, { children: row.map((cell, cellIndex) => /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(TableCell, { className: cellIndex > 0 ? "text-right tabular-nums" : void 0, children: cell }, cellIndex)) }, rowIndex)) })
10783
11026
  ] });
10784
11027
  }
10785
11028
  function ChartFrame({
@@ -10793,18 +11036,18 @@ function ChartFrame({
10793
11036
  ...head
10794
11037
  }) {
10795
11038
  const [view, setView] = (0, import_react32.useState)("chart");
10796
- return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("figure", { "data-slot": "chart", "aria-label": label, className: cn("m-0 min-w-0 space-y-3", className), children: [
10797
- scale && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("p", { "data-slot": "chart-scale", className: "sr-only", children: scale }),
10798
- /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(ChartHeader, { ...head, view, onViewChange: setView }),
10799
- view === "chart" ? children : /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(ChartDataTable, { label, table }),
10800
- view === "chart" && legend && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(ChartLegendRow, { children: legend }),
10801
- /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("p", { "aria-live": "polite", className: "sr-only", children: announcement ?? "" })
11039
+ return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("figure", { "data-slot": "chart", "aria-label": label, className: cn("m-0 min-w-0 space-y-3", className), children: [
11040
+ scale && /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("p", { "data-slot": "chart-scale", className: "sr-only", children: scale }),
11041
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(ChartHeader, { ...head, view, onViewChange: setView }),
11042
+ view === "chart" ? children : /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(ChartDataTable, { label, table }),
11043
+ view === "chart" && legend && /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(ChartLegendRow, { children: legend }),
11044
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("p", { "aria-live": "polite", className: "sr-only", children: announcement ?? "" })
10802
11045
  ] });
10803
11046
  }
10804
11047
  var plotClass = "relative w-full min-w-0 rounded-xl outline-none transition-shadow duration-200 focus-visible:ring-2 focus-visible:ring-primary/50 focus-visible:shadow-glow-primary-soft";
10805
11048
 
10806
11049
  // src/web/components/trend-chart.tsx
10807
- var import_jsx_runtime117 = require("react/jsx-runtime");
11050
+ var import_jsx_runtime118 = require("react/jsx-runtime");
10808
11051
  var toneFill = {
10809
11052
  // The charts' green, so every chart draws the same one.
10810
11053
  primary: "var(--series-1)",
@@ -10914,7 +11157,7 @@ function TrendChart({
10914
11157
  },
10915
11158
  [active, count3]
10916
11159
  );
10917
- if (count3 === 0) return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(import_jsx_runtime117.Fragment, { children: empty ?? null });
11160
+ if (count3 === 0) return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(import_jsx_runtime118.Fragment, { children: empty ?? null });
10918
11161
  const textures = series.map((s) => s.texture);
10919
11162
  const totals = points.map(
10920
11163
  (point) => series.reduce((sum, s) => sum + Math.max(0, point.values[s.id] ?? 0), 0)
@@ -10947,15 +11190,15 @@ function TrendChart({
10947
11190
  const activeTitle = activePoint ? activePoint.detail ?? activePoint.label : "";
10948
11191
  const containerWidth = containerRef.current?.clientWidth ?? width;
10949
11192
  const toContainer = width > 0 ? containerWidth / width : 1;
10950
- return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(
11193
+ return /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(
10951
11194
  "figure",
10952
11195
  {
10953
11196
  "data-slot": "trend-chart",
10954
11197
  "aria-label": label,
10955
11198
  className: cn("m-0 min-w-0 space-y-2", className),
10956
11199
  children: [
10957
- /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(ChartHeader, { ...head, view, onViewChange: setView }),
10958
- view === "table" && /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
11200
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(ChartHeader, { ...head, view, onViewChange: setView }),
11201
+ view === "table" && /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
10959
11202
  ChartDataTable,
10960
11203
  {
10961
11204
  label,
@@ -10969,8 +11212,8 @@ function TrendChart({
10969
11212
  }
10970
11213
  }
10971
11214
  ),
10972
- /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("p", { id: readoutId, "data-slot": "trend-chart-readout", "aria-live": "polite", className: "sr-only", children: activePoint ? tooltipText(activeTitle, activeRows) : "" }),
10973
- /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(
11215
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("p", { id: readoutId, "data-slot": "trend-chart-readout", "aria-live": "polite", className: "sr-only", children: activePoint ? tooltipText(activeTitle, activeRows) : "" }),
11216
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(
10974
11217
  "div",
10975
11218
  {
10976
11219
  ref: containerRef,
@@ -10985,7 +11228,7 @@ function TrendChart({
10985
11228
  onBlur: () => setActive(null),
10986
11229
  className: "relative mt-5 w-full min-w-0 rounded-xl outline-none transition-shadow focus-visible:ring-2 focus-visible:ring-primary/50 focus-visible:shadow-glow-primary-soft",
10987
11230
  children: [
10988
- /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(
11231
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(
10989
11232
  "svg",
10990
11233
  {
10991
11234
  width: "100%",
@@ -10996,11 +11239,11 @@ function TrendChart({
10996
11239
  onPointerLeave: () => setActive(null),
10997
11240
  "aria-hidden": "true",
10998
11241
  children: [
10999
- /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("defs", { children: series.map(
11000
- (s, index) => textures[index] === "hatch" ? /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Texture, { id: `${idBase}-hatch-${index}`, tone: s.tone, texture: "hatch" }, s.id) : /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(SolidFill, { id: `${idBase}-fill-${index}`, tone: s.tone }, s.id)
11242
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("defs", { children: series.map(
11243
+ (s, index) => textures[index] === "hatch" ? /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(Texture, { id: `${idBase}-hatch-${index}`, tone: s.tone, texture: "hatch" }, s.id) : /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(SolidFill, { id: `${idBase}-fill-${index}`, tone: s.tone }, s.id)
11001
11244
  ) }),
11002
- /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("g", { "data-slot": "trend-chart-y-axis", children: ticks.map((tick, index) => /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("g", { children: [
11003
- /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
11245
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("g", { "data-slot": "trend-chart-y-axis", children: ticks.map((tick, index) => /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("g", { children: [
11246
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
11004
11247
  "line",
11005
11248
  {
11006
11249
  x1: plotLeft,
@@ -11011,7 +11254,7 @@ function TrendChart({
11011
11254
  strokeDasharray: tick === 0 ? void 0 : "2 3"
11012
11255
  }
11013
11256
  ),
11014
- /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
11257
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
11015
11258
  "text",
11016
11259
  {
11017
11260
  x: plotLeft - 6,
@@ -11025,7 +11268,7 @@ function TrendChart({
11025
11268
  }
11026
11269
  )
11027
11270
  ] }, tick)) }),
11028
- active !== null && /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
11271
+ active !== null && /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
11029
11272
  "rect",
11030
11273
  {
11031
11274
  "data-slot": "trend-chart-active",
@@ -11037,9 +11280,9 @@ function TrendChart({
11037
11280
  opacity: 0.14
11038
11281
  }
11039
11282
  ),
11040
- /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("g", { "data-slot": "trend-chart-bars", children: points.map((point, pointIndex) => {
11283
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("g", { "data-slot": "trend-chart-bars", children: points.map((point, pointIndex) => {
11041
11284
  let base = 0;
11042
- return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("g", { "data-period": point.key, children: [
11285
+ return /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("g", { "data-period": point.key, children: [
11043
11286
  series.map((s, seriesIndex) => {
11044
11287
  const value = point.values[s.id] ?? 0;
11045
11288
  if (value <= 0) return null;
@@ -11049,7 +11292,7 @@ function TrendChart({
11049
11292
  base += value;
11050
11293
  const isTop = series.slice(seriesIndex + 1).every((next) => (point.values[next.id] ?? 0) <= 0);
11051
11294
  const hatched = textures[seriesIndex] === "hatch";
11052
- return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
11295
+ return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
11053
11296
  "path",
11054
11297
  {
11055
11298
  "data-series": s.id,
@@ -11067,7 +11310,7 @@ function TrendChart({
11067
11310
  s.id
11068
11311
  );
11069
11312
  }),
11070
- /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
11313
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
11071
11314
  "rect",
11072
11315
  {
11073
11316
  x: plotLeft + pointIndex * band,
@@ -11080,7 +11323,7 @@ function TrendChart({
11080
11323
  )
11081
11324
  ] }, point.key);
11082
11325
  }) }),
11083
- /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("g", { "data-slot": "trend-chart-x-axis", children: labelIndices.map((index) => /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
11326
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("g", { "data-slot": "trend-chart-x-axis", children: labelIndices.map((index) => /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
11084
11327
  "text",
11085
11328
  {
11086
11329
  x: plotLeft + index * band + band / 2,
@@ -11095,7 +11338,7 @@ function TrendChart({
11095
11338
  ]
11096
11339
  }
11097
11340
  ),
11098
- activePoint && /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
11341
+ activePoint && /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
11099
11342
  ChartTooltip,
11100
11343
  {
11101
11344
  title: activeTitle,
@@ -11109,16 +11352,16 @@ function TrendChart({
11109
11352
  ]
11110
11353
  }
11111
11354
  ),
11112
- view === "chart" && /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(ChartLegendRow, { children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
11355
+ view === "chart" && /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(ChartLegendRow, { children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
11113
11356
  ChartLegend,
11114
11357
  {
11115
11358
  items: styledSeries.map((s, index) => ({
11116
11359
  id: s.id,
11117
11360
  label: s.label,
11118
11361
  color: toneFill[s.tone],
11119
- swatch: /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("svg", { width: "12", height: "12", "aria-hidden": "true", className: "shrink-0", children: [
11120
- /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Texture, { id: `${idBase}-legend-${index}`, tone: s.tone, texture: s.texture }),
11121
- /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
11362
+ swatch: /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("svg", { width: "12", height: "12", "aria-hidden": "true", className: "shrink-0", children: [
11363
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(Texture, { id: `${idBase}-legend-${index}`, tone: s.tone, texture: s.texture }),
11364
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
11122
11365
  "rect",
11123
11366
  {
11124
11367
  width: "12",
@@ -11133,7 +11376,7 @@ function TrendChart({
11133
11376
  ...visibility.legend
11134
11377
  }
11135
11378
  ) }),
11136
- /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("p", { "data-slot": "trend-chart-scale", className: "sr-only", children: [
11379
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("p", { "data-slot": "trend-chart-scale", className: "sr-only", children: [
11137
11380
  scaleLabel,
11138
11381
  " \xB7 linear, from 0"
11139
11382
  ] })
@@ -11142,9 +11385,16 @@ function TrendChart({
11142
11385
  );
11143
11386
  }
11144
11387
  function SolidFill({ id, tone }) {
11145
- return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("linearGradient", { id, x1: "0", y1: "0", x2: "0", y2: "1", children: [
11146
- /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("stop", { offset: "0%", style: { stopColor: `color-mix(in oklab, ${toneFill[tone]}, white 35%)` } }),
11147
- /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("stop", { offset: "100%", style: { stopColor: toneFill[tone] } })
11388
+ const danger = tone === "danger";
11389
+ return /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("linearGradient", { id, x1: "0", y1: "0", x2: "0", y2: "1", children: [
11390
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
11391
+ "stop",
11392
+ {
11393
+ offset: "0%",
11394
+ style: { stopColor: danger ? `color-mix(in srgb, ${toneFill[tone]}, white 12%)` : `color-mix(in oklab, ${toneFill[tone]}, white 35%)` }
11395
+ }
11396
+ ),
11397
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("stop", { offset: "100%", style: { stopColor: danger ? `color-mix(in srgb, ${toneFill[tone]}, black 22%)` : toneFill[tone] } })
11148
11398
  ] });
11149
11399
  }
11150
11400
  function Texture({
@@ -11153,15 +11403,15 @@ function Texture({
11153
11403
  texture
11154
11404
  }) {
11155
11405
  if (texture !== "hatch") return null;
11156
- return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)("pattern", { id, width: "4", height: "4", patternUnits: "userSpaceOnUse", patternTransform: "rotate(45)", children: [
11157
- /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("rect", { width: "4", height: "4", fill: toneFill[tone], opacity: 0.25 }),
11158
- /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("rect", { width: "2", height: "4", fill: toneFill[tone] })
11406
+ return /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("pattern", { id, width: "4", height: "4", patternUnits: "userSpaceOnUse", patternTransform: "rotate(45)", children: [
11407
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("rect", { width: "4", height: "4", fill: toneFill[tone], opacity: 0.25 }),
11408
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("rect", { width: "2", height: "4", fill: toneFill[tone] })
11159
11409
  ] });
11160
11410
  }
11161
11411
 
11162
11412
  // src/web/components/charts/line-chart.tsx
11163
11413
  var import_react34 = require("react");
11164
- var import_jsx_runtime118 = require("react/jsx-runtime");
11414
+ var import_jsx_runtime119 = require("react/jsx-runtime");
11165
11415
  var MARGIN2 = { top: 12, right: 16, bottom: 26, left: 8 };
11166
11416
  function LineChart({
11167
11417
  data,
@@ -11183,7 +11433,7 @@ function LineChart({
11183
11433
  const series = allSeries.filter((s) => visibility.isVisible(s.id));
11184
11434
  const slotOf = (id) => allSeries.findIndex((s) => s.id === id);
11185
11435
  const count3 = data.length;
11186
- if (count3 === 0 || series.length === 0) return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(import_jsx_runtime118.Fragment, { children: empty ?? null });
11436
+ if (count3 === 0 || series.length === 0) return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(import_jsx_runtime119.Fragment, { children: empty ?? null });
11187
11437
  const max = Math.max(0, ...data.flatMap((d) => series.map((s) => d.values[s.id] ?? 0)));
11188
11438
  const ticks = chartValueTicks(max, { integer });
11189
11439
  const tickLabels = ticks.map(formatValue);
@@ -11220,14 +11470,14 @@ function LineChart({
11220
11470
  });
11221
11471
  };
11222
11472
  const activeDatum = active === null ? null : data[active];
11223
- return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
11473
+ return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
11224
11474
  ChartFrame,
11225
11475
  {
11226
11476
  ...head,
11227
11477
  label,
11228
11478
  className,
11229
11479
  scale: `${scaleLabel} \xB7 linear, from 0`,
11230
- legend: allSeries.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
11480
+ legend: allSeries.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
11231
11481
  ChartLegend,
11232
11482
  {
11233
11483
  keyShape: "line",
@@ -11240,7 +11490,7 @@ function LineChart({
11240
11490
  rows: data.map((d) => [d.detail ?? d.label, ...series.map((s) => formatValue(d.values[s.id] ?? 0))])
11241
11491
  },
11242
11492
  announcement: activeDatum ? tooltipText(activeDatum.detail ?? activeDatum.label, rowsAt(active)) : void 0,
11243
- children: /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(
11493
+ children: /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(
11244
11494
  "div",
11245
11495
  {
11246
11496
  ref: containerRef,
@@ -11252,7 +11502,7 @@ function LineChart({
11252
11502
  onBlur: () => setActive(null),
11253
11503
  className: plotClass,
11254
11504
  children: [
11255
- /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(
11505
+ /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(
11256
11506
  "svg",
11257
11507
  {
11258
11508
  width: "100%",
@@ -11263,13 +11513,13 @@ function LineChart({
11263
11513
  onPointerMove,
11264
11514
  onPointerLeave: () => setActive(null),
11265
11515
  children: [
11266
- showArea && /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("linearGradient", { id: `${idBase}-wash`, x1: "0", x2: "0", y1: "0", y2: "1", children: [
11267
- /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("stop", { offset: "0", stopColor: seriesColor(0), stopOpacity: "0.14" }),
11268
- /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("stop", { offset: "1", stopColor: seriesColor(0), stopOpacity: "0.04" })
11516
+ showArea && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)("linearGradient", { id: `${idBase}-wash`, x1: "0", x2: "0", y1: "0", y2: "1", children: [
11517
+ /* @__PURE__ */ (0, import_jsx_runtime119.jsx)("stop", { offset: "0", stopColor: seriesColor(0), stopOpacity: "0.14" }),
11518
+ /* @__PURE__ */ (0, import_jsx_runtime119.jsx)("stop", { offset: "1", stopColor: seriesColor(0), stopOpacity: "0.04" })
11269
11519
  ] }) }),
11270
- /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("g", { "data-slot": "chart-y-axis", children: ticks.map((tick, index) => /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("g", { children: [
11271
- /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("line", { x1: plotLeft, x2: plotRight, y1: y(tick), y2: y(tick), stroke: "var(--border)" }),
11272
- /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
11520
+ /* @__PURE__ */ (0, import_jsx_runtime119.jsx)("g", { "data-slot": "chart-y-axis", children: ticks.map((tick, index) => /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)("g", { children: [
11521
+ /* @__PURE__ */ (0, import_jsx_runtime119.jsx)("line", { x1: plotLeft, x2: plotRight, y1: y(tick), y2: y(tick), stroke: "var(--border)" }),
11522
+ /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
11273
11523
  "text",
11274
11524
  {
11275
11525
  x: plotLeft - 8,
@@ -11283,7 +11533,7 @@ function LineChart({
11283
11533
  }
11284
11534
  )
11285
11535
  ] }, tick)) }),
11286
- showArea && /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
11536
+ showArea && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
11287
11537
  "path",
11288
11538
  {
11289
11539
  "data-slot": "chart-area",
@@ -11291,7 +11541,7 @@ function LineChart({
11291
11541
  fill: `url(#${idBase}-wash)`
11292
11542
  }
11293
11543
  ),
11294
- /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("g", { "data-slot": "chart-lines", children: series.map((s, slot) => /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
11544
+ /* @__PURE__ */ (0, import_jsx_runtime119.jsx)("g", { "data-slot": "chart-lines", children: series.map((s, slot) => /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
11295
11545
  "path",
11296
11546
  {
11297
11547
  "data-series": s.id,
@@ -11304,7 +11554,7 @@ function LineChart({
11304
11554
  },
11305
11555
  s.id
11306
11556
  )) }),
11307
- /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("g", { "data-slot": "chart-end-markers", children: series.map((s, slot) => /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
11557
+ /* @__PURE__ */ (0, import_jsx_runtime119.jsx)("g", { "data-slot": "chart-end-markers", children: series.map((s, slot) => /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
11308
11558
  "circle",
11309
11559
  {
11310
11560
  cx: x(count3 - 1),
@@ -11316,9 +11566,9 @@ function LineChart({
11316
11566
  },
11317
11567
  s.id
11318
11568
  )) }),
11319
- active !== null && /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)("g", { "data-slot": "chart-crosshair", children: [
11320
- /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("line", { x1: x(active), x2: x(active), y1: plotTop, y2: plotBottom, stroke: "var(--muted-foreground)", strokeWidth: 1 }),
11321
- series.map((s, slot) => /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
11569
+ active !== null && /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)("g", { "data-slot": "chart-crosshair", children: [
11570
+ /* @__PURE__ */ (0, import_jsx_runtime119.jsx)("line", { x1: x(active), x2: x(active), y1: plotTop, y2: plotBottom, stroke: "var(--muted-foreground)", strokeWidth: 1 }),
11571
+ series.map((s, slot) => /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
11322
11572
  "circle",
11323
11573
  {
11324
11574
  cx: x(active),
@@ -11331,7 +11581,7 @@ function LineChart({
11331
11581
  s.id
11332
11582
  ))
11333
11583
  ] }),
11334
- /* @__PURE__ */ (0, import_jsx_runtime118.jsx)("g", { "data-slot": "chart-x-axis", children: labelIndices.map((index) => /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
11584
+ /* @__PURE__ */ (0, import_jsx_runtime119.jsx)("g", { "data-slot": "chart-x-axis", children: labelIndices.map((index) => /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
11335
11585
  "text",
11336
11586
  {
11337
11587
  x: x(index),
@@ -11346,7 +11596,7 @@ function LineChart({
11346
11596
  ]
11347
11597
  }
11348
11598
  ),
11349
- activeDatum && /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
11599
+ activeDatum && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
11350
11600
  ChartTooltip,
11351
11601
  {
11352
11602
  title: activeDatum.detail ?? activeDatum.label,
@@ -11363,12 +11613,12 @@ function LineChart({
11363
11613
  );
11364
11614
  }
11365
11615
  function AreaChart2(props) {
11366
- return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(LineChart, { ...props, area: true, className: cn(props.className) });
11616
+ return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(LineChart, { ...props, area: true, className: cn(props.className) });
11367
11617
  }
11368
11618
 
11369
11619
  // src/web/components/charts/bar-chart.tsx
11370
11620
  var import_react35 = require("react");
11371
- var import_jsx_runtime119 = require("react/jsx-runtime");
11621
+ var import_jsx_runtime120 = require("react/jsx-runtime");
11372
11622
  var MAX_BAR = 24;
11373
11623
  var GAP = BAR_GAP;
11374
11624
  function BarChart2({
@@ -11391,7 +11641,7 @@ function BarChart2({
11391
11641
  const series = allSeries.filter((s) => visibility.isVisible(s.id));
11392
11642
  const slotOf = (id) => allSeries.findIndex((s) => s.id === id);
11393
11643
  const count3 = data.length;
11394
- if (count3 === 0 || series.length === 0) return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(import_jsx_runtime119.Fragment, { children: empty ?? null });
11644
+ if (count3 === 0 || series.length === 0) return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_jsx_runtime120.Fragment, { children: empty ?? null });
11395
11645
  const stacked = layout === "stacked";
11396
11646
  const horizontal = orientation === "horizontal";
11397
11647
  const totals = data.map((d) => series.reduce((sum, s) => sum + Math.max(0, d.values[s.id] ?? 0), 0));
@@ -11444,11 +11694,11 @@ function BarChart2({
11444
11694
  const across = stacked ? groupStart : groupStart + slot * (barThickness + GAP);
11445
11695
  const seam = stacked && offset > 0 ? GAP : 0;
11446
11696
  const path = horizontal ? barPath(plotLeft + offset + seam, across, Math.max(0.5, length - seam), barThickness, isLastInStack ? "right" : "none") : barPath(across, plotBottom - offset - length, barThickness, Math.max(0.5, length - seam), isLastInStack ? "top" : "none");
11447
- marks.push(/* @__PURE__ */ (0, import_jsx_runtime119.jsx)("path", { "data-series": s.id, d: path, fill: seriesColor(slotOf(s.id)) }, s.id));
11697
+ marks.push(/* @__PURE__ */ (0, import_jsx_runtime120.jsx)("path", { "data-series": s.id, d: path, fill: seriesColor(slotOf(s.id)) }, s.id));
11448
11698
  });
11449
- return /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)("g", { "data-category": d.key, opacity: active !== null && active !== index ? 0.55 : 1, children: [
11699
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)("g", { "data-category": d.key, opacity: active !== null && active !== index ? 0.55 : 1, children: [
11450
11700
  marks,
11451
- /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
11701
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
11452
11702
  "rect",
11453
11703
  {
11454
11704
  x: horizontal ? plotLeft : bandStart,
@@ -11464,14 +11714,14 @@ function BarChart2({
11464
11714
  const labelIndices = horizontal ? data.map((_, index) => index) : chartLabelIndices(count3, plotWidth / 56);
11465
11715
  const activeDatum = active === null ? null : data[active];
11466
11716
  const tooltipAnchor = active === null ? { x: 0, y: 0 } : horizontal ? { x: plotLeft + scale(stacked ? totals[active] : Math.max(...series.map((s) => data[active].values[s.id] ?? 0))), y: plotTop + active * bandSize } : { x: plotLeft + (active + 0.5) * bandSize, y: plotTop };
11467
- return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
11717
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
11468
11718
  ChartFrame,
11469
11719
  {
11470
11720
  ...head,
11471
11721
  label,
11472
11722
  className,
11473
11723
  scale: `${scaleLabel} \xB7 linear, from 0`,
11474
- legend: allSeries.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
11724
+ legend: allSeries.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
11475
11725
  ChartLegend,
11476
11726
  {
11477
11727
  items: allSeries.map((s, slot) => ({ id: s.id, label: s.label, color: seriesColor(slot) })),
@@ -11491,7 +11741,7 @@ function BarChart2({
11491
11741
  ])
11492
11742
  },
11493
11743
  announcement: activeDatum ? tooltipText(activeDatum.detail ?? activeDatum.label, rowsAt(active)) : void 0,
11494
- children: /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(
11744
+ children: /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(
11495
11745
  "div",
11496
11746
  {
11497
11747
  ref: containerRef,
@@ -11504,12 +11754,12 @@ function BarChart2({
11504
11754
  onPointerLeave: () => setActive(null),
11505
11755
  className: plotClass,
11506
11756
  children: [
11507
- /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)("svg", { width: "100%", height: svgHeight, viewBox: `0 0 ${width} ${svgHeight}`, className: "block overflow-visible", "aria-hidden": "true", children: [
11508
- /* @__PURE__ */ (0, import_jsx_runtime119.jsx)("g", { "data-slot": "chart-value-axis", children: ticks.map((tick, index) => {
11757
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)("svg", { width: "100%", height: svgHeight, viewBox: `0 0 ${width} ${svgHeight}`, className: "block overflow-visible", "aria-hidden": "true", children: [
11758
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("g", { "data-slot": "chart-value-axis", children: ticks.map((tick, index) => {
11509
11759
  const at = horizontal ? plotLeft + scale(tick) : plotBottom - scale(tick);
11510
- return /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)("g", { children: [
11511
- horizontal ? /* @__PURE__ */ (0, import_jsx_runtime119.jsx)("line", { x1: at, x2: at, y1: plotTop, y2: plotBottom, stroke: "var(--border)" }) : /* @__PURE__ */ (0, import_jsx_runtime119.jsx)("line", { x1: plotLeft, x2: plotRight, y1: at, y2: at, stroke: "var(--border)" }),
11512
- /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
11760
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)("g", { children: [
11761
+ horizontal ? /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("line", { x1: at, x2: at, y1: plotTop, y2: plotBottom, stroke: "var(--border)" }) : /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("line", { x1: plotLeft, x2: plotRight, y1: at, y2: at, stroke: "var(--border)" }),
11762
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
11513
11763
  "text",
11514
11764
  {
11515
11765
  x: horizontal ? at : plotLeft - 8,
@@ -11524,8 +11774,8 @@ function BarChart2({
11524
11774
  )
11525
11775
  ] }, tick);
11526
11776
  }) }),
11527
- /* @__PURE__ */ (0, import_jsx_runtime119.jsx)("g", { "data-slot": "chart-bars", children: bars }),
11528
- /* @__PURE__ */ (0, import_jsx_runtime119.jsx)("g", { "data-slot": "chart-category-axis", children: labelIndices.map((index) => /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
11777
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("g", { "data-slot": "chart-bars", children: bars }),
11778
+ /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("g", { "data-slot": "chart-category-axis", children: labelIndices.map((index) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
11529
11779
  "text",
11530
11780
  {
11531
11781
  x: horizontal ? plotLeft - 8 : plotLeft + (index + 0.5) * bandSize,
@@ -11539,7 +11789,7 @@ function BarChart2({
11539
11789
  data[index].key
11540
11790
  )) })
11541
11791
  ] }),
11542
- activeDatum && /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
11792
+ activeDatum && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
11543
11793
  ChartTooltip,
11544
11794
  {
11545
11795
  title: activeDatum.detail ?? activeDatum.label,
@@ -11558,7 +11808,7 @@ function BarChart2({
11558
11808
 
11559
11809
  // src/web/components/charts/mixed-chart.tsx
11560
11810
  var import_react36 = require("react");
11561
- var import_jsx_runtime120 = require("react/jsx-runtime");
11811
+ var import_jsx_runtime121 = require("react/jsx-runtime");
11562
11812
  var MARK_VIEWS = {
11563
11813
  bar: { value: "bar", label: "Bars", icon: "bar_chart" },
11564
11814
  stacked: { value: "stacked", label: "Stacked bars", icon: "stacked_bar_chart" },
@@ -11571,12 +11821,12 @@ var MAX_BAR_GROUP = 56;
11571
11821
  var ALL_MARKS = ["bar", "stacked", "line", "area", "dots"];
11572
11822
  function MarkSwatch({ mark, color }) {
11573
11823
  if (mark === "area") {
11574
- return /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)("svg", { width: "12", height: "12", "aria-hidden": "true", className: "shrink-0", children: [
11575
- /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("rect", { width: "12", height: "12", rx: "3", fill: color, fillOpacity: "0.25" }),
11576
- /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("line", { x1: "1", x2: "11", y1: "3", y2: "3", stroke: color, strokeWidth: "2", strokeLinecap: "round" })
11824
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)("svg", { width: "12", height: "12", "aria-hidden": "true", className: "shrink-0", children: [
11825
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("rect", { width: "12", height: "12", rx: "3", fill: color, fillOpacity: "0.25" }),
11826
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("line", { x1: "1", x2: "11", y1: "3", y2: "3", stroke: color, strokeWidth: "2", strokeLinecap: "round" })
11577
11827
  ] });
11578
11828
  }
11579
- return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(LegendSwatch, { color, shape: mark === "line" ? "line" : mark === "dots" ? "dot" : "rect" });
11829
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(LegendSwatch, { color, shape: mark === "line" ? "line" : mark === "dots" ? "dot" : "rect" });
11580
11830
  }
11581
11831
  function MixedChart({
11582
11832
  data,
@@ -11600,7 +11850,7 @@ function MixedChart({
11600
11850
  const series = allSeries.filter((s) => visibility.isVisible(s.id));
11601
11851
  const colorOf = (id) => seriesColor(allSeries.findIndex((s) => s.id === id));
11602
11852
  const count3 = data.length;
11603
- if (count3 === 0 || allSeries.length === 0) return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(import_jsx_runtime120.Fragment, { children: empty ?? null });
11853
+ if (count3 === 0 || allSeries.length === 0) return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(import_jsx_runtime121.Fragment, { children: empty ?? null });
11604
11854
  const totals = data.map((d) => series.reduce((sum, s) => sum + Math.max(0, d.values[s.id] ?? 0), 0));
11605
11855
  const max = mark === "stacked" ? Math.max(0, ...totals) : Math.max(0, ...data.flatMap((d) => series.map((s) => d.values[s.id] ?? 0)));
11606
11856
  const ticks = chartValueTicks(max, { integer });
@@ -11639,7 +11889,7 @@ function MixedChart({
11639
11889
  });
11640
11890
  };
11641
11891
  const activeDatum = active === null ? null : data[active];
11642
- const strokeFor = (s) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
11892
+ const strokeFor = (s) => /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
11643
11893
  "path",
11644
11894
  {
11645
11895
  "data-series": s.id,
@@ -11663,7 +11913,7 @@ function MixedChart({
11663
11913
  const bottom = mark === "stacked" ? y(stackTop) : plotBottom;
11664
11914
  if (mark === "stacked") stackTop += value;
11665
11915
  const barTop = mark === "stacked" ? y(stackTop) : y(value);
11666
- return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
11916
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
11667
11917
  "rect",
11668
11918
  {
11669
11919
  "data-series": s.id,
@@ -11681,11 +11931,11 @@ function MixedChart({
11681
11931
  });
11682
11932
  }
11683
11933
  if (mark === "dots") {
11684
- return series.map((s) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("g", { "data-series": s.id, "data-mark": "dots", children: data.map((d, index) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("circle", { cx: x(index), cy: y(d.values[s.id] ?? 0), r: 4, fill: colorOf(s.id), stroke: "var(--card)", strokeWidth: 1.5 }, d.key)) }, s.id));
11934
+ return series.map((s) => /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("g", { "data-series": s.id, "data-mark": "dots", children: data.map((d, index) => /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("circle", { cx: x(index), cy: y(d.values[s.id] ?? 0), r: 4, fill: colorOf(s.id), stroke: "var(--card)", strokeWidth: 1.5 }, d.key)) }, s.id));
11685
11935
  }
11686
11936
  if (mark === "area") {
11687
- return /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(import_jsx_runtime120.Fragment, { children: [
11688
- series.map((s) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
11937
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_jsx_runtime121.Fragment, { children: [
11938
+ series.map((s) => /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
11689
11939
  "path",
11690
11940
  {
11691
11941
  d: `${pathFor(s.id)}L${x(count3 - 1)},${plotBottom}L${x(0)},${plotBottom}Z`,
@@ -11698,7 +11948,7 @@ function MixedChart({
11698
11948
  }
11699
11949
  return series.map(strokeFor);
11700
11950
  };
11701
- return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
11951
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
11702
11952
  ChartFrame,
11703
11953
  {
11704
11954
  ...head,
@@ -11708,14 +11958,14 @@ function MixedChart({
11708
11958
  label,
11709
11959
  className,
11710
11960
  scale: `${scaleLabel} \xB7 linear, from 0`,
11711
- legend: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
11961
+ legend: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
11712
11962
  ChartLegend,
11713
11963
  {
11714
11964
  items: allSeries.map((s) => ({
11715
11965
  id: s.id,
11716
11966
  label: s.label,
11717
11967
  color: colorOf(s.id),
11718
- swatch: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(MarkSwatch, { mark, color: colorOf(s.id) })
11968
+ swatch: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(MarkSwatch, { mark, color: colorOf(s.id) })
11719
11969
  })),
11720
11970
  ...visibility.legend
11721
11971
  }
@@ -11725,7 +11975,7 @@ function MixedChart({
11725
11975
  rows: data.map((d) => [d.detail ?? d.label, ...allSeries.map((s) => formatValue(d.values[s.id] ?? 0))])
11726
11976
  },
11727
11977
  announcement: activeDatum ? tooltipText(activeDatum.detail ?? activeDatum.label, rowsAt(active)) : void 0,
11728
- children: /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(
11978
+ children: /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(
11729
11979
  "div",
11730
11980
  {
11731
11981
  ref: containerRef,
@@ -11737,7 +11987,7 @@ function MixedChart({
11737
11987
  onBlur: () => setActive(null),
11738
11988
  className: plotClass,
11739
11989
  children: [
11740
- /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(
11990
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(
11741
11991
  "svg",
11742
11992
  {
11743
11993
  width: "100%",
@@ -11748,13 +11998,13 @@ function MixedChart({
11748
11998
  onPointerMove,
11749
11999
  onPointerLeave: () => setActive(null),
11750
12000
  children: [
11751
- /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("defs", { children: mark === "area" && series.map((s) => /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)("linearGradient", { id: `${idBase}-wash-${s.id}`, x1: "0", x2: "0", y1: "0", y2: "1", children: [
11752
- /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("stop", { offset: "0", stopColor: colorOf(s.id), stopOpacity: "0.22" }),
11753
- /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("stop", { offset: "1", stopColor: colorOf(s.id), stopOpacity: "0.03" })
12001
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("defs", { children: mark === "area" && series.map((s) => /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)("linearGradient", { id: `${idBase}-wash-${s.id}`, x1: "0", x2: "0", y1: "0", y2: "1", children: [
12002
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("stop", { offset: "0", stopColor: colorOf(s.id), stopOpacity: "0.22" }),
12003
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("stop", { offset: "1", stopColor: colorOf(s.id), stopOpacity: "0.03" })
11754
12004
  ] }, s.id)) }),
11755
- /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("g", { "data-slot": "chart-y-axis", children: ticks.map((tick, index) => /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)("g", { children: [
11756
- /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("line", { x1: plotLeft, x2: plotRight, y1: y(tick), y2: y(tick), stroke: "var(--border)" }),
11757
- /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
12005
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("g", { "data-slot": "chart-y-axis", children: ticks.map((tick, index) => /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)("g", { children: [
12006
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("line", { x1: plotLeft, x2: plotRight, y1: y(tick), y2: y(tick), stroke: "var(--border)" }),
12007
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
11758
12008
  "text",
11759
12009
  {
11760
12010
  x: plotLeft - 8,
@@ -11768,7 +12018,7 @@ function MixedChart({
11768
12018
  }
11769
12019
  )
11770
12020
  ] }, tick)) }),
11771
- active !== null && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
12021
+ active !== null && /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
11772
12022
  "rect",
11773
12023
  {
11774
12024
  "data-slot": "chart-active-band",
@@ -11780,8 +12030,8 @@ function MixedChart({
11780
12030
  fillOpacity: 0.08
11781
12031
  }
11782
12032
  ),
11783
- /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("g", { "data-slot": "chart-marks", "data-view": mark, children: marksLayer() }),
11784
- active !== null && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("g", { "data-slot": "chart-crosshair", children: (mark === "bar" || mark === "stacked" ? [] : series).map((s) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
12033
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("g", { "data-slot": "chart-marks", "data-view": mark, children: marksLayer() }),
12034
+ active !== null && /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("g", { "data-slot": "chart-crosshair", children: (mark === "bar" || mark === "stacked" ? [] : series).map((s) => /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
11785
12035
  "circle",
11786
12036
  {
11787
12037
  cx: x(active),
@@ -11793,7 +12043,7 @@ function MixedChart({
11793
12043
  },
11794
12044
  s.id
11795
12045
  )) }),
11796
- /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("g", { "data-slot": "chart-x-axis", children: labelIndices.map((index) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
12046
+ /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("g", { "data-slot": "chart-x-axis", children: labelIndices.map((index) => /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
11797
12047
  "text",
11798
12048
  {
11799
12049
  x: x(index),
@@ -11808,7 +12058,7 @@ function MixedChart({
11808
12058
  ]
11809
12059
  }
11810
12060
  ),
11811
- activeDatum && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
12061
+ activeDatum && /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
11812
12062
  ChartTooltip,
11813
12063
  {
11814
12064
  title: activeDatum.detail ?? activeDatum.label,
@@ -11826,7 +12076,7 @@ function MixedChart({
11826
12076
  }
11827
12077
 
11828
12078
  // src/web/components/charts/bar-list.tsx
11829
- var import_jsx_runtime121 = require("react/jsx-runtime");
12079
+ var import_jsx_runtime122 = require("react/jsx-runtime");
11830
12080
  function BarList({
11831
12081
  items,
11832
12082
  label,
@@ -11839,7 +12089,7 @@ function BarList({
11839
12089
  className,
11840
12090
  ...head
11841
12091
  }) {
11842
- if (items.length === 0) return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(import_jsx_runtime121.Fragment, { children: empty ?? null });
12092
+ if (items.length === 0) return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(import_jsx_runtime122.Fragment, { children: empty ?? null });
11843
12093
  const rows = sort === "desc" ? [...items].sort((a, b) => b.value - a.value) : items;
11844
12094
  const top = Math.max(max ?? 0, ...rows.map((item) => item.value), 0) || 1;
11845
12095
  const sum = rows.reduce((acc, item) => acc + Math.max(0, item.value), 0);
@@ -11847,7 +12097,7 @@ function BarList({
11847
12097
  const framed = head.title !== void 0 || (head.timeframes?.length ?? 0) > 0;
11848
12098
  const label_ = labelWidth ? `minmax(0,${labelWidth})` : "auto";
11849
12099
  const wideColumns = showPercent ? `${label_} 1fr auto auto` : `${label_} 1fr auto`;
11850
- const list = /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
12100
+ const list = /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
11851
12101
  "ol",
11852
12102
  {
11853
12103
  "data-slot": "bar-list",
@@ -11862,7 +12112,7 @@ function BarList({
11862
12112
  style: { "--bar-list-columns": wideColumns },
11863
12113
  children: rows.map((item) => {
11864
12114
  const share = Math.max(0, item.value) / top;
11865
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(
12115
+ return /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(
11866
12116
  "li",
11867
12117
  {
11868
12118
  "data-slot": "bar-list-row",
@@ -11873,13 +12123,13 @@ function BarList({
11873
12123
  "sm:col-span-full sm:grid-cols-subgrid sm:items-center sm:gap-y-0"
11874
12124
  ),
11875
12125
  children: [
11876
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: cn("min-w-0 truncate text-muted-foreground", !labelWidth && "sm:max-w-[10rem]"), children: item.label }),
11877
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
12126
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("span", { className: cn("min-w-0 truncate text-muted-foreground", !labelWidth && "sm:max-w-[10rem]"), children: item.label }),
12127
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
11878
12128
  "span",
11879
12129
  {
11880
12130
  className: "order-last col-span-full h-2 overflow-hidden rounded-full bg-primary/15 shadow-inner sm:order-none sm:col-span-1",
11881
12131
  "aria-hidden": "true",
11882
- children: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
12132
+ children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
11883
12133
  "span",
11884
12134
  {
11885
12135
  className: "block h-full rounded-full bg-primary bg-gradient-primary",
@@ -11892,8 +12142,8 @@ function BarList({
11892
12142
  )
11893
12143
  }
11894
12144
  ),
11895
- /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "whitespace-nowrap text-right font-semibold tabular-nums text-foreground", children: item.valueText ?? formatValue(item.value) }),
11896
- showPercent && /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("span", { className: "text-right tabular-nums text-muted-foreground", children: percentOf(item) })
12145
+ /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("span", { className: "whitespace-nowrap text-right font-semibold tabular-nums text-foreground", children: item.valueText ?? formatValue(item.value) }),
12146
+ showPercent && /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("span", { className: "text-right tabular-nums text-muted-foreground", children: percentOf(item) })
11897
12147
  ]
11898
12148
  },
11899
12149
  item.id
@@ -11902,7 +12152,7 @@ function BarList({
11902
12152
  }
11903
12153
  );
11904
12154
  if (!framed) return list;
11905
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
12155
+ return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
11906
12156
  ChartFrame,
11907
12157
  {
11908
12158
  ...head,
@@ -11925,7 +12175,7 @@ function formatPercent(fraction) {
11925
12175
 
11926
12176
  // src/web/components/charts/donut-chart.tsx
11927
12177
  var import_react37 = require("react");
11928
- var import_jsx_runtime122 = require("react/jsx-runtime");
12178
+ var import_jsx_runtime123 = require("react/jsx-runtime");
11929
12179
  var OTHER_ID = "__other";
11930
12180
  function foldSegments(segments) {
11931
12181
  const positive = segments.filter((s) => s.value > 0);
@@ -11963,7 +12213,7 @@ function DonutChart({
11963
12213
  const visibility = useSeriesVisibility(allParts.map((part) => part.id));
11964
12214
  const parts = allParts.filter((part) => visibility.isVisible(part.id));
11965
12215
  const total = parts.reduce((sum, s) => sum + s.value, 0);
11966
- if (parts.length === 0 || total <= 0) return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(import_jsx_runtime122.Fragment, { children: empty ?? null });
12216
+ if (parts.length === 0 || total <= 0) return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(import_jsx_runtime123.Fragment, { children: empty ?? null });
11967
12217
  const cx = size / 2;
11968
12218
  const cy = size / 2;
11969
12219
  const outer = size / 2 - 2;
@@ -11989,13 +12239,13 @@ function DonutChart({
11989
12239
  return next === void 0 ? current : next;
11990
12240
  });
11991
12241
  };
11992
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
12242
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
11993
12243
  ChartFrame,
11994
12244
  {
11995
12245
  ...head,
11996
12246
  label,
11997
12247
  className,
11998
- legend: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
12248
+ legend: /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
11999
12249
  ChartLegend,
12000
12250
  {
12001
12251
  items: allParts.map((part) => ({
@@ -12014,7 +12264,7 @@ function DonutChart({
12014
12264
  ]
12015
12265
  },
12016
12266
  announcement: activePart ? `${activePart.label}: ${formatValue(activePart.value)}, ${share(activePart.value)}` : void 0,
12017
- children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
12267
+ children: /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
12018
12268
  "div",
12019
12269
  {
12020
12270
  role: "group",
@@ -12025,8 +12275,8 @@ function DonutChart({
12025
12275
  onBlur: () => setActive(null),
12026
12276
  onPointerLeave: () => setActive(null),
12027
12277
  className: `${plotClass} flex justify-center py-4`,
12028
- children: /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, "aria-hidden": "true", className: "block max-w-full", children: [
12029
- arcs.map(({ part, start, end }, index) => /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
12278
+ children: /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, "aria-hidden": "true", className: "block max-w-full", children: [
12279
+ arcs.map(({ part, start, end }, index) => /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
12030
12280
  "path",
12031
12281
  {
12032
12282
  "data-segment": part.id,
@@ -12037,7 +12287,7 @@ function DonutChart({
12037
12287
  },
12038
12288
  part.id
12039
12289
  )),
12040
- /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
12290
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
12041
12291
  "text",
12042
12292
  {
12043
12293
  x: cx,
@@ -12049,7 +12299,7 @@ function DonutChart({
12049
12299
  children: formatValue(activePart ? activePart.value : total)
12050
12300
  }
12051
12301
  ),
12052
- /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("text", { x: cx, y: cy + 16, textAnchor: "middle", fontSize: 11, fill: "var(--muted-foreground)", children: activePart ? `${activePart.label} \xB7 ${share(activePart.value)}` : totalLabel })
12302
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("text", { x: cx, y: cy + 16, textAnchor: "middle", fontSize: 11, fill: "var(--muted-foreground)", children: activePart ? `${activePart.label} \xB7 ${share(activePart.value)}` : totalLabel })
12053
12303
  ] })
12054
12304
  }
12055
12305
  )
@@ -12059,7 +12309,7 @@ function DonutChart({
12059
12309
 
12060
12310
  // src/web/components/charts/scatter-chart.tsx
12061
12311
  var import_react38 = require("react");
12062
- var import_jsx_runtime123 = require("react/jsx-runtime");
12312
+ var import_jsx_runtime124 = require("react/jsx-runtime");
12063
12313
  var MARGIN4 = { top: 12, right: 16, bottom: 40, left: 8 };
12064
12314
  var HIT_RADIUS = 12;
12065
12315
  function ScatterChart({
@@ -12085,7 +12335,7 @@ function ScatterChart({
12085
12335
  );
12086
12336
  }
12087
12337
  const points = series.flatMap((s) => s.points.map((p) => ({ ...p, slot: slotOf(s.id), seriesLabel: s.label }))).sort((a, b) => a.x - b.x);
12088
- if (points.length === 0) return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(import_jsx_runtime123.Fragment, { children: empty ?? null });
12338
+ if (points.length === 0) return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(import_jsx_runtime124.Fragment, { children: empty ?? null });
12089
12339
  const xMax = Math.max(0, ...points.map((p) => p.x));
12090
12340
  const yMax = Math.max(0, ...points.map((p) => p.y));
12091
12341
  const xTicks = chartValueTicks(xMax);
@@ -12124,14 +12374,14 @@ function ScatterChart({
12124
12374
  };
12125
12375
  const activePoint = active === null ? null : points[active];
12126
12376
  const describe = (p) => `${p.label ?? p.seriesLabel}: ${xLabel} ${formatX(p.x)}, ${yLabel} ${formatY(p.y)}`;
12127
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
12377
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
12128
12378
  ChartFrame,
12129
12379
  {
12130
12380
  ...head,
12131
12381
  label,
12132
12382
  className,
12133
12383
  scale: `${yLabel} against ${xLabel} \xB7 both linear, from 0`,
12134
- legend: allSeries.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
12384
+ legend: allSeries.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
12135
12385
  ChartLegend,
12136
12386
  {
12137
12387
  keyShape: "dot",
@@ -12144,7 +12394,7 @@ function ScatterChart({
12144
12394
  rows: points.map((p) => [p.label ?? p.id, p.seriesLabel, formatX(p.x), formatY(p.y)])
12145
12395
  },
12146
12396
  announcement: activePoint ? describe(activePoint) : void 0,
12147
- children: /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(
12397
+ children: /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(
12148
12398
  "div",
12149
12399
  {
12150
12400
  ref: containerRef,
@@ -12156,7 +12406,7 @@ function ScatterChart({
12156
12406
  onBlur: () => setActive(null),
12157
12407
  className: plotClass,
12158
12408
  children: [
12159
- /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(
12409
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(
12160
12410
  "svg",
12161
12411
  {
12162
12412
  width: "100%",
@@ -12167,13 +12417,13 @@ function ScatterChart({
12167
12417
  onPointerMove,
12168
12418
  onPointerLeave: () => setActive(null),
12169
12419
  children: [
12170
- /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("g", { "data-slot": "chart-y-axis", children: yTicks.map((tick, index) => /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)("g", { children: [
12171
- /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("line", { x1: plotLeft, x2: plotRight, y1: sy(tick), y2: sy(tick), stroke: "var(--border)" }),
12172
- /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("text", { x: plotLeft - 8, y: sy(tick), dy: "0.32em", textAnchor: "end", fontSize: TICK_FONT, fill: "var(--muted-foreground)", style: { fontVariantNumeric: "tabular-nums" }, children: yTickLabels[index] })
12420
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("g", { "data-slot": "chart-y-axis", children: yTicks.map((tick, index) => /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)("g", { children: [
12421
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("line", { x1: plotLeft, x2: plotRight, y1: sy(tick), y2: sy(tick), stroke: "var(--border)" }),
12422
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("text", { x: plotLeft - 8, y: sy(tick), dy: "0.32em", textAnchor: "end", fontSize: TICK_FONT, fill: "var(--muted-foreground)", style: { fontVariantNumeric: "tabular-nums" }, children: yTickLabels[index] })
12173
12423
  ] }, tick)) }),
12174
- /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)("g", { "data-slot": "chart-x-axis", children: [
12175
- /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("line", { x1: plotLeft, x2: plotRight, y1: plotBottom, y2: plotBottom, stroke: "var(--border)" }),
12176
- xTicks.map((tick, index) => /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
12424
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)("g", { "data-slot": "chart-x-axis", children: [
12425
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("line", { x1: plotLeft, x2: plotRight, y1: plotBottom, y2: plotBottom, stroke: "var(--border)" }),
12426
+ xTicks.map((tick, index) => /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
12177
12427
  "text",
12178
12428
  {
12179
12429
  x: sx(tick),
@@ -12186,12 +12436,12 @@ function ScatterChart({
12186
12436
  },
12187
12437
  tick
12188
12438
  )),
12189
- /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)("text", { x: plotRight, y: plotBottom + 34, textAnchor: "end", fontSize: TICK_FONT, fill: "var(--muted-foreground)", children: [
12439
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)("text", { x: plotRight, y: plotBottom + 34, textAnchor: "end", fontSize: TICK_FONT, fill: "var(--muted-foreground)", children: [
12190
12440
  xLabel,
12191
12441
  " \u2192"
12192
12442
  ] })
12193
12443
  ] }),
12194
- /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("g", { "data-slot": "chart-points", children: points.map((p, index) => /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
12444
+ /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("g", { "data-slot": "chart-points", children: points.map((p, index) => /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
12195
12445
  "circle",
12196
12446
  {
12197
12447
  "data-series": allSeries[p.slot].id,
@@ -12208,7 +12458,7 @@ function ScatterChart({
12208
12458
  ]
12209
12459
  }
12210
12460
  ),
12211
- activePoint && /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
12461
+ activePoint && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
12212
12462
  ChartTooltip,
12213
12463
  {
12214
12464
  title: activePoint.label ?? activePoint.seriesLabel,
@@ -12230,7 +12480,7 @@ function ScatterChart({
12230
12480
 
12231
12481
  // src/web/components/charts/sparkline.tsx
12232
12482
  var import_react39 = require("react");
12233
- var import_jsx_runtime124 = require("react/jsx-runtime");
12483
+ var import_jsx_runtime125 = require("react/jsx-runtime");
12234
12484
  function Sparkline({ values, label, width = 96, height = 28, pulse = false, tone = "default", className }) {
12235
12485
  const fill = height === "fill";
12236
12486
  const boxRef = (0, import_react39.useRef)(null);
@@ -12250,13 +12500,13 @@ function Sparkline({ values, label, width = 96, height = 28, pulse = false, tone
12250
12500
  const min = Math.min(...values);
12251
12501
  const max = Math.max(...values);
12252
12502
  const span = max - min || 1;
12253
- const pad = 4;
12254
- const x = (index) => pad + index / (values.length - 1) * (width - pad * 2);
12255
- const y = (value) => h - pad - (value - min) / span * (h - pad * 2);
12503
+ const pad2 = 4;
12504
+ const x = (index) => pad2 + index / (values.length - 1) * (width - pad2 * 2);
12505
+ const y = (value) => h - pad2 - (value - min) / span * (h - pad2 * 2);
12256
12506
  const d = values.map((value, index) => `${index === 0 ? "M" : "L"}${x(index).toFixed(1)},${y(value).toFixed(1)}`).join("");
12257
12507
  const last = values.length - 1;
12258
12508
  const dot = tone === "negative" ? "var(--color-danger)" : "var(--series-1)";
12259
- const svg = /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(
12509
+ const svg = /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(
12260
12510
  "svg",
12261
12511
  {
12262
12512
  "data-slot": "sparkline",
@@ -12267,8 +12517,8 @@ function Sparkline({ values, label, width = 96, height = 28, pulse = false, tone
12267
12517
  viewBox: `0 0 ${width} ${h}`,
12268
12518
  className: cn("block shrink-0 overflow-visible", !fill && className, fill && "absolute inset-y-0 right-0"),
12269
12519
  children: [
12270
- /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("path", { d, fill: "none", stroke: "var(--muted-foreground)", strokeWidth: 1.5, strokeLinejoin: "round", strokeLinecap: "round" }),
12271
- pulse && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
12520
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("path", { d, fill: "none", stroke: "var(--muted-foreground)", strokeWidth: 1.5, strokeLinejoin: "round", strokeLinecap: "round" }),
12521
+ pulse && /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
12272
12522
  "circle",
12273
12523
  {
12274
12524
  "data-slot": "sparkline-pulse",
@@ -12281,16 +12531,16 @@ function Sparkline({ values, label, width = 96, height = 28, pulse = false, tone
12281
12531
  style: { transformBox: "fill-box", transformOrigin: "center" }
12282
12532
  }
12283
12533
  ),
12284
- /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("circle", { cx: x(last), cy: y(values[last]), r: 4, fill: dot, stroke: "var(--card)", strokeWidth: 2 })
12534
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("circle", { cx: x(last), cy: y(values[last]), r: 4, fill: dot, stroke: "var(--card)", strokeWidth: 2 })
12285
12535
  ]
12286
12536
  }
12287
12537
  );
12288
12538
  if (!fill) return svg;
12289
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("span", { ref: boxRef, className: cn("relative block h-full", className), style: { width }, children: svg });
12539
+ return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("span", { ref: boxRef, className: cn("relative block h-full", className), style: { width }, children: svg });
12290
12540
  }
12291
12541
 
12292
12542
  // src/web/components/charts/meter.tsx
12293
- var import_jsx_runtime125 = require("react/jsx-runtime");
12543
+ var import_jsx_runtime126 = require("react/jsx-runtime");
12294
12544
  function Meter({
12295
12545
  label,
12296
12546
  value,
@@ -12305,19 +12555,19 @@ function Meter({
12305
12555
  const fill = { normal: "bg-primary bg-gradient-primary", warning: "bg-warning bg-gradient-warning", danger: "bg-danger bg-gradient-danger" }[state];
12306
12556
  const track = { normal: "bg-primary/15", warning: "bg-warning/15", danger: "bg-danger/15" }[state];
12307
12557
  const percent = Math.round(ratio * 100);
12308
- return /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)("div", { "data-slot": "meter", "data-state": state, className: cn("space-y-1.5", className), children: [
12309
- /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)("div", { className: "flex items-baseline justify-between gap-3 text-caption", children: [
12310
- /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("span", { className: "text-muted-foreground", children: label }),
12311
- /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)("span", { className: "font-semibold tabular-nums text-foreground", children: [
12558
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)("div", { "data-slot": "meter", "data-state": state, className: cn("space-y-1.5", className), children: [
12559
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)("div", { className: "flex items-baseline justify-between gap-3 text-caption", children: [
12560
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("span", { className: "text-muted-foreground", children: label }),
12561
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)("span", { className: "font-semibold tabular-nums text-foreground", children: [
12312
12562
  formatValue(value),
12313
12563
  " ",
12314
- /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)("span", { className: "font-normal text-muted-foreground", children: [
12564
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)("span", { className: "font-normal text-muted-foreground", children: [
12315
12565
  "/ ",
12316
12566
  formatValue(max)
12317
12567
  ] })
12318
12568
  ] })
12319
12569
  ] }),
12320
- /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
12570
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
12321
12571
  "div",
12322
12572
  {
12323
12573
  role: "meter",
@@ -12327,18 +12577,18 @@ function Meter({
12327
12577
  "aria-valuetext": `${formatValue(value)} of ${formatValue(max)}, ${percent}%`,
12328
12578
  "aria-label": typeof label === "string" ? label : void 0,
12329
12579
  className: cn("h-2 overflow-hidden rounded-full shadow-inner", track),
12330
- children: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("div", { className: cn("h-full rounded-full transition-[width] duration-300 motion-reduce:transition-none", fill), style: { width: `${ratio * 100}%` } })
12580
+ children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("div", { className: cn("h-full rounded-full transition-[width] duration-300 motion-reduce:transition-none", fill), style: { width: `${ratio * 100}%` } })
12331
12581
  }
12332
12582
  ),
12333
- state !== "normal" && /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)("p", { className: cn("m-0 flex items-center gap-1 text-caption", state === "danger" ? "text-danger-fg" : "text-warning-fg"), children: [
12334
- /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(IconGlyph, { glyph: state === "danger" ? Error2 : Warning, className: "text-icon-sm" }),
12583
+ state !== "normal" && /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)("p", { className: cn("m-0 flex items-center gap-1 text-caption", state === "danger" ? "text-danger-fg" : "text-warning-fg"), children: [
12584
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(IconGlyph, { glyph: state === "danger" ? Error2 : Warning, className: "text-icon-sm" }),
12335
12585
  state === "danger" ? `Almost full \xB7 ${percent}%` : `Getting full \xB7 ${percent}%`
12336
12586
  ] })
12337
12587
  ] });
12338
12588
  }
12339
12589
 
12340
12590
  // src/web/components/activity-row.tsx
12341
- var import_jsx_runtime126 = require("react/jsx-runtime");
12591
+ var import_jsx_runtime127 = require("react/jsx-runtime");
12342
12592
  var directionUi = {
12343
12593
  inbound: { icon: "south_west", iconClass: "bg-primary/20 text-brand", amountClass: "text-brand", sign: "+" },
12344
12594
  outbound: { icon: "north_east", iconClass: "bg-foreground/10 text-muted-foreground", amountClass: "text-foreground", sign: "-" },
@@ -12358,29 +12608,29 @@ function ActivityRow({
12358
12608
  className
12359
12609
  }) {
12360
12610
  const ui = directionUi[direction];
12361
- const content = /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(import_jsx_runtime126.Fragment, { children: [
12362
- /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)("div", { className: "flex min-w-0 items-center gap-3", children: [
12363
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
12611
+ const content = /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_jsx_runtime127.Fragment, { children: [
12612
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)("div", { className: "flex min-w-0 items-center gap-3", children: [
12613
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
12364
12614
  StatusIconBadge,
12365
12615
  {
12366
12616
  status,
12367
- icon: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("div", { className: cn("flex size-10 items-center justify-center rounded-xl shadow-inner", ui.iconClass), children: typeof icon === "string" || !icon ? /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Icon, { name: icon ?? ui.icon, className: "text-icon-xl" }) : icon })
12617
+ icon: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("div", { className: cn("flex size-10 items-center justify-center rounded-xl shadow-inner", ui.iconClass), children: typeof icon === "string" || !icon ? /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Icon, { name: icon ?? ui.icon, className: "text-icon-xl" }) : icon })
12368
12618
  }
12369
12619
  ),
12370
- /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)("div", { className: "flex min-w-0 flex-col", children: [
12371
- /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)("div", { className: "flex min-w-0 items-center gap-1.5", children: [
12372
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("span", { className: "truncate text-body font-bold tracking-wide text-foreground", children: title }),
12620
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)("div", { className: "flex min-w-0 flex-col", children: [
12621
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)("div", { className: "flex min-w-0 items-center gap-1.5", children: [
12622
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("span", { className: "truncate text-body font-bold tracking-wide text-foreground", children: title }),
12373
12623
  networkBadge
12374
12624
  ] }),
12375
- timestamp && /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("div", { className: "mt-1 flex items-center gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("span", { className: "text-xxs text-muted-foreground", children: timestamp }) })
12625
+ timestamp && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("div", { className: "mt-1 flex items-center gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("span", { className: "text-xxs text-muted-foreground", children: timestamp }) })
12376
12626
  ] })
12377
12627
  ] }),
12378
- /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)("div", { className: "shrink-0 text-right", children: [
12379
- /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)("p", { className: cn("text-body font-bold tracking-wide", ui.amountClass), children: [
12628
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)("div", { className: "shrink-0 text-right", children: [
12629
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)("p", { className: cn("text-body font-bold tracking-wide", ui.amountClass), children: [
12380
12630
  ui.sign,
12381
12631
  amount
12382
12632
  ] }),
12383
- unit && /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("p", { className: cn("mt-0.5 text-muted-foreground", eyebrow), children: unit })
12633
+ unit && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("p", { className: cn("mt-0.5 text-muted-foreground", eyebrow), children: unit })
12384
12634
  ] })
12385
12635
  ] });
12386
12636
  const rowClassName = cn(
@@ -12389,13 +12639,13 @@ function ActivityRow({
12389
12639
  className
12390
12640
  );
12391
12641
  if (onClick) {
12392
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("button", { type: "button", onClick, className: rowClassName, children: content });
12642
+ return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("button", { type: "button", onClick, className: rowClassName, children: content });
12393
12643
  }
12394
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("div", { className: rowClassName, children: content });
12644
+ return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("div", { className: rowClassName, children: content });
12395
12645
  }
12396
12646
 
12397
12647
  // src/web/components/secret-reveal-card.tsx
12398
- var import_jsx_runtime127 = require("react/jsx-runtime");
12648
+ var import_jsx_runtime128 = require("react/jsx-runtime");
12399
12649
  function SecretRevealCard({
12400
12650
  value,
12401
12651
  revealed,
@@ -12414,9 +12664,9 @@ function SecretRevealCard({
12414
12664
  const selfCopy = !onCopy && copyValue !== void 0;
12415
12665
  const handleCopy = onCopy ?? (selfCopy ? () => void clipboard.copy(copyValue) : void 0);
12416
12666
  const copied = selfCopy && clipboard.state === "copied";
12417
- return /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)("div", { className: cn("space-y-3", className), children: [
12418
- /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)("div", { className: "relative", children: [
12419
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("div", { className: "rounded-xl bg-card/55 bg-gradient-card px-3 py-3 shadow-inner ring-1 ring-inset ring-secondary/15 backdrop-blur-xl backdrop-saturate-150", children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
12667
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: cn("space-y-3", className), children: [
12668
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: "relative", children: [
12669
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("div", { className: "rounded-xl bg-card/55 bg-gradient-card px-3 py-3 shadow-inner ring-1 ring-inset ring-secondary/15 backdrop-blur-xl backdrop-saturate-150", children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
12420
12670
  "p",
12421
12671
  {
12422
12672
  className: cn(
@@ -12428,17 +12678,17 @@ function SecretRevealCard({
12428
12678
  children: value
12429
12679
  }
12430
12680
  ) }),
12431
- !revealed && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("div", { className: "absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(Button, { type: "button", variant: "surface", size: "sm", onClick: () => onRevealChange(true), children: [
12432
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(IconGlyph, { glyph: Visibility, className: "text-icon-lg" }),
12681
+ !revealed && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("div", { className: "absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(Button, { type: "button", variant: "surface", size: "sm", onClick: () => onRevealChange(true), children: [
12682
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(IconGlyph, { glyph: Visibility, className: "text-icon-lg" }),
12433
12683
  revealLabel
12434
12684
  ] }) })
12435
12685
  ] }),
12436
- revealed && /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)("div", { className: "flex gap-2", children: [
12437
- /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(Button, { type: "button", variant: "surface", className: "flex-1", onClick: () => onRevealChange(false), children: [
12438
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(IconGlyph, { glyph: VisibilityOff, className: "text-icon-lg" }),
12686
+ revealed && /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: "flex gap-2", children: [
12687
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(Button, { type: "button", variant: "surface", className: "flex-1", onClick: () => onRevealChange(false), children: [
12688
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(IconGlyph, { glyph: VisibilityOff, className: "text-icon-lg" }),
12439
12689
  hideLabel
12440
12690
  ] }),
12441
- handleCopy && /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(
12691
+ handleCopy && /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
12442
12692
  Button,
12443
12693
  {
12444
12694
  type: "button",
@@ -12446,19 +12696,19 @@ function SecretRevealCard({
12446
12696
  onClick: handleCopy,
12447
12697
  className: cn("flex-1", copied && "bg-primary/10 bg-gradient-active text-brand ring-primary/40 hover:ring-primary/50"),
12448
12698
  children: [
12449
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(IconGlyph, { glyph: copied ? Check : ContentCopy, className: "text-icon-lg" }),
12699
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(IconGlyph, { glyph: copied ? Check : ContentCopy, className: "text-icon-lg" }),
12450
12700
  copied ? copiedLabel : copyLabel
12451
12701
  ]
12452
12702
  }
12453
12703
  )
12454
12704
  ] }),
12455
- selfCopy && clipboard.state === "failed" && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("p", { role: "alert", className: "m-0 text-caption text-danger-fg", children: copyFailedMessage }),
12456
- selfCopy && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("span", { "aria-live": "polite", className: "sr-only", children: copied ? copiedLabel : "" })
12705
+ selfCopy && clipboard.state === "failed" && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("p", { role: "alert", className: "m-0 text-caption text-danger-fg", children: copyFailedMessage }),
12706
+ selfCopy && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("span", { "aria-live": "polite", className: "sr-only", children: copied ? copiedLabel : "" })
12457
12707
  ] });
12458
12708
  }
12459
12709
 
12460
12710
  // src/web/components/settings-section-card.tsx
12461
- var import_jsx_runtime128 = require("react/jsx-runtime");
12711
+ var import_jsx_runtime129 = require("react/jsx-runtime");
12462
12712
  function SettingsSectionCard({
12463
12713
  icon,
12464
12714
  title,
@@ -12468,18 +12718,18 @@ function SettingsSectionCard({
12468
12718
  className,
12469
12719
  bodyClassName
12470
12720
  }) {
12471
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("section", { className: cn("space-y-4 rounded-xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card p-4 shadow-card-secondary", className), children: [
12472
- /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: "flex items-start justify-between gap-4", children: [
12473
- /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: "flex min-w-0 flex-1 items-start gap-3", children: [
12474
- icon && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("div", { className: "flex size-10 shrink-0 items-center justify-center rounded-xl bg-secondary/15 text-secondary-content", children: icon }),
12475
- /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: "min-w-0 flex-1", children: [
12476
- /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("h2", { className: "text-body font-bold text-foreground", children: title }),
12477
- description && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("p", { className: "mt-1 text-caption text-muted-foreground", children: description })
12721
+ return /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)("section", { className: cn("space-y-4 rounded-xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card p-4 shadow-card-secondary", className), children: [
12722
+ /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)("div", { className: "flex items-start justify-between gap-4", children: [
12723
+ /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)("div", { className: "flex min-w-0 flex-1 items-start gap-3", children: [
12724
+ icon && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("div", { className: "flex size-10 shrink-0 items-center justify-center rounded-xl bg-secondary/15 text-secondary-content", children: icon }),
12725
+ /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)("div", { className: "min-w-0 flex-1", children: [
12726
+ /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("h2", { className: "text-body font-bold text-foreground", children: title }),
12727
+ description && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("p", { className: "mt-1 text-caption text-muted-foreground", children: description })
12478
12728
  ] })
12479
12729
  ] }),
12480
12730
  badge
12481
12731
  ] }),
12482
- /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("div", { className: bodyClassName, children })
12732
+ /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("div", { className: bodyClassName, children })
12483
12733
  ] });
12484
12734
  }
12485
12735
  var badgeToneClass = {
@@ -12496,7 +12746,7 @@ var badgeToneClass = {
12496
12746
  outline: "border border-border bg-transparent text-foreground"
12497
12747
  };
12498
12748
  function ToneBadge({ children, tone = "muted", case: letterCase = "upper", className }) {
12499
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
12749
+ return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
12500
12750
  "span",
12501
12751
  {
12502
12752
  "data-slot": "tone-badge",
@@ -12512,7 +12762,7 @@ function ToneBadge({ children, tone = "muted", case: letterCase = "upper", class
12512
12762
  }
12513
12763
 
12514
12764
  // src/web/components/selectable-card.tsx
12515
- var import_jsx_runtime129 = require("react/jsx-runtime");
12765
+ var import_jsx_runtime130 = require("react/jsx-runtime");
12516
12766
  function SelectableCard({
12517
12767
  selected,
12518
12768
  onClick,
@@ -12524,28 +12774,28 @@ function SelectableCard({
12524
12774
  children,
12525
12775
  className
12526
12776
  }) {
12527
- const content = /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)("div", { className: "flex items-start justify-between gap-3", children: [
12528
- /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)("div", { className: "flex min-w-0 flex-1 items-start gap-3", children: [
12529
- indicator && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
12777
+ const content = /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("div", { className: "flex items-start justify-between gap-3", children: [
12778
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("div", { className: "flex min-w-0 flex-1 items-start gap-3", children: [
12779
+ indicator && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
12530
12780
  "div",
12531
12781
  {
12532
12782
  className: cn(
12533
12783
  "mt-0.5 flex size-5 shrink-0 items-center justify-center rounded-full border-2 transition-colors",
12534
12784
  selected ? "border-primary bg-primary bg-gradient-primary shadow-glow-primary-soft" : "border-secondary/40"
12535
12785
  ),
12536
- children: selected && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("div", { className: "size-2 rounded-full bg-white" })
12786
+ children: selected && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("div", { className: "size-2 rounded-full bg-white" })
12537
12787
  }
12538
12788
  ),
12539
- /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)("div", { className: "min-w-0 flex-1", children: [
12540
- /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)("div", { className: "flex flex-wrap items-center gap-2", children: [
12541
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("span", { className: "text-body font-bold text-foreground", children: title }),
12789
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("div", { className: "min-w-0 flex-1", children: [
12790
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("div", { className: "flex flex-wrap items-center gap-2", children: [
12791
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("span", { className: "text-body font-bold text-foreground", children: title }),
12542
12792
  badge
12543
12793
  ] }),
12544
- description && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("p", { className: "mt-0.5 text-caption leading-relaxed text-muted-foreground", children: description }),
12794
+ description && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("p", { className: "mt-0.5 text-caption leading-relaxed text-muted-foreground", children: description }),
12545
12795
  children
12546
12796
  ] })
12547
12797
  ] }),
12548
- preview && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("div", { className: "shrink-0 text-right", children: preview })
12798
+ preview && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("div", { className: "shrink-0 text-right", children: preview })
12549
12799
  ] });
12550
12800
  const cardClassName = cn(
12551
12801
  "w-full rounded-2xl border border-transparent bg-card p-4 text-left transition-all duration-200",
@@ -12553,14 +12803,14 @@ function SelectableCard({
12553
12803
  className
12554
12804
  );
12555
12805
  if (onClick) {
12556
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("button", { type: "button", onClick, className: cardClassName, children: content });
12806
+ return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("button", { type: "button", onClick, className: cardClassName, children: content });
12557
12807
  }
12558
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("div", { className: cardClassName, children: content });
12808
+ return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("div", { className: cardClassName, children: content });
12559
12809
  }
12560
12810
 
12561
12811
  // src/web/components/mobile-hero-animation.tsx
12562
12812
  var import_react40 = require("react");
12563
- var import_jsx_runtime130 = require("react/jsx-runtime");
12813
+ var import_jsx_runtime131 = require("react/jsx-runtime");
12564
12814
  var PROTOCOLS = [
12565
12815
  { name: "Bitcoin", network: "Bitcoin", iconSuffix: "bitcoin/bitcoin-logo.svg" },
12566
12816
  { name: "Lightning", network: "LN", iconSuffix: "lightning/lightning.svg" },
@@ -12619,15 +12869,15 @@ var MobileHeroAnimation = ({
12619
12869
  }, []);
12620
12870
  const anim = !reducedMotion && isVisible;
12621
12871
  const scale = size / 280;
12622
- return /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(
12872
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(
12623
12873
  "div",
12624
12874
  {
12625
12875
  ref: containerRef,
12626
12876
  className,
12627
12877
  style: { position: "relative", width: size, height: size },
12628
12878
  children: [
12629
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("style", { children: KEYFRAMES }),
12630
- /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("div", { style: {
12879
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("style", { children: KEYFRAMES }),
12880
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("div", { style: {
12631
12881
  position: "absolute",
12632
12882
  top: 0,
12633
12883
  left: 0,
@@ -12636,7 +12886,7 @@ var MobileHeroAnimation = ({
12636
12886
  transformOrigin: "top left",
12637
12887
  transform: scale !== 1 ? `scale(${scale})` : void 0
12638
12888
  }, children: [
12639
- /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(
12889
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(
12640
12890
  "svg",
12641
12891
  {
12642
12892
  viewBox: "0 0 280 280",
@@ -12645,34 +12895,34 @@ var MobileHeroAnimation = ({
12645
12895
  style: { position: "absolute", inset: 0 },
12646
12896
  xmlns: "http://www.w3.org/2000/svg",
12647
12897
  children: [
12648
- /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("defs", { children: [
12649
- /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("radialGradient", { id: "mh-center-glow", cx: "50%", cy: "50%", r: "50%", children: [
12650
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("stop", { offset: "0%", stopColor: "#0e9dff", stopOpacity: "0.3" }),
12651
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("stop", { offset: "40%", stopColor: "#8a5cf6", stopOpacity: "0.15" }),
12652
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("stop", { offset: "100%", stopColor: "transparent", stopOpacity: "0" })
12898
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("defs", { children: [
12899
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("radialGradient", { id: "mh-center-glow", cx: "50%", cy: "50%", r: "50%", children: [
12900
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "0%", stopColor: "#0e9dff", stopOpacity: "0.3" }),
12901
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "40%", stopColor: "#8a5cf6", stopOpacity: "0.15" }),
12902
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "100%", stopColor: "transparent", stopOpacity: "0" })
12653
12903
  ] }),
12654
- /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("linearGradient", { id: "mh-gp", x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [
12655
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("stop", { offset: "0%", stopColor: "#22c55e" }),
12656
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("stop", { offset: "100%", stopColor: "#8a5cf6" })
12904
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("linearGradient", { id: "mh-gp", x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [
12905
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "0%", stopColor: "#22c55e" }),
12906
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "100%", stopColor: "#8a5cf6" })
12657
12907
  ] }),
12658
- /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("linearGradient", { id: "mh-bp", x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [
12659
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("stop", { offset: "0%", stopColor: "#0e9dff" }),
12660
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("stop", { offset: "100%", stopColor: "#8a5cf6" })
12908
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("linearGradient", { id: "mh-bp", x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [
12909
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "0%", stopColor: "#0e9dff" }),
12910
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "100%", stopColor: "#8a5cf6" })
12661
12911
  ] }),
12662
- /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("filter", { id: "mh-glow", x: "-50%", y: "-50%", width: "200%", height: "200%", children: [
12663
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("feGaussianBlur", { stdDeviation: "2.5", result: "blur" }),
12664
- /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("feMerge", { children: [
12665
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("feMergeNode", { in: "blur" }),
12666
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("feMergeNode", { in: "SourceGraphic" })
12912
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("filter", { id: "mh-glow", x: "-50%", y: "-50%", width: "200%", height: "200%", children: [
12913
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("feGaussianBlur", { stdDeviation: "2.5", result: "blur" }),
12914
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("feMerge", { children: [
12915
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("feMergeNode", { in: "blur" }),
12916
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("feMergeNode", { in: "SourceGraphic" })
12667
12917
  ] })
12668
12918
  ] })
12669
12919
  ] }),
12670
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("circle", { cx: C, cy: C, r: ORBIT_R, fill: "none", stroke: "#0e9dff", strokeWidth: "1", strokeOpacity: "0.25", opacity: "0.4", children: anim && /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(import_jsx_runtime130.Fragment, { children: [
12671
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("animate", { attributeName: "r", values: `${ORBIT_R};${Math.round(ORBIT_R * 1.12)};${ORBIT_R}`, dur: "2.5s", repeatCount: "indefinite" }),
12672
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("animate", { attributeName: "opacity", values: "0.4;0;0.4", dur: "2.5s", repeatCount: "indefinite" })
12920
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("circle", { cx: C, cy: C, r: ORBIT_R, fill: "none", stroke: "#0e9dff", strokeWidth: "1", strokeOpacity: "0.25", opacity: "0.4", children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(import_jsx_runtime131.Fragment, { children: [
12921
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "r", values: `${ORBIT_R};${Math.round(ORBIT_R * 1.12)};${ORBIT_R}`, dur: "2.5s", repeatCount: "indefinite" }),
12922
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "opacity", values: "0.4;0;0.4", dur: "2.5s", repeatCount: "indefinite" })
12673
12923
  ] }) }),
12674
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("circle", { cx: C, cy: C, r: 80, fill: "none", stroke: "rgba(255,255,255,0.1)", strokeWidth: "1", strokeDasharray: "4 4" }),
12675
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
12924
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("circle", { cx: C, cy: C, r: 80, fill: "none", stroke: "rgba(255,255,255,0.1)", strokeWidth: "1", strokeDasharray: "4 4" }),
12925
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
12676
12926
  "g",
12677
12927
  {
12678
12928
  style: {
@@ -12690,8 +12940,8 @@ var MobileHeroAnimation = ({
12690
12940
  const y2 = C + dy * (ORBIT_R - BADGE_HALF);
12691
12941
  const color = PROTOCOL_COLORS[protocol.network] ?? "#ffffff";
12692
12942
  const dur = `${2 + i * 0.3}s`;
12693
- return /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("g", { children: [
12694
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
12943
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("g", { children: [
12944
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
12695
12945
  "line",
12696
12946
  {
12697
12947
  x1,
@@ -12702,30 +12952,30 @@ var MobileHeroAnimation = ({
12702
12952
  strokeWidth: "0.8",
12703
12953
  strokeDasharray: "2 4",
12704
12954
  opacity: "0.25",
12705
- children: anim && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("animate", { attributeName: "stroke-dashoffset", from: "0", to: "-12", dur: `${1.5 + i * 0.2}s`, repeatCount: "indefinite" })
12955
+ children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "stroke-dashoffset", from: "0", to: "-12", dur: `${1.5 + i * 0.2}s`, repeatCount: "indefinite" })
12706
12956
  }
12707
12957
  ),
12708
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("circle", { r: "2", fill: color, opacity: "0", children: anim && /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(import_jsx_runtime130.Fragment, { children: [
12709
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("animate", { attributeName: "cx", values: `${x1};${x2}`, dur, repeatCount: "indefinite" }),
12710
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("animate", { attributeName: "cy", values: `${y1};${y2}`, dur, repeatCount: "indefinite" }),
12711
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("animate", { attributeName: "opacity", values: "0;0.85;0", dur, repeatCount: "indefinite" }),
12712
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("animate", { attributeName: "r", values: "1.5;2.5;1.5", dur, repeatCount: "indefinite" })
12958
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("circle", { r: "2", fill: color, opacity: "0", children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(import_jsx_runtime131.Fragment, { children: [
12959
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "cx", values: `${x1};${x2}`, dur, repeatCount: "indefinite" }),
12960
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "cy", values: `${y1};${y2}`, dur, repeatCount: "indefinite" }),
12961
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "opacity", values: "0;0.85;0", dur, repeatCount: "indefinite" }),
12962
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "r", values: "1.5;2.5;1.5", dur, repeatCount: "indefinite" })
12713
12963
  ] }) })
12714
12964
  ] }, `line-${i}`);
12715
12965
  })
12716
12966
  }
12717
12967
  ),
12718
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("circle", { cx: C, cy: C, r: "42", fill: "url(#mh-center-glow)", children: anim && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("animate", { attributeName: "r", values: "38;46;38", dur: "4s", repeatCount: "indefinite" }) }),
12719
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("circle", { cx: C, cy: C, r: "29", fill: "none", stroke: "url(#mh-bp)", strokeWidth: "1", opacity: "0", children: anim && /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(import_jsx_runtime130.Fragment, { children: [
12720
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("animate", { attributeName: "r", values: "27;38", dur: "3s", repeatCount: "indefinite" }),
12721
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("animate", { attributeName: "opacity", values: "0.4;0", dur: "3s", repeatCount: "indefinite" })
12968
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("circle", { cx: C, cy: C, r: "42", fill: "url(#mh-center-glow)", children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "r", values: "38;46;38", dur: "4s", repeatCount: "indefinite" }) }),
12969
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("circle", { cx: C, cy: C, r: "29", fill: "none", stroke: "url(#mh-bp)", strokeWidth: "1", opacity: "0", children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(import_jsx_runtime131.Fragment, { children: [
12970
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "r", values: "27;38", dur: "3s", repeatCount: "indefinite" }),
12971
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "opacity", values: "0.4;0", dur: "3s", repeatCount: "indefinite" })
12722
12972
  ] }) }),
12723
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("circle", { cx: C, cy: C, r: "27", fill: "none", stroke: "url(#mh-gp)", strokeWidth: "0.8", opacity: "0", children: anim && /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(import_jsx_runtime130.Fragment, { children: [
12724
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("animate", { attributeName: "r", values: "27;36", dur: "3s", repeatCount: "indefinite", begin: "1.5s" }),
12725
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("animate", { attributeName: "opacity", values: "0.3;0", dur: "3s", repeatCount: "indefinite", begin: "1.5s" })
12973
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("circle", { cx: C, cy: C, r: "27", fill: "none", stroke: "url(#mh-gp)", strokeWidth: "0.8", opacity: "0", children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(import_jsx_runtime131.Fragment, { children: [
12974
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "r", values: "27;36", dur: "3s", repeatCount: "indefinite", begin: "1.5s" }),
12975
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "opacity", values: "0.3;0", dur: "3s", repeatCount: "indefinite", begin: "1.5s" })
12726
12976
  ] }) }),
12727
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("g", { transform: `translate(${C},${C})`, children: /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("g", { children: [
12728
- anim && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
12977
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("g", { transform: `translate(${C},${C})`, children: /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("g", { children: [
12978
+ anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
12729
12979
  "animateTransform",
12730
12980
  {
12731
12981
  attributeName: "transform",
@@ -12737,13 +12987,13 @@ var MobileHeroAnimation = ({
12737
12987
  additive: "sum"
12738
12988
  }
12739
12989
  ),
12740
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("path", { d: hexPath(34), fill: "none", stroke: "url(#mh-gp)", strokeWidth: "1.5", opacity: "0.4", filter: "url(#mh-glow)", children: anim && /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(import_jsx_runtime130.Fragment, { children: [
12741
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("animate", { attributeName: "opacity", values: "0.3;0.65;0.3", dur: "3s", repeatCount: "indefinite" }),
12742
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("animate", { attributeName: "stroke-width", values: "1.5;2.5;1.5", dur: "3s", repeatCount: "indefinite" })
12990
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: hexPath(34), fill: "none", stroke: "url(#mh-gp)", strokeWidth: "1.5", opacity: "0.4", filter: "url(#mh-glow)", children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(import_jsx_runtime131.Fragment, { children: [
12991
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "opacity", values: "0.3;0.65;0.3", dur: "3s", repeatCount: "indefinite" }),
12992
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "stroke-width", values: "1.5;2.5;1.5", dur: "3s", repeatCount: "indefinite" })
12743
12993
  ] }) })
12744
12994
  ] }) }),
12745
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("g", { transform: `translate(${C},${C})`, children: /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("g", { children: [
12746
- anim && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
12995
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("g", { transform: `translate(${C},${C})`, children: /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("g", { children: [
12996
+ anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
12747
12997
  "animateTransform",
12748
12998
  {
12749
12999
  attributeName: "transform",
@@ -12755,19 +13005,19 @@ var MobileHeroAnimation = ({
12755
13005
  additive: "sum"
12756
13006
  }
12757
13007
  ),
12758
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("path", { d: hexPath(32), fill: "rgba(10,15,30,0.75)", stroke: "rgba(255,255,255,0.08)", strokeWidth: "0.5" })
13008
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: hexPath(32), fill: "rgba(10,15,30,0.75)", stroke: "rgba(255,255,255,0.08)", strokeWidth: "0.5" })
12759
13009
  ] }) }),
12760
- /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("g", { transform: `translate(${C - 18.8},${C - 18.8}) scale(0.0912)`, children: [
12761
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("path", { d: "M137.306 411.865H0.000244141L68.6795 343.29L137.306 411.865Z", fill: "#6F32FF" }),
12762
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("path", { d: "M0 0H137.306L68.6267 68.574L0 0Z", fill: "#6F32FF" }),
12763
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("path", { d: "M137.148 274.559H274.455L411.708 411.866H274.401L137.148 274.559Z", fill: "#17B581" }),
12764
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("path", { d: "M137.149 274.559L68.6274 205.933L137.201 137.306L274.455 137.411L205.776 206.038L274.456 274.559H137.149Z", fill: "#15E99A" }),
12765
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("path", { d: "M274.479 0.104797H411.786L274.533 137.411H137.226L274.479 0.104797Z", fill: "#17B581" })
13010
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("g", { transform: `translate(${C - 18.8},${C - 18.8}) scale(0.0912)`, children: [
13011
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: "M137.306 411.865H0.000244141L68.6795 343.29L137.306 411.865Z", fill: "#6F32FF" }),
13012
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: "M0 0H137.306L68.6267 68.574L0 0Z", fill: "#6F32FF" }),
13013
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: "M137.148 274.559H274.455L411.708 411.866H274.401L137.148 274.559Z", fill: "#17B581" }),
13014
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: "M137.149 274.559L68.6274 205.933L137.201 137.306L274.455 137.411L205.776 206.038L274.456 274.559H137.149Z", fill: "#15E99A" }),
13015
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: "M274.479 0.104797H411.786L274.533 137.411H137.226L274.479 0.104797Z", fill: "#17B581" })
12766
13016
  ] })
12767
13017
  ]
12768
13018
  }
12769
13019
  ),
12770
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("div", { style: {
13020
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { style: {
12771
13021
  position: "absolute",
12772
13022
  inset: 0,
12773
13023
  width: 280,
@@ -12778,7 +13028,7 @@ var MobileHeroAnimation = ({
12778
13028
  const x = C + Math.cos(angle) * ORBIT_R - BADGE_HALF;
12779
13029
  const y = C + Math.sin(angle) * ORBIT_R - BADGE_HALF;
12780
13030
  const color = PROTOCOL_COLORS[protocol.network] ?? "#ffffff";
12781
- return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
13031
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
12782
13032
  "div",
12783
13033
  {
12784
13034
  style: {
@@ -12789,7 +13039,7 @@ var MobileHeroAnimation = ({
12789
13039
  height: BADGE_SIZE,
12790
13040
  animation: anim ? "mha-counter-spin 20s linear infinite" : "none"
12791
13041
  },
12792
- children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("div", { style: {
13042
+ children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { style: {
12793
13043
  width: "100%",
12794
13044
  height: "100%",
12795
13045
  borderRadius: "50%",
@@ -12800,7 +13050,7 @@ var MobileHeroAnimation = ({
12800
13050
  display: "flex",
12801
13051
  alignItems: "center",
12802
13052
  justifyContent: "center"
12803
- }, children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
13053
+ }, children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
12804
13054
  "img",
12805
13055
  {
12806
13056
  src: iconBasePath ? `${iconBasePath}/${protocol.iconSuffix}` : protocolIcons[protocol.network] ?? protocol.iconSuffix,
@@ -12821,7 +13071,7 @@ var MobileHeroAnimation = ({
12821
13071
 
12822
13072
  // src/web/components/kaleidoscope-hero-animation.tsx
12823
13073
  var import_react41 = require("react");
12824
- var import_jsx_runtime131 = require("react/jsx-runtime");
13074
+ var import_jsx_runtime132 = require("react/jsx-runtime");
12825
13075
  var PROTOCOLS2 = [
12826
13076
  { name: "Bitcoin L1", network: "L1", color: "#F7931A", glowColor: "rgba(247,147,26,0.5)" },
12827
13077
  { name: "Lightning", network: "LN", color: "#fbbf24", glowColor: "rgba(251,191,36,0.5)" },
@@ -12926,13 +13176,13 @@ var KaleidoScopeHeroAnimation = ({
12926
13176
  const angle = Math.PI * 2 * i / 7 - Math.PI / 2;
12927
13177
  return { x: c + orbitR * Math.cos(angle), y: c + orbitR * Math.sin(angle) };
12928
13178
  });
12929
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13179
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
12930
13180
  "div",
12931
13181
  {
12932
13182
  ref: containerRef,
12933
13183
  className: `relative ${className}`,
12934
13184
  style: size ? { width: size, height: size } : void 0,
12935
- children: /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(
13185
+ children: /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)(
12936
13186
  "svg",
12937
13187
  {
12938
13188
  viewBox: "0 0 500 500",
@@ -12941,60 +13191,60 @@ var KaleidoScopeHeroAnimation = ({
12941
13191
  xmlns: "http://www.w3.org/2000/svg",
12942
13192
  className: "overflow-visible",
12943
13193
  children: [
12944
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("defs", { children: [
12945
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("linearGradient", { id: "kh-grad-a", x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [
12946
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "0%", children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "stop-color", values: "#22c55e;#8a5cf6;#06b6d4;#F7931A;#22c55e", dur: "10s", repeatCount: "indefinite" }) }),
12947
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "100%", children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "stop-color", values: "#8a5cf6;#F7931A;#22c55e;#06b6d4;#8a5cf6", dur: "10s", repeatCount: "indefinite" }) })
13194
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("defs", { children: [
13195
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("linearGradient", { id: "kh-grad-a", x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [
13196
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("stop", { offset: "0%", children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "stop-color", values: "#22c55e;#8a5cf6;#06b6d4;#F7931A;#22c55e", dur: "10s", repeatCount: "indefinite" }) }),
13197
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("stop", { offset: "100%", children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "stop-color", values: "#8a5cf6;#F7931A;#22c55e;#06b6d4;#8a5cf6", dur: "10s", repeatCount: "indefinite" }) })
12948
13198
  ] }),
12949
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("linearGradient", { id: "kh-grad-b", x1: "100%", y1: "0%", x2: "0%", y2: "100%", children: [
12950
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "0%", children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "stop-color", values: "#06b6d4;#22c55e;#F7931A;#8a5cf6;#06b6d4", dur: "8s", repeatCount: "indefinite" }) }),
12951
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "100%", children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "stop-color", values: "#F7931A;#06b6d4;#8a5cf6;#22c55e;#F7931A", dur: "8s", repeatCount: "indefinite" }) })
13199
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("linearGradient", { id: "kh-grad-b", x1: "100%", y1: "0%", x2: "0%", y2: "100%", children: [
13200
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("stop", { offset: "0%", children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "stop-color", values: "#06b6d4;#22c55e;#F7931A;#8a5cf6;#06b6d4", dur: "8s", repeatCount: "indefinite" }) }),
13201
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("stop", { offset: "100%", children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "stop-color", values: "#F7931A;#06b6d4;#8a5cf6;#22c55e;#F7931A", dur: "8s", repeatCount: "indefinite" }) })
12952
13202
  ] }),
12953
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("linearGradient", { id: "kh-grad-c", x1: "50%", y1: "0%", x2: "50%", y2: "100%", children: [
12954
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "0%", children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "stop-color", values: "#0e9dff;#8a5cf6;#15E99A;#0e9dff", dur: "6s", repeatCount: "indefinite" }) }),
12955
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "100%", children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "stop-color", values: "#8a5cf6;#15E99A;#0e9dff;#8a5cf6", dur: "6s", repeatCount: "indefinite" }) })
13203
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("linearGradient", { id: "kh-grad-c", x1: "50%", y1: "0%", x2: "50%", y2: "100%", children: [
13204
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("stop", { offset: "0%", children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "stop-color", values: "#0e9dff;#8a5cf6;#15E99A;#0e9dff", dur: "6s", repeatCount: "indefinite" }) }),
13205
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("stop", { offset: "100%", children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "stop-color", values: "#8a5cf6;#15E99A;#0e9dff;#8a5cf6", dur: "6s", repeatCount: "indefinite" }) })
12956
13206
  ] }),
12957
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("linearGradient", { id: "kh-gp", x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [
12958
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "0%", stopColor: "#22c55e" }),
12959
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "100%", stopColor: "#8a5cf6" })
13207
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("linearGradient", { id: "kh-gp", x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [
13208
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("stop", { offset: "0%", stopColor: "#22c55e" }),
13209
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("stop", { offset: "100%", stopColor: "#8a5cf6" })
12960
13210
  ] }),
12961
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("linearGradient", { id: "kh-oc", x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [
12962
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "0%", stopColor: "#F7931A" }),
12963
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "100%", stopColor: "#06b6d4" })
13211
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("linearGradient", { id: "kh-oc", x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [
13212
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("stop", { offset: "0%", stopColor: "#F7931A" }),
13213
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("stop", { offset: "100%", stopColor: "#06b6d4" })
12964
13214
  ] }),
12965
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("linearGradient", { id: "kh-bp", x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [
12966
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "0%", stopColor: "#0e9dff" }),
12967
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "100%", stopColor: "#8a5cf6" })
13215
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("linearGradient", { id: "kh-bp", x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [
13216
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("stop", { offset: "0%", stopColor: "#0e9dff" }),
13217
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("stop", { offset: "100%", stopColor: "#8a5cf6" })
12968
13218
  ] }),
12969
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("radialGradient", { id: "kh-center-glow", cx: "50%", cy: "50%", r: "50%", children: [
12970
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "0%", stopColor: "#0e9dff", stopOpacity: "0.3" }),
12971
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "40%", stopColor: "#8a5cf6", stopOpacity: "0.15" }),
12972
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "100%", stopColor: "transparent", stopOpacity: "0" })
13219
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("radialGradient", { id: "kh-center-glow", cx: "50%", cy: "50%", r: "50%", children: [
13220
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("stop", { offset: "0%", stopColor: "#0e9dff", stopOpacity: "0.3" }),
13221
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("stop", { offset: "40%", stopColor: "#8a5cf6", stopOpacity: "0.15" }),
13222
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("stop", { offset: "100%", stopColor: "transparent", stopOpacity: "0" })
12973
13223
  ] }),
12974
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("radialGradient", { id: "kh-haze", cx: "50%", cy: "50%", r: "50%", children: [
12975
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "0%", stopColor: "transparent", stopOpacity: "0" }),
12976
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "60%", stopColor: "#0e9dff", stopOpacity: "0.03" }),
12977
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("stop", { offset: "100%", stopColor: "#8a5cf6", stopOpacity: "0.06" })
13224
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("radialGradient", { id: "kh-haze", cx: "50%", cy: "50%", r: "50%", children: [
13225
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("stop", { offset: "0%", stopColor: "transparent", stopOpacity: "0" }),
13226
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("stop", { offset: "60%", stopColor: "#0e9dff", stopOpacity: "0.03" }),
13227
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("stop", { offset: "100%", stopColor: "#8a5cf6", stopOpacity: "0.06" })
12978
13228
  ] }),
12979
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("filter", { id: "kh-glow", x: "-50%", y: "-50%", width: "200%", height: "200%", children: [
12980
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("feGaussianBlur", { stdDeviation: "3", result: "blur" }),
12981
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("feMerge", { children: [
12982
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("feMergeNode", { in: "blur" }),
12983
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("feMergeNode", { in: "SourceGraphic" })
13229
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("filter", { id: "kh-glow", x: "-50%", y: "-50%", width: "200%", height: "200%", children: [
13230
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("feGaussianBlur", { stdDeviation: "3", result: "blur" }),
13231
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("feMerge", { children: [
13232
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("feMergeNode", { in: "blur" }),
13233
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("feMergeNode", { in: "SourceGraphic" })
12984
13234
  ] })
12985
13235
  ] }),
12986
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("filter", { id: "kh-glow-lg", x: "-50%", y: "-50%", width: "200%", height: "200%", children: [
12987
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("feGaussianBlur", { stdDeviation: "8", result: "blur" }),
12988
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("feMerge", { children: [
12989
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("feMergeNode", { in: "blur" }),
12990
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("feMergeNode", { in: "SourceGraphic" })
13236
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("filter", { id: "kh-glow-lg", x: "-50%", y: "-50%", width: "200%", height: "200%", children: [
13237
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("feGaussianBlur", { stdDeviation: "8", result: "blur" }),
13238
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("feMerge", { children: [
13239
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("feMergeNode", { in: "blur" }),
13240
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("feMergeNode", { in: "SourceGraphic" })
12991
13241
  ] })
12992
13242
  ] })
12993
13243
  ] }),
12994
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("circle", { cx: c, cy: c, r: "248", fill: "url(#kh-haze)" }),
12995
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("g", { transform: px(20), children: [
12996
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("g", { children: [
12997
- anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13244
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("circle", { cx: c, cy: c, r: "248", fill: "url(#kh-haze)" }),
13245
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("g", { transform: px(20), children: [
13246
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("g", { children: [
13247
+ anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
12998
13248
  "animateTransform",
12999
13249
  {
13000
13250
  attributeName: "transform",
@@ -13007,14 +13257,14 @@ var KaleidoScopeHeroAnimation = ({
13007
13257
  ),
13008
13258
  Array.from({ length: 6 }, (_, i) => {
13009
13259
  const a = Math.PI / 3 * i;
13010
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("g", { transform: `translate(${c + outerR1 * Math.cos(a)},${c + outerR1 * Math.sin(a)})`, children: [
13011
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: hexPath2(40), fill: "url(#kh-grad-a)", opacity: 0.08 + i % 3 * 0.04 }),
13012
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: hexPath2(40), fill: "none", stroke: "url(#kh-grad-a)", strokeWidth: "0.5", opacity: 0.15, children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "opacity", values: "0.1;0.25;0.1", dur: `${4 + i * 0.3}s`, repeatCount: "indefinite" }) })
13260
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("g", { transform: `translate(${c + outerR1 * Math.cos(a)},${c + outerR1 * Math.sin(a)})`, children: [
13261
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("path", { d: hexPath2(40), fill: "url(#kh-grad-a)", opacity: 0.08 + i % 3 * 0.04 }),
13262
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("path", { d: hexPath2(40), fill: "none", stroke: "url(#kh-grad-a)", strokeWidth: "0.5", opacity: 0.15, children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "opacity", values: "0.1;0.25;0.1", dur: `${4 + i * 0.3}s`, repeatCount: "indefinite" }) })
13013
13263
  ] }, `ha-${i}`);
13014
13264
  }),
13015
13265
  Array.from({ length: 6 }, (_, i) => {
13016
13266
  const a = Math.PI / 3 * i + Math.PI / 6;
13017
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13267
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13018
13268
  "path",
13019
13269
  {
13020
13270
  d: triPath(14),
@@ -13027,7 +13277,7 @@ var KaleidoScopeHeroAnimation = ({
13027
13277
  }),
13028
13278
  Array.from({ length: 12 }, (_, i) => {
13029
13279
  const a = Math.PI / 6 * i;
13030
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13280
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13031
13281
  "circle",
13032
13282
  {
13033
13283
  cx: c + outerR1 * 0.92 * Math.cos(a),
@@ -13035,14 +13285,14 @@ var KaleidoScopeHeroAnimation = ({
13035
13285
  r: "1.5",
13036
13286
  fill: "url(#kh-grad-a)",
13037
13287
  opacity: "0.15",
13038
- children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "opacity", values: "0.08;0.25;0.08", dur: `${2 + i % 3 * 0.7}s`, repeatCount: "indefinite" })
13288
+ children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "opacity", values: "0.08;0.25;0.08", dur: `${2 + i % 3 * 0.7}s`, repeatCount: "indefinite" })
13039
13289
  },
13040
13290
  `od-${i}`
13041
13291
  );
13042
13292
  })
13043
13293
  ] }),
13044
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("g", { children: [
13045
- anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13294
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("g", { children: [
13295
+ anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13046
13296
  "animateTransform",
13047
13297
  {
13048
13298
  attributeName: "transform",
@@ -13055,28 +13305,28 @@ var KaleidoScopeHeroAnimation = ({
13055
13305
  ),
13056
13306
  Array.from({ length: 6 }, (_, i) => {
13057
13307
  const a = Math.PI / 3 * i + Math.PI / 6;
13058
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("g", { transform: `translate(${c + outerR2 * Math.cos(a)},${c + outerR2 * Math.sin(a)})`, children: [
13059
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: hexPath2(30), fill: "url(#kh-grad-b)", opacity: 0.06 + i % 2 * 0.04 }),
13060
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: hexPath2(30), fill: "none", stroke: "url(#kh-grad-b)", strokeWidth: "0.5", opacity: 0.12 })
13308
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("g", { transform: `translate(${c + outerR2 * Math.cos(a)},${c + outerR2 * Math.sin(a)})`, children: [
13309
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("path", { d: hexPath2(30), fill: "url(#kh-grad-b)", opacity: 0.06 + i % 2 * 0.04 }),
13310
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("path", { d: hexPath2(30), fill: "none", stroke: "url(#kh-grad-b)", strokeWidth: "0.5", opacity: 0.12 })
13061
13311
  ] }, `hb-${i}`);
13062
13312
  }),
13063
13313
  Array.from({ length: 6 }, (_, i) => {
13064
13314
  const a = Math.PI / 3 * i;
13065
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13315
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13066
13316
  "path",
13067
13317
  {
13068
13318
  d: diamondPath(8, 16),
13069
13319
  transform: `translate(${c + outerR2 * 0.85 * Math.cos(a)},${c + outerR2 * 0.85 * Math.sin(a)}) rotate(${i * 60})`,
13070
13320
  fill: "url(#kh-grad-b)",
13071
13321
  opacity: "0.08",
13072
- children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "opacity", values: "0.05;0.15;0.05", dur: `${3.5 + i * 0.4}s`, repeatCount: "indefinite" })
13322
+ children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "opacity", values: "0.05;0.15;0.05", dur: `${3.5 + i * 0.4}s`, repeatCount: "indefinite" })
13073
13323
  },
13074
13324
  `db-${i}`
13075
13325
  );
13076
13326
  })
13077
13327
  ] }),
13078
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("g", { children: [
13079
- anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13328
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("g", { children: [
13329
+ anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13080
13330
  "animateTransform",
13081
13331
  {
13082
13332
  attributeName: "transform",
@@ -13090,23 +13340,23 @@ var KaleidoScopeHeroAnimation = ({
13090
13340
  Array.from({ length: 12 }, (_, i) => {
13091
13341
  const a = Math.PI / 6 * i;
13092
13342
  const r = outerR1 * (0.6 + i % 2 * 0.15);
13093
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13343
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13094
13344
  "path",
13095
13345
  {
13096
13346
  d: triPath(10),
13097
13347
  transform: `translate(${c + r * Math.cos(a)},${c + r * Math.sin(a)}) rotate(${i * 30 + 15})`,
13098
13348
  fill: "url(#kh-grad-c)",
13099
13349
  opacity: "0.05",
13100
- children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "opacity", values: "0.03;0.1;0.03", dur: `${5 + i % 4 * 0.8}s`, repeatCount: "indefinite" })
13350
+ children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "opacity", values: "0.03;0.1;0.03", dur: `${5 + i % 4 * 0.8}s`, repeatCount: "indefinite" })
13101
13351
  },
13102
13352
  `tc-${i}`
13103
13353
  );
13104
13354
  })
13105
13355
  ] })
13106
13356
  ] }),
13107
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("g", { transform: px(14), children: [
13108
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("g", { children: [
13109
- anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13357
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("g", { transform: px(14), children: [
13358
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("g", { children: [
13359
+ anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13110
13360
  "animateTransform",
13111
13361
  {
13112
13362
  attributeName: "transform",
@@ -13119,9 +13369,9 @@ var KaleidoScopeHeroAnimation = ({
13119
13369
  ),
13120
13370
  Array.from({ length: 12 }, (_, i) => {
13121
13371
  const a = Math.PI / 6 * i;
13122
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("g", { transform: `translate(${c + midR * Math.cos(a)},${c + midR * Math.sin(a)})`, children: [
13123
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: hexPath2(12), fill: "url(#kh-grad-c)", opacity: 0.08 + i % 3 * 0.03 }),
13124
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: hexPath2(12), fill: "none", stroke: "url(#kh-grad-c)", strokeWidth: "0.4", opacity: "0.12", children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "opacity", values: "0.08;0.2;0.08", dur: `${3 + i % 4 * 0.5}s`, repeatCount: "indefinite" }) })
13372
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("g", { transform: `translate(${c + midR * Math.cos(a)},${c + midR * Math.sin(a)})`, children: [
13373
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("path", { d: hexPath2(12), fill: "url(#kh-grad-c)", opacity: 0.08 + i % 3 * 0.03 }),
13374
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("path", { d: hexPath2(12), fill: "none", stroke: "url(#kh-grad-c)", strokeWidth: "0.4", opacity: "0.12", children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "opacity", values: "0.08;0.2;0.08", dur: `${3 + i % 4 * 0.5}s`, repeatCount: "indefinite" }) })
13125
13375
  ] }, `mh-${i}`);
13126
13376
  })
13127
13377
  ] }),
@@ -13132,7 +13382,7 @@ var KaleidoScopeHeroAnimation = ({
13132
13382
  const y1 = c + midR * Math.sin(a1);
13133
13383
  const x2 = c + midR * Math.cos(a2);
13134
13384
  const y2 = c + midR * Math.sin(a2);
13135
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13385
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13136
13386
  "path",
13137
13387
  {
13138
13388
  d: `M${x1},${y1} Q${c},${c} ${x2},${y2}`,
@@ -13141,17 +13391,17 @@ var KaleidoScopeHeroAnimation = ({
13141
13391
  strokeWidth: "0.5",
13142
13392
  strokeDasharray: "3 5",
13143
13393
  opacity: "0.1",
13144
- children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "stroke-dashoffset", from: "0", to: "-16", dur: `${3 + i * 0.2}s`, repeatCount: "indefinite" })
13394
+ children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "stroke-dashoffset", from: "0", to: "-16", dur: `${3 + i * 0.2}s`, repeatCount: "indefinite" })
13145
13395
  },
13146
13396
  `arc-${i}`
13147
13397
  );
13148
13398
  })
13149
13399
  ] }),
13150
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("g", { transform: px(10), children: [
13151
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("circle", { cx: c, cy: c, r: orbitR, fill: "none", stroke: "rgba(255,255,255,0.05)", strokeWidth: "1", strokeDasharray: "3 5", children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animateTransform", { attributeName: "transform", type: "rotate", from: `0 ${c} ${c}`, to: `360 ${c} ${c}`, dur: "90s", repeatCount: "indefinite" }) }),
13152
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("circle", { cx: c, cy: c, r: orbitR + 4, fill: "none", stroke: "rgba(255,255,255,0.03)", strokeWidth: "0.5" }),
13153
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("g", { children: [
13154
- anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13400
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("g", { transform: px(10), children: [
13401
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("circle", { cx: c, cy: c, r: orbitR, fill: "none", stroke: "rgba(255,255,255,0.05)", strokeWidth: "1", strokeDasharray: "3 5", children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animateTransform", { attributeName: "transform", type: "rotate", from: `0 ${c} ${c}`, to: `360 ${c} ${c}`, dur: "90s", repeatCount: "indefinite" }) }),
13402
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("circle", { cx: c, cy: c, r: orbitR + 4, fill: "none", stroke: "rgba(255,255,255,0.03)", strokeWidth: "0.5" }),
13403
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("g", { children: [
13404
+ anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13155
13405
  "animateTransform",
13156
13406
  {
13157
13407
  attributeName: "transform",
@@ -13166,8 +13416,8 @@ var KaleidoScopeHeroAnimation = ({
13166
13416
  const angle = Math.atan2(pos.y - c, pos.x - c);
13167
13417
  const dx = Math.cos(angle);
13168
13418
  const dy = Math.sin(angle);
13169
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("g", { children: [
13170
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13419
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("g", { children: [
13420
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13171
13421
  "line",
13172
13422
  {
13173
13423
  x1: c + dx * 52,
@@ -13178,14 +13428,14 @@ var KaleidoScopeHeroAnimation = ({
13178
13428
  strokeWidth: "0.8",
13179
13429
  strokeDasharray: "2 4",
13180
13430
  opacity: "0.2",
13181
- children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "stroke-dashoffset", from: "0", to: "-12", dur: `${1.5 + i * 0.2}s`, repeatCount: "indefinite" })
13431
+ children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "stroke-dashoffset", from: "0", to: "-12", dur: `${1.5 + i * 0.2}s`, repeatCount: "indefinite" })
13182
13432
  }
13183
13433
  ),
13184
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("circle", { r: "2.5", fill: PROTOCOLS2[i].color, opacity: "0", children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(import_jsx_runtime131.Fragment, { children: [
13185
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "cx", values: `${c + dx * 52};${pos.x}`, dur: `${2 + i * 0.3}s`, repeatCount: "indefinite" }),
13186
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "cy", values: `${c + dy * 52};${pos.y}`, dur: `${2 + i * 0.3}s`, repeatCount: "indefinite" }),
13187
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "opacity", values: "0;0.8;0", dur: `${2 + i * 0.3}s`, repeatCount: "indefinite" }),
13188
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "r", values: "1.5;3;1.5", dur: `${2 + i * 0.3}s`, repeatCount: "indefinite" })
13434
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("circle", { r: "2.5", fill: PROTOCOLS2[i].color, opacity: "0", children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)(import_jsx_runtime132.Fragment, { children: [
13435
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "cx", values: `${c + dx * 52};${pos.x}`, dur: `${2 + i * 0.3}s`, repeatCount: "indefinite" }),
13436
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "cy", values: `${c + dy * 52};${pos.y}`, dur: `${2 + i * 0.3}s`, repeatCount: "indefinite" }),
13437
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "opacity", values: "0;0.8;0", dur: `${2 + i * 0.3}s`, repeatCount: "indefinite" }),
13438
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "r", values: "1.5;3;1.5", dur: `${2 + i * 0.3}s`, repeatCount: "indefinite" })
13189
13439
  ] }) })
13190
13440
  ] }, `conn-${i}`);
13191
13441
  }),
@@ -13193,14 +13443,14 @@ var KaleidoScopeHeroAnimation = ({
13193
13443
  const pos = iconPositions[i];
13194
13444
  const labelWidth = Math.max(proto.name.length * 5.5 + 10, 32);
13195
13445
  const isHovered = hoveredProtocol === proto.name;
13196
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("g", { transform: `translate(${pos.x},${pos.y})`, children: /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(
13446
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("g", { transform: `translate(${pos.x},${pos.y})`, children: /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)(
13197
13447
  "g",
13198
13448
  {
13199
13449
  onMouseEnter: () => setHoveredProtocol(proto.name),
13200
13450
  onMouseLeave: () => setHoveredProtocol(null),
13201
13451
  style: { cursor: "pointer" },
13202
13452
  children: [
13203
- anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13453
+ anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13204
13454
  "animateTransform",
13205
13455
  {
13206
13456
  attributeName: "transform",
@@ -13211,7 +13461,7 @@ var KaleidoScopeHeroAnimation = ({
13211
13461
  repeatCount: "indefinite"
13212
13462
  }
13213
13463
  ),
13214
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13464
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13215
13465
  "circle",
13216
13466
  {
13217
13467
  cx: "0",
@@ -13221,13 +13471,13 @@ var KaleidoScopeHeroAnimation = ({
13221
13471
  stroke: proto.color,
13222
13472
  strokeWidth: "1",
13223
13473
  opacity: "0",
13224
- children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(import_jsx_runtime131.Fragment, { children: [
13225
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "r", values: `${iconR};${iconR + 12}`, dur: `${3 + i * 0.5}s`, repeatCount: "indefinite", begin: `${i * 0.4}s` }),
13226
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "opacity", values: "0.5;0", dur: `${3 + i * 0.5}s`, repeatCount: "indefinite", begin: `${i * 0.4}s` })
13474
+ children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)(import_jsx_runtime132.Fragment, { children: [
13475
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "r", values: `${iconR};${iconR + 12}`, dur: `${3 + i * 0.5}s`, repeatCount: "indefinite", begin: `${i * 0.4}s` }),
13476
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "opacity", values: "0.5;0", dur: `${3 + i * 0.5}s`, repeatCount: "indefinite", begin: `${i * 0.4}s` })
13227
13477
  ] })
13228
13478
  }
13229
13479
  ),
13230
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13480
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13231
13481
  "circle",
13232
13482
  {
13233
13483
  cx: "0",
@@ -13237,10 +13487,10 @@ var KaleidoScopeHeroAnimation = ({
13237
13487
  stroke: proto.color,
13238
13488
  strokeWidth: "1",
13239
13489
  opacity: "0.15",
13240
- children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "opacity", values: "0.15;0.4;0.15", dur: `${3 + i * 0.4}s`, repeatCount: "indefinite" })
13490
+ children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "opacity", values: "0.15;0.4;0.15", dur: `${3 + i * 0.4}s`, repeatCount: "indefinite" })
13241
13491
  }
13242
13492
  ),
13243
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13493
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13244
13494
  "circle",
13245
13495
  {
13246
13496
  cx: "0",
@@ -13250,10 +13500,10 @@ var KaleidoScopeHeroAnimation = ({
13250
13500
  stroke: proto.color,
13251
13501
  strokeWidth: "1.5",
13252
13502
  opacity: "0.25",
13253
- children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "opacity", values: "0.2;0.5;0.2", dur: `${2.5 + i * 0.3}s`, repeatCount: "indefinite" })
13503
+ children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "opacity", values: "0.2;0.5;0.2", dur: `${2.5 + i * 0.3}s`, repeatCount: "indefinite" })
13254
13504
  }
13255
13505
  ),
13256
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13506
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13257
13507
  "circle",
13258
13508
  {
13259
13509
  cx: "0",
@@ -13264,8 +13514,8 @@ var KaleidoScopeHeroAnimation = ({
13264
13514
  strokeWidth: "1"
13265
13515
  }
13266
13516
  ),
13267
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("circle", { cx: "0", cy: "0", r: iconR - 2, fill: proto.color, opacity: "0.06" }),
13268
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("foreignObject", { x: -iconR, y: -iconR, width: iconR * 2, height: iconR * 2, children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13517
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("circle", { cx: "0", cy: "0", r: iconR - 2, fill: proto.color, opacity: "0.06" }),
13518
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("foreignObject", { x: -iconR, y: -iconR, width: iconR * 2, height: iconR * 2, children: /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13269
13519
  NetworkBadge,
13270
13520
  {
13271
13521
  network: proto.network,
@@ -13273,8 +13523,8 @@ var KaleidoScopeHeroAnimation = ({
13273
13523
  className: "w-full h-full"
13274
13524
  }
13275
13525
  ) }),
13276
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("g", { opacity: isHovered ? 1 : 0, style: { transition: "opacity 0.2s ease" }, children: [
13277
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13526
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("g", { opacity: isHovered ? 1 : 0, style: { transition: "opacity 0.2s ease" }, children: [
13527
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13278
13528
  "rect",
13279
13529
  {
13280
13530
  x: -labelWidth / 2,
@@ -13288,7 +13538,7 @@ var KaleidoScopeHeroAnimation = ({
13288
13538
  strokeOpacity: 0.4
13289
13539
  }
13290
13540
  ),
13291
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13541
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13292
13542
  "text",
13293
13543
  {
13294
13544
  x: "0",
@@ -13308,9 +13558,9 @@ var KaleidoScopeHeroAnimation = ({
13308
13558
  })
13309
13559
  ] })
13310
13560
  ] }),
13311
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("g", { transform: px(5), children: [
13312
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("g", { children: [
13313
- anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13561
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("g", { transform: px(5), children: [
13562
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("g", { children: [
13563
+ anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13314
13564
  "animateTransform",
13315
13565
  {
13316
13566
  attributeName: "transform",
@@ -13323,28 +13573,28 @@ var KaleidoScopeHeroAnimation = ({
13323
13573
  ),
13324
13574
  Array.from({ length: 6 }, (_, i) => {
13325
13575
  const a = Math.PI / 3 * i;
13326
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13576
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13327
13577
  "path",
13328
13578
  {
13329
13579
  d: diamondPath(10, 22),
13330
13580
  transform: `translate(${c + innerR * Math.cos(a)},${c + innerR * Math.sin(a)}) rotate(${i * 60})`,
13331
13581
  fill: "url(#kh-gp)",
13332
13582
  opacity: "0.15",
13333
- children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "opacity", values: "0.1;0.28;0.1", dur: `${2.8 + i * 0.35}s`, repeatCount: "indefinite" })
13583
+ children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "opacity", values: "0.1;0.28;0.1", dur: `${2.8 + i * 0.35}s`, repeatCount: "indefinite" })
13334
13584
  },
13335
13585
  `d-${i}`
13336
13586
  );
13337
13587
  }),
13338
13588
  Array.from({ length: 6 }, (_, i) => {
13339
13589
  const a = Math.PI / 3 * i + Math.PI / 6;
13340
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13590
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13341
13591
  "path",
13342
13592
  {
13343
13593
  d: triPath(8),
13344
13594
  transform: `translate(${c + innerR * 0.75 * Math.cos(a)},${c + innerR * 0.75 * Math.sin(a)}) rotate(${i * 60 + 30})`,
13345
13595
  fill: "url(#kh-oc)",
13346
13596
  opacity: "0.1",
13347
- children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "opacity", values: "0.06;0.18;0.06", dur: `${3.2 + i * 0.3}s`, repeatCount: "indefinite" })
13597
+ children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "opacity", values: "0.06;0.18;0.06", dur: `${3.2 + i * 0.3}s`, repeatCount: "indefinite" })
13348
13598
  },
13349
13599
  `it-${i}`
13350
13600
  );
@@ -13352,7 +13602,7 @@ var KaleidoScopeHeroAnimation = ({
13352
13602
  Array.from({ length: 12 }, (_, i) => {
13353
13603
  const a = Math.PI / 6 * i;
13354
13604
  const r = innerR * (i % 2 === 0 ? 0.55 : 0.65);
13355
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13605
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13356
13606
  "circle",
13357
13607
  {
13358
13608
  cx: c + r * Math.cos(a),
@@ -13360,14 +13610,14 @@ var KaleidoScopeHeroAnimation = ({
13360
13610
  r: i % 2 === 0 ? 2 : 1.5,
13361
13611
  fill: "url(#kh-oc)",
13362
13612
  opacity: "0.2",
13363
- children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "opacity", values: "0.1;0.35;0.1", dur: `${2 + i % 4 * 0.5}s`, repeatCount: "indefinite" })
13613
+ children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "opacity", values: "0.1;0.35;0.1", dur: `${2 + i % 4 * 0.5}s`, repeatCount: "indefinite" })
13364
13614
  },
13365
13615
  `id-${i}`
13366
13616
  );
13367
13617
  })
13368
13618
  ] }),
13369
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("g", { children: [
13370
- anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13619
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("g", { children: [
13620
+ anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13371
13621
  "animateTransform",
13372
13622
  {
13373
13623
  attributeName: "transform",
@@ -13380,27 +13630,27 @@ var KaleidoScopeHeroAnimation = ({
13380
13630
  ),
13381
13631
  Array.from({ length: 6 }, (_, i) => {
13382
13632
  const a = Math.PI / 3 * i + Math.PI / 6;
13383
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13633
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13384
13634
  "path",
13385
13635
  {
13386
13636
  d: hexPath2(6),
13387
13637
  transform: `translate(${c + innerR * 0.42 * Math.cos(a)},${c + innerR * 0.42 * Math.sin(a)})`,
13388
13638
  fill: "url(#kh-bp)",
13389
13639
  opacity: "0.1",
13390
- children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "opacity", values: "0.06;0.18;0.06", dur: `${2.5 + i * 0.3}s`, repeatCount: "indefinite" })
13640
+ children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "opacity", values: "0.06;0.18;0.06", dur: `${2.5 + i * 0.3}s`, repeatCount: "indefinite" })
13391
13641
  },
13392
13642
  `ih-${i}`
13393
13643
  );
13394
13644
  })
13395
13645
  ] })
13396
13646
  ] }),
13397
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("g", { transform: px(18), children: Array.from({ length: 16 }, (_, i) => {
13647
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("g", { transform: px(18), children: Array.from({ length: 16 }, (_, i) => {
13398
13648
  const a = Math.PI * 2 * i / 16;
13399
13649
  const baseR = 60 + i % 4 * 45;
13400
13650
  const x = c + baseR * Math.cos(a);
13401
13651
  const y = c + baseR * Math.sin(a);
13402
13652
  const colors2 = ["#0e9dff", "#8a5cf6", "#22c55e", "#F7931A", "#06b6d4", "#15E99A"];
13403
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13653
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13404
13654
  "circle",
13405
13655
  {
13406
13656
  cx: x,
@@ -13408,26 +13658,26 @@ var KaleidoScopeHeroAnimation = ({
13408
13658
  r: 1 + i % 3 * 0.5,
13409
13659
  fill: colors2[i % colors2.length],
13410
13660
  opacity: "0",
13411
- children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(import_jsx_runtime131.Fragment, { children: [
13412
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "opacity", values: "0;0.6;0", dur: `${3 + i % 5 * 0.8}s`, repeatCount: "indefinite", begin: `${i % 7 * 0.5}s` }),
13413
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "cx", values: `${x};${x + Math.cos(a) * 15}`, dur: `${4 + i % 3 * 1.5}s`, repeatCount: "indefinite", begin: `${i % 7 * 0.5}s` }),
13414
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "cy", values: `${y};${y + Math.sin(a) * 15}`, dur: `${4 + i % 3 * 1.5}s`, repeatCount: "indefinite", begin: `${i % 7 * 0.5}s` })
13661
+ children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)(import_jsx_runtime132.Fragment, { children: [
13662
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "opacity", values: "0;0.6;0", dur: `${3 + i % 5 * 0.8}s`, repeatCount: "indefinite", begin: `${i % 7 * 0.5}s` }),
13663
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "cx", values: `${x};${x + Math.cos(a) * 15}`, dur: `${4 + i % 3 * 1.5}s`, repeatCount: "indefinite", begin: `${i % 7 * 0.5}s` }),
13664
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "cy", values: `${y};${y + Math.sin(a) * 15}`, dur: `${4 + i % 3 * 1.5}s`, repeatCount: "indefinite", begin: `${i % 7 * 0.5}s` })
13415
13665
  ] })
13416
13666
  },
13417
13667
  `p-${i}`
13418
13668
  );
13419
13669
  }) }),
13420
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("g", { children: [
13421
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("circle", { cx: c, cy: c, r: "75", fill: "url(#kh-center-glow)", children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "r", values: "70;80;70", dur: "4s", repeatCount: "indefinite" }) }),
13422
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("circle", { cx: c, cy: c, r: "52", fill: "none", stroke: "url(#kh-bp)", strokeWidth: "1", opacity: "0", children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(import_jsx_runtime131.Fragment, { children: [
13423
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "r", values: "48;65", dur: "3s", repeatCount: "indefinite" }),
13424
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "opacity", values: "0.4;0", dur: "3s", repeatCount: "indefinite" })
13670
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("g", { children: [
13671
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("circle", { cx: c, cy: c, r: "75", fill: "url(#kh-center-glow)", children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "r", values: "70;80;70", dur: "4s", repeatCount: "indefinite" }) }),
13672
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("circle", { cx: c, cy: c, r: "52", fill: "none", stroke: "url(#kh-bp)", strokeWidth: "1", opacity: "0", children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)(import_jsx_runtime132.Fragment, { children: [
13673
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "r", values: "48;65", dur: "3s", repeatCount: "indefinite" }),
13674
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "opacity", values: "0.4;0", dur: "3s", repeatCount: "indefinite" })
13425
13675
  ] }) }),
13426
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("circle", { cx: c, cy: c, r: "48", fill: "none", stroke: "url(#kh-gp)", strokeWidth: "0.8", opacity: "0", children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(import_jsx_runtime131.Fragment, { children: [
13427
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "r", values: "48;60", dur: "3s", repeatCount: "indefinite", begin: "1.5s" }),
13428
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "opacity", values: "0.3;0", dur: "3s", repeatCount: "indefinite", begin: "1.5s" })
13676
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("circle", { cx: c, cy: c, r: "48", fill: "none", stroke: "url(#kh-gp)", strokeWidth: "0.8", opacity: "0", children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)(import_jsx_runtime132.Fragment, { children: [
13677
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "r", values: "48;60", dur: "3s", repeatCount: "indefinite", begin: "1.5s" }),
13678
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "opacity", values: "0.3;0", dur: "3s", repeatCount: "indefinite", begin: "1.5s" })
13429
13679
  ] }) }),
13430
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13680
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13431
13681
  "path",
13432
13682
  {
13433
13683
  d: hexPath2(50),
@@ -13437,13 +13687,13 @@ var KaleidoScopeHeroAnimation = ({
13437
13687
  strokeWidth: "1.5",
13438
13688
  opacity: "0.4",
13439
13689
  filter: "url(#kh-glow)",
13440
- children: anim && /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(import_jsx_runtime131.Fragment, { children: [
13441
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "opacity", values: "0.3;0.65;0.3", dur: "3s", repeatCount: "indefinite" }),
13442
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("animate", { attributeName: "stroke-width", values: "1.5;2.5;1.5", dur: "3s", repeatCount: "indefinite" })
13690
+ children: anim && /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)(import_jsx_runtime132.Fragment, { children: [
13691
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "opacity", values: "0.3;0.65;0.3", dur: "3s", repeatCount: "indefinite" }),
13692
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("animate", { attributeName: "stroke-width", values: "1.5;2.5;1.5", dur: "3s", repeatCount: "indefinite" })
13443
13693
  ] })
13444
13694
  }
13445
13695
  ),
13446
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
13696
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
13447
13697
  "path",
13448
13698
  {
13449
13699
  d: hexPath2(46),
@@ -13453,21 +13703,21 @@ var KaleidoScopeHeroAnimation = ({
13453
13703
  strokeWidth: "0.5"
13454
13704
  }
13455
13705
  ),
13456
- /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("g", { transform: `translate(${c - 34},${c - 34}) scale(0.325)`, children: [
13457
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: "M69.7141 207.3H0.908203L35.3243 172.936L69.7141 207.3Z", fill: "#6F32FF" }),
13458
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: "M138.441 0.96106V69.767L104.078 35.3508L138.441 0.96106Z", fill: "#17B581" }),
13459
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: "M138.415 138.547V207.352L104.051 172.936L138.415 138.547Z", fill: "#17B581" }),
13460
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: "M138.441 69.7406V0.96106L172.804 35.3772L138.441 69.767V69.7406Z", fill: "#17B581" }),
13461
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: "M69.6614 138.494V69.6879L104.025 104.104L69.6614 138.494Z", fill: "#15E99A" }),
13462
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: "M69.6615 69.7142V138.52L35.2981 104.104L69.6615 69.7142Z", fill: "#15E99A" }),
13463
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: "M138.467 207.379V138.573L172.831 172.989L138.467 207.379Z", fill: "#17B581" }),
13464
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: "M0.908203 0.908325H69.7141L35.298 35.2718L0.908203 0.908325Z", fill: "#6F32FF" }),
13465
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: "M207.22 207.3H138.415L172.831 172.936L207.22 207.3Z", fill: "#17B581" }),
13466
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: "M138.415 0.987427H207.22L172.804 35.3509L138.415 0.987427Z", fill: "#17B581" }),
13467
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: "M138.467 69.7143H69.6614L104.078 35.3508L138.467 69.7143Z", fill: "#17B581" }),
13468
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: "M69.635 138.494H138.441L104.025 172.857L69.635 138.494Z", fill: "#17B581" }),
13469
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: "M138.415 138.494H69.635L104.025 104.157L138.388 138.494H138.415Z", fill: "#15E99A" }),
13470
- /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("path", { d: "M138.415 69.7142L104.051 104.051L69.6614 69.7142H138.441H138.415Z", fill: "#15E99A" })
13706
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("g", { transform: `translate(${c - 34},${c - 34}) scale(0.325)`, children: [
13707
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("path", { d: "M69.7141 207.3H0.908203L35.3243 172.936L69.7141 207.3Z", fill: "#6F32FF" }),
13708
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("path", { d: "M138.441 0.96106V69.767L104.078 35.3508L138.441 0.96106Z", fill: "#17B581" }),
13709
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("path", { d: "M138.415 138.547V207.352L104.051 172.936L138.415 138.547Z", fill: "#17B581" }),
13710
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("path", { d: "M138.441 69.7406V0.96106L172.804 35.3772L138.441 69.767V69.7406Z", fill: "#17B581" }),
13711
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("path", { d: "M69.6614 138.494V69.6879L104.025 104.104L69.6614 138.494Z", fill: "#15E99A" }),
13712
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("path", { d: "M69.6615 69.7142V138.52L35.2981 104.104L69.6615 69.7142Z", fill: "#15E99A" }),
13713
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("path", { d: "M138.467 207.379V138.573L172.831 172.989L138.467 207.379Z", fill: "#17B581" }),
13714
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("path", { d: "M0.908203 0.908325H69.7141L35.298 35.2718L0.908203 0.908325Z", fill: "#6F32FF" }),
13715
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("path", { d: "M207.22 207.3H138.415L172.831 172.936L207.22 207.3Z", fill: "#17B581" }),
13716
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("path", { d: "M138.415 0.987427H207.22L172.804 35.3509L138.415 0.987427Z", fill: "#17B581" }),
13717
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("path", { d: "M138.467 69.7143H69.6614L104.078 35.3508L138.467 69.7143Z", fill: "#17B581" }),
13718
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("path", { d: "M69.635 138.494H138.441L104.025 172.857L69.635 138.494Z", fill: "#17B581" }),
13719
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("path", { d: "M138.415 138.494H69.635L104.025 104.157L138.388 138.494H138.415Z", fill: "#15E99A" }),
13720
+ /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("path", { d: "M138.415 69.7142L104.051 104.051L69.6614 69.7142H138.441H138.415Z", fill: "#15E99A" })
13471
13721
  ] })
13472
13722
  ] })
13473
13723
  ]
@@ -13478,7 +13728,7 @@ var KaleidoScopeHeroAnimation = ({
13478
13728
  };
13479
13729
 
13480
13730
  // src/web/components/deposit-success-screen.tsx
13481
- var import_jsx_runtime132 = require("react/jsx-runtime");
13731
+ var import_jsx_runtime133 = require("react/jsx-runtime");
13482
13732
  function DepositSuccessScreen({
13483
13733
  handleDone,
13484
13734
  displayTicker,
@@ -13491,20 +13741,20 @@ function DepositSuccessScreen({
13491
13741
  const isInstant = network === "lightning" || network === "spark";
13492
13742
  const title = isInstant ? "Payment Received!" : "Deposit Detected!";
13493
13743
  const subtitle = isInstant ? `Your ${displayTicker} has arrived via ${networkLabel}.` : `Incoming deposit detected via ${networkLabel}. Funds will be available after confirmation.`;
13494
- return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("div", { className: "flex h-screen flex-col overflow-hidden bg-background bg-page-radial font-display text-foreground", children: /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("div", { className: "flex flex-1 flex-col items-center justify-center p-6 text-center", children: [
13495
- /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("div", { className: "relative mb-8", children: [
13496
- /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("div", { className: "absolute inset-0 scale-150 animate-pulse rounded-full bg-secondary/25 blur-2xl" }),
13497
- /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("div", { className: "relative flex size-20 items-center justify-center rounded-full bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card-hero shadow-glow-brand", children: /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(IconGlyph, { glyph: CheckCircle, className: "size-12 text-brand animate-in zoom-in-50 duration-500" }) })
13744
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("div", { className: "flex h-screen flex-col overflow-hidden bg-background bg-page-radial font-display text-foreground", children: /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)("div", { className: "flex flex-1 flex-col items-center justify-center p-6 text-center", children: [
13745
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)("div", { className: "relative mb-8", children: [
13746
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("div", { className: "absolute inset-0 scale-150 animate-pulse rounded-full bg-secondary/25 blur-2xl" }),
13747
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("div", { className: "relative flex size-20 items-center justify-center rounded-full bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card-hero shadow-glow-brand", children: /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(IconGlyph, { glyph: CheckCircle, className: "size-12 text-brand animate-in zoom-in-50 duration-500" }) })
13498
13748
  ] }),
13499
- /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("h1", { className: "mb-2 text-headline font-bold text-gradient-brand", children: title }),
13500
- /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("p", { className: "mb-8 max-w-[260px] text-caption leading-relaxed text-muted-foreground", children: subtitle }),
13501
- /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("div", { className: "mb-10 flex items-center gap-3 rounded-2xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card-hero px-4 py-3 shadow-card", children: [
13502
- /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(AssetIcon, { ticker: displayTicker, size: 36 }),
13503
- /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)("div", { className: "text-left", children: [
13504
- /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("p", { className: "text-body font-bold text-foreground", children: displayTicker }),
13505
- /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("p", { className: "text-caption text-foreground/55", children: selectedAsset?.name ?? displayTicker })
13749
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("h1", { className: "mb-2 text-headline font-bold text-gradient-brand", children: title }),
13750
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("p", { className: "mb-8 max-w-[260px] text-caption leading-relaxed text-muted-foreground", children: subtitle }),
13751
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)("div", { className: "mb-10 flex items-center gap-3 rounded-2xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card-hero px-4 py-3 shadow-card", children: [
13752
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(AssetIcon, { ticker: displayTicker, size: 36 }),
13753
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)("div", { className: "text-left", children: [
13754
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("p", { className: "text-body font-bold text-foreground", children: displayTicker }),
13755
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("p", { className: "text-caption text-foreground/55", children: selectedAsset?.name ?? displayTicker })
13506
13756
  ] }),
13507
- /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)(
13757
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(
13508
13758
  "div",
13509
13759
  {
13510
13760
  className: cn(
@@ -13514,27 +13764,27 @@ function DepositSuccessScreen({
13514
13764
  ),
13515
13765
  children: [
13516
13766
  net.icon,
13517
- /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("span", { children: networkLabel })
13767
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("span", { children: networkLabel })
13518
13768
  ]
13519
13769
  }
13520
13770
  )
13521
13771
  ] }),
13522
- /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)(Button, { variant: "cta", size: "cta", onClick: handleDone, children: [
13523
- /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(IconGlyph, { glyph: AccountBalanceWallet, className: "text-icon-lg" }),
13772
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(Button, { variant: "cta", size: "cta", onClick: handleDone, children: [
13773
+ /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(IconGlyph, { glyph: AccountBalanceWallet, className: "text-icon-lg" }),
13524
13774
  "Back to Wallet"
13525
13775
  ] })
13526
13776
  ] }) });
13527
13777
  }
13528
13778
 
13529
13779
  // src/web/components/deposit-network-default-modal.tsx
13530
- var import_jsx_runtime133 = require("react/jsx-runtime");
13780
+ var import_jsx_runtime134 = require("react/jsx-runtime");
13531
13781
  var NETWORK_OPTIONS = {
13532
13782
  RGB: {
13533
13783
  network: "onchain",
13534
13784
  account: "RGB",
13535
13785
  label: "On-chain / Lightning",
13536
13786
  description: "Classic Bitcoin address or Lightning invoice via the RLN node.",
13537
- icon: /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(OnchainNetworkIcon, { className: "size-5" }),
13787
+ icon: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(OnchainNetworkIcon, { className: "size-5" }),
13538
13788
  accentBg: "bg-network-bitcoin/10",
13539
13789
  accentBorder: "border-network-bitcoin/30",
13540
13790
  accentText: "text-network-bitcoin-fg"
@@ -13544,7 +13794,7 @@ var NETWORK_OPTIONS = {
13544
13794
  account: "SPARK",
13545
13795
  label: "Spark",
13546
13796
  description: "Receive directly into your Spark account. Fast and free.",
13547
- icon: /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("img", { src: "/icons/spark/Asterisk/Spark Asterisk White.svg", alt: "", className: "kui-mono-icon h-[18px]" }),
13797
+ icon: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("img", { src: "/icons/spark/Asterisk/Spark Asterisk White.svg", alt: "", className: "kui-mono-icon h-[18px]" }),
13548
13798
  accentBg: "bg-info/10",
13549
13799
  accentBorder: "border-info/30",
13550
13800
  accentText: "text-info-fg"
@@ -13554,7 +13804,7 @@ var NETWORK_OPTIONS = {
13554
13804
  account: "ARKADE",
13555
13805
  label: "Arkade",
13556
13806
  description: "Receive directly into your Arkade account. Low fees, near-instant settlement.",
13557
- icon: /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("img", { src: "/icons/arkade/arkade-icon.svg", alt: "", className: "h-[18px]" }),
13807
+ icon: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("img", { src: "/icons/arkade/arkade-icon.svg", alt: "", className: "h-[18px]" }),
13558
13808
  accentBg: "bg-network-arkade/10",
13559
13809
  accentBorder: "border-network-arkade/30",
13560
13810
  accentText: "text-network-arkade-fg"
@@ -13566,7 +13816,7 @@ var NETWORK_OPTIONS = {
13566
13816
  account: "LIQUID",
13567
13817
  label: "Liquid",
13568
13818
  description: "Receive L-BTC or a Liquid asset (USDt) via a confidential Liquid address.",
13569
- icon: /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(LiquidNetworkIcon, { className: "h-[18px] w-[18px]" }),
13819
+ icon: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(LiquidNetworkIcon, { className: "h-[18px] w-[18px]" }),
13570
13820
  accentBg: "bg-network-liquid/10",
13571
13821
  accentBorder: "border-network-liquid/30",
13572
13822
  accentText: "text-network-liquid-fg"
@@ -13581,20 +13831,20 @@ function DepositNetworkDefaultModal({
13581
13831
  }) {
13582
13832
  if (!open) return null;
13583
13833
  const options = availableAccounts.map((id) => NETWORK_OPTIONS[id]).filter(Boolean);
13584
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("div", { className: "fixed inset-0 z-50 flex items-end justify-center bg-background/80 backdrop-blur-lg", children: /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)("div", { className: "w-full space-y-4 rounded-t-2xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card-hero px-4 pb-7 pt-5 shadow-popover animate-in slide-in-from-bottom-4 duration-200", children: [
13585
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("div", { className: "-mt-1 mb-1 flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("div", { className: "h-1 w-10 rounded-full bg-secondary/40" }) }),
13586
- /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)("div", { children: [
13587
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("p", { className: "text-body font-bold text-foreground", children: "Choose your default network" }),
13588
- /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)("p", { className: "mt-0.5 text-tiny text-foreground/55", children: [
13834
+ return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("div", { className: "fixed inset-0 z-50 flex items-end justify-center bg-background/80 backdrop-blur-lg", children: /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)("div", { className: "w-full space-y-4 rounded-t-2xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card-hero px-4 pb-7 pt-5 shadow-popover animate-in slide-in-from-bottom-4 duration-200", children: [
13835
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("div", { className: "-mt-1 mb-1 flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("div", { className: "h-1 w-10 rounded-full bg-secondary/40" }) }),
13836
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)("div", { children: [
13837
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("p", { className: "text-body font-bold text-foreground", children: "Choose your default network" }),
13838
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)("p", { className: "mt-0.5 text-tiny text-foreground/55", children: [
13589
13839
  "Pick how you would like to receive",
13590
13840
  " ",
13591
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("span", { className: "font-semibold text-muted-foreground", children: assetTicker }),
13841
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("span", { className: "font-semibold text-muted-foreground", children: assetTicker }),
13592
13842
  " by default. You can always switch in the deposit screen."
13593
13843
  ] })
13594
13844
  ] }),
13595
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("div", { className: "space-y-2", children: options.map((option) => {
13845
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("div", { className: "space-y-2", children: options.map((option) => {
13596
13846
  const isSuggested = option.account === suggestedAccount;
13597
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(
13847
+ return /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(
13598
13848
  "button",
13599
13849
  {
13600
13850
  type: "button",
@@ -13604,7 +13854,7 @@ function DepositNetworkDefaultModal({
13604
13854
  isSuggested ? cn(option.accentBg, "shadow-glow-violet-soft ring-1 ring-inset ring-secondary/50") : "bg-muted/40 shadow-raised hover-gradient-violet"
13605
13855
  ),
13606
13856
  children: [
13607
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
13857
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
13608
13858
  "div",
13609
13859
  {
13610
13860
  className: cn(
@@ -13615,10 +13865,10 @@ function DepositNetworkDefaultModal({
13615
13865
  children: option.icon
13616
13866
  }
13617
13867
  ),
13618
- /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)("div", { className: "min-w-0 flex-1", children: [
13619
- /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)("div", { className: "flex items-center gap-2", children: [
13620
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("span", { className: cn("text-caption font-bold", isSuggested ? option.accentText : "text-foreground"), children: option.label }),
13621
- isSuggested && /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
13868
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)("div", { className: "min-w-0 flex-1", children: [
13869
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)("div", { className: "flex items-center gap-2", children: [
13870
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("span", { className: cn("text-caption font-bold", isSuggested ? option.accentText : "text-foreground"), children: option.label }),
13871
+ isSuggested && /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
13622
13872
  "span",
13623
13873
  {
13624
13874
  className: cn(
@@ -13631,9 +13881,9 @@ function DepositNetworkDefaultModal({
13631
13881
  }
13632
13882
  )
13633
13883
  ] }),
13634
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("p", { className: "mt-0.5 text-xxs leading-snug text-foreground/55", children: option.description })
13884
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("p", { className: "mt-0.5 text-xxs leading-snug text-foreground/55", children: option.description })
13635
13885
  ] }),
13636
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
13886
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
13637
13887
  IconGlyph,
13638
13888
  {
13639
13889
  glyph: ChevronRight,
@@ -13653,7 +13903,7 @@ function DepositNetworkDefaultModal({
13653
13903
 
13654
13904
  // src/web/components/btc-unified-receive.tsx
13655
13905
  var import_react42 = require("react");
13656
- var import_jsx_runtime134 = require("react/jsx-runtime");
13906
+ var import_jsx_runtime135 = require("react/jsx-runtime");
13657
13907
  function formatSatsForRow(value) {
13658
13908
  if (!value || value <= 0 || !Number.isFinite(value)) return null;
13659
13909
  return `${value.toLocaleString("en-US")} sats`;
@@ -13687,14 +13937,14 @@ function BtcUnifiedReceive({
13687
13937
  setInvoiceStatus(null);
13688
13938
  setAccountReceiveResult(null);
13689
13939
  };
13690
- return /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)("div", { className: "space-y-3 animate-in fade-in zoom-in-95 duration-300", children: [
13691
- /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)("div", { className: "flex flex-col items-center gap-3", children: [
13692
- /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)("div", { className: "relative flex flex-col items-center p-2", children: [
13693
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(QrCode, { value: accountReceiveResult.qrValue, size: 200, tone: "onDark" }),
13694
- isInvoicePaid && /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(PaidOverlay, {})
13940
+ return /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)("div", { className: "space-y-3 animate-in fade-in zoom-in-95 duration-300", children: [
13941
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)("div", { className: "flex flex-col items-center gap-3", children: [
13942
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)("div", { className: "relative flex flex-col items-center p-2", children: [
13943
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(QrCode, { value: accountReceiveResult.qrValue, size: 200, tone: "onDark" }),
13944
+ isInvoicePaid && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(PaidOverlay, {})
13695
13945
  ] }),
13696
- /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)("div", { className: "flex items-center justify-center gap-2.5", children: [
13697
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
13946
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)("div", { className: "flex items-center justify-center gap-2.5", children: [
13947
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
13698
13948
  GlyphButton,
13699
13949
  {
13700
13950
  label: `Copy ${accountReceiveResult.qrLabel}`,
@@ -13704,8 +13954,8 @@ function BtcUnifiedReceive({
13704
13954
  onClick: () => void copyToClipboard(accountReceiveResult.qrValue)
13705
13955
  }
13706
13956
  ),
13707
- showRegenerate && /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(GlyphButton, { label: "New address", variant: "surface", size: "lg", icon: Refresh, onClick: handleNewAddress }),
13708
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
13957
+ showRegenerate && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(GlyphButton, { label: "New address", variant: "surface", size: "lg", icon: Refresh, onClick: handleNewAddress }),
13958
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
13709
13959
  GlyphButton,
13710
13960
  {
13711
13961
  label: "Edit amount and description",
@@ -13717,7 +13967,7 @@ function BtcUnifiedReceive({
13717
13967
  )
13718
13968
  ] })
13719
13969
  ] }),
13720
- invoiceStatus && /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
13970
+ invoiceStatus && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
13721
13971
  InvoiceStatusBanner,
13722
13972
  {
13723
13973
  isInvoicePending,
@@ -13726,11 +13976,11 @@ function BtcUnifiedReceive({
13726
13976
  invoiceStatus
13727
13977
  }
13728
13978
  ),
13729
- /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)("div", { className: "space-y-1.5", children: [
13730
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("p", { className: cn("text-muted-foreground", eyebrow), children: "Available Addresses" }),
13979
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)("div", { className: "space-y-1.5", children: [
13980
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("p", { className: cn("text-muted-foreground", eyebrow), children: "Available Addresses" }),
13731
13981
  accountReceiveResult.addresses.map((address) => {
13732
13982
  const network = NETWORK_CONFIG[address.network];
13733
- return /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(
13983
+ return /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(
13734
13984
  "div",
13735
13985
  {
13736
13986
  className: cn(
@@ -13740,35 +13990,35 @@ function BtcUnifiedReceive({
13740
13990
  style: { borderLeftWidth: 3, borderLeftColor: network.color },
13741
13991
  onClick: () => void copyToClipboard(address.value),
13742
13992
  children: [
13743
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("div", { className: cn("flex size-5 flex-shrink-0 items-center justify-center rounded-md", network.bg), children: network.icon }),
13744
- /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)("div", { className: "min-w-0 flex-1", children: [
13745
- /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)("div", { className: "flex items-center gap-1.5", children: [
13746
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("p", { className: cn(eyebrow, network.text), children: address.label }),
13993
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("div", { className: cn("flex size-5 flex-shrink-0 items-center justify-center rounded-md", network.bg), children: network.icon }),
13994
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)("div", { className: "min-w-0 flex-1", children: [
13995
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)("div", { className: "flex items-center gap-1.5", children: [
13996
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("p", { className: cn(eyebrow, network.text), children: address.label }),
13747
13997
  (() => {
13748
13998
  const amountLabel = formatSatsForRow(address.amountSats);
13749
- return amountLabel ? /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("span", { className: "rounded-full bg-secondary/15 px-1.5 py-0.5 text-tiny font-bold tabular-nums text-secondary-content", children: amountLabel }) : null;
13999
+ return amountLabel ? /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("span", { className: "rounded-full bg-secondary/15 px-1.5 py-0.5 text-tiny font-bold tabular-nums text-secondary-content", children: amountLabel }) : null;
13750
14000
  })()
13751
14001
  ] }),
13752
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("p", { className: "mt-0.5 truncate font-mono text-tiny text-muted-foreground", children: address.value.length > 50 ? `${address.value.slice(0, 18)}...${address.value.slice(-14)}` : address.value })
14002
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("p", { className: "mt-0.5 truncate font-mono text-tiny text-muted-foreground", children: address.value.length > 50 ? `${address.value.slice(0, 18)}...${address.value.slice(-14)}` : address.value })
13753
14003
  ] }),
13754
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(CopyIcon, { copied: copied === address.value })
14004
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(CopyIcon, { copied: copied === address.value })
13755
14005
  ]
13756
14006
  },
13757
14007
  address.network
13758
14008
  );
13759
14009
  })
13760
14010
  ] }),
13761
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
14011
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
13762
14012
  BottomSheet,
13763
14013
  {
13764
14014
  open: showEdit,
13765
14015
  title: "Edit request",
13766
- icon: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(IconGlyph, { glyph: Edit, size: "md" }),
14016
+ icon: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(IconGlyph, { glyph: Edit, size: "md" }),
13767
14017
  onClose: () => setShowEdit(false),
13768
- children: /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)("div", { className: "space-y-4", children: [
13769
- /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)("div", { className: "flex flex-col gap-2", children: [
13770
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(Label3, { htmlFor: amountId, children: "Amount (optional)" }),
13771
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
14018
+ children: /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)("div", { className: "space-y-4", children: [
14019
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)("div", { className: "flex flex-col gap-2", children: [
14020
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(Label3, { htmlFor: amountId, children: "Amount (optional)" }),
14021
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
13772
14022
  "input",
13773
14023
  {
13774
14024
  id: amountId,
@@ -13780,14 +14030,14 @@ function BtcUnifiedReceive({
13780
14030
  inputMode: "decimal"
13781
14031
  }
13782
14032
  ),
13783
- amount && loading && /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)("p", { className: "flex items-center gap-1 text-xxs text-warning-fg/70", children: [
13784
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(IconGlyph, { glyph: ProgressActivity, className: "animate-spin text-icon-xxs" }),
14033
+ amount && loading && /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)("p", { className: "flex items-center gap-1 text-xxs text-warning-fg/70", children: [
14034
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(IconGlyph, { glyph: ProgressActivity, className: "animate-spin text-icon-xxs" }),
13785
14035
  "Updating invoice..."
13786
14036
  ] })
13787
14037
  ] }),
13788
- onDescriptionChange && /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)("div", { className: "flex flex-col gap-2", children: [
13789
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(Label3, { htmlFor: descriptionId, children: "Description (optional)" }),
13790
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
14038
+ onDescriptionChange && /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)("div", { className: "flex flex-col gap-2", children: [
14039
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(Label3, { htmlFor: descriptionId, children: "Description (optional)" }),
14040
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
13791
14041
  "input",
13792
14042
  {
13793
14043
  id: descriptionId,
@@ -13799,7 +14049,7 @@ function BtcUnifiedReceive({
13799
14049
  }
13800
14050
  )
13801
14051
  ] }),
13802
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(Button, { variant: "cta", className: "w-full", onClick: () => setShowEdit(false), children: "Done" })
14052
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(Button, { variant: "cta", className: "w-full", onClick: () => setShowEdit(false), children: "Done" })
13803
14053
  ] })
13804
14054
  }
13805
14055
  )
@@ -13808,7 +14058,7 @@ function BtcUnifiedReceive({
13808
14058
 
13809
14059
  // src/web/components/deposit-generated-view.tsx
13810
14060
  var import_react43 = require("react");
13811
- var import_jsx_runtime135 = require("react/jsx-runtime");
14061
+ var import_jsx_runtime136 = require("react/jsx-runtime");
13812
14062
  function parseAssetAmount(amountString, asset) {
13813
14063
  const value = Number(amountString);
13814
14064
  if (!Number.isFinite(value)) return 0;
@@ -13851,10 +14101,10 @@ function DepositGeneratedView({
13851
14101
  }) {
13852
14102
  const btcAmountId = (0, import_react43.useId)();
13853
14103
  const assetAmountId = (0, import_react43.useId)();
13854
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)("div", { className: "space-y-3 animate-in fade-in zoom-in-95 duration-300", children: [
13855
- (network === "lightning" || network === "arkade" && arkSubMode === "ark") && isBtc && /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)("div", { className: "flex flex-col gap-2 rounded-xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card p-2.5 shadow-card", children: [
13856
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("div", { className: "flex items-center justify-between px-1", children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(Label3, { htmlFor: btcAmountId, children: "Specify amount (optional)" }) }),
13857
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
14104
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "space-y-3 animate-in fade-in zoom-in-95 duration-300", children: [
14105
+ (network === "lightning" || network === "arkade" && arkSubMode === "ark") && isBtc && /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "flex flex-col gap-2 rounded-xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card p-2.5 shadow-card", children: [
14106
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("div", { className: "flex items-center justify-between px-1", children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(Label3, { htmlFor: btcAmountId, children: "Specify amount (optional)" }) }),
14107
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
13858
14108
  "input",
13859
14109
  {
13860
14110
  id: btcAmountId,
@@ -13866,16 +14116,16 @@ function DepositGeneratedView({
13866
14116
  inputMode: "decimal"
13867
14117
  }
13868
14118
  ),
13869
- amount && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("p", { className: "text-xxs text-warning-fg/70", children: loading ? /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)("span", { className: "flex items-center gap-1", children: [
13870
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(IconGlyph, { glyph: ProgressActivity, className: "animate-spin text-icon-xxs" }),
14119
+ amount && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: "text-xxs text-warning-fg/70", children: loading ? /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("span", { className: "flex items-center gap-1", children: [
14120
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(IconGlyph, { glyph: ProgressActivity, className: "animate-spin text-icon-xxs" }),
13871
14121
  "Updating ",
13872
14122
  network === "arkade" ? "URI" : "invoice",
13873
14123
  "..."
13874
14124
  ] }) : network === "arkade" ? `Unified URI for ${amount} ${getUnitLabel()}` : `Invoice for ${amount} ${getUnitLabel()}` })
13875
14125
  ] }),
13876
- network === "lightning" && !isBtc && /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)("div", { className: "flex flex-col gap-2 rounded-xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card p-2.5 shadow-card", children: [
13877
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("div", { className: "flex items-center justify-between px-1", children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(Label3, { htmlFor: assetAmountId, children: "Specify amount (optional)" }) }),
13878
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
14126
+ network === "lightning" && !isBtc && /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "flex flex-col gap-2 rounded-xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card p-2.5 shadow-card", children: [
14127
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("div", { className: "flex items-center justify-between px-1", children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(Label3, { htmlFor: assetAmountId, children: "Specify amount (optional)" }) }),
14128
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
13879
14129
  "input",
13880
14130
  {
13881
14131
  id: assetAmountId,
@@ -13887,25 +14137,25 @@ function DepositGeneratedView({
13887
14137
  inputMode: "decimal"
13888
14138
  }
13889
14139
  ),
13890
- amount && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("p", { className: "text-xxs text-warning-fg/70", children: loading ? /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)("span", { className: "flex items-center gap-1", children: [
13891
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(IconGlyph, { glyph: ProgressActivity, className: "animate-spin text-icon-xxs" }),
14140
+ amount && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: "text-xxs text-warning-fg/70", children: loading ? /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("span", { className: "flex items-center gap-1", children: [
14141
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(IconGlyph, { glyph: ProgressActivity, className: "animate-spin text-icon-xxs" }),
13892
14142
  "Updating invoice..."
13893
14143
  ] }) : `Invoice for ${amount} ${getUnitLabel()}` }),
13894
- amount && maxDepositAmount > 0 && parseAssetAmount(amount, selectedAsset) > maxDepositAmount && /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)("p", { className: "rounded-lg bg-danger/10 px-2.5 py-1.5 text-xxs text-danger-fg", children: [
14144
+ amount && maxDepositAmount > 0 && parseAssetAmount(amount, selectedAsset) > maxDepositAmount && /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("p", { className: "rounded-lg bg-danger/10 px-2.5 py-1.5 text-xxs text-danger-fg", children: [
13895
14145
  "Exceeds max: ",
13896
14146
  formatAssetAmount(maxDepositAmount, selectedAsset),
13897
14147
  " ",
13898
14148
  getUnitLabel()
13899
14149
  ] })
13900
14150
  ] }),
13901
- /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)("div", { className: "flex flex-col items-center gap-3", children: [
13902
- /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(
14151
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "flex flex-col items-center gap-3", children: [
14152
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(
13903
14153
  "div",
13904
14154
  {
13905
14155
  className: "relative flex flex-col items-center rounded-2xl bg-white p-3.5 transition-all",
13906
14156
  style: net.qrGlow,
13907
14157
  children: [
13908
- showQrNetworkBadge && network !== "spark" && network !== "arkade" && /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(
14158
+ showQrNetworkBadge && network !== "spark" && network !== "arkade" && /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(
13909
14159
  "div",
13910
14160
  {
13911
14161
  className: cn(
@@ -13914,21 +14164,21 @@ function DepositGeneratedView({
13914
14164
  ),
13915
14165
  children: [
13916
14166
  net.icon,
13917
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("span", { children: net.label })
14167
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("span", { children: net.label })
13918
14168
  ]
13919
14169
  }
13920
14170
  ),
13921
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(QrCode, { value: address, size: 188 }),
13922
- isInvoicePaid && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(PaidOverlay, {}),
14171
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(QrCode, { value: address, size: 188 }),
14172
+ isInvoicePaid && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(PaidOverlay, {}),
13923
14173
  loading && !isInvoicePaid && // Loading scrim — sits over the QR while a fresh address/invoice
13924
14174
  // is being fetched (e.g. after the New Address button).
13925
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("div", { className: "absolute inset-0 flex items-center justify-center rounded-2xl bg-foreground/80 backdrop-blur-sm", children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(IconGlyph, { glyph: ProgressActivity, className: "animate-spin text-icon-3xl text-network-bitcoin-fg" }) })
14175
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("div", { className: "absolute inset-0 flex items-center justify-center rounded-2xl bg-foreground/80 backdrop-blur-sm", children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(IconGlyph, { glyph: ProgressActivity, className: "animate-spin text-icon-3xl text-network-bitcoin-fg" }) })
13926
14176
  ]
13927
14177
  }
13928
14178
  ),
13929
14179
  (() => {
13930
14180
  const isAddressCopied = copied === address;
13931
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(
14181
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(
13932
14182
  "button",
13933
14183
  {
13934
14184
  type: "button",
@@ -13942,14 +14192,14 @@ function DepositGeneratedView({
13942
14192
  void copyToClipboard(address);
13943
14193
  },
13944
14194
  children: [
13945
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(IconGlyph, { glyph: isAddressCopied ? Check : ContentCopy, size: "xs" }),
14195
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(IconGlyph, { glyph: isAddressCopied ? Check : ContentCopy, size: "xs" }),
13946
14196
  isAddressCopied ? "Copied" : network === "lightning" ? "Copy Invoice" : "Copy Address"
13947
14197
  ]
13948
14198
  }
13949
14199
  );
13950
14200
  })()
13951
14201
  ] }),
13952
- network === "lightning" && invoiceStatus && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
14202
+ network === "lightning" && invoiceStatus && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
13953
14203
  InvoiceStatusBanner,
13954
14204
  {
13955
14205
  isInvoicePending,
@@ -13958,7 +14208,7 @@ function DepositGeneratedView({
13958
14208
  invoiceStatus
13959
14209
  }
13960
14210
  ),
13961
- /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(
14211
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(
13962
14212
  "div",
13963
14213
  {
13964
14214
  "data-testid": "deposit-generated-address",
@@ -13969,16 +14219,16 @@ function DepositGeneratedView({
13969
14219
  ),
13970
14220
  onClick: () => void copyToClipboard(address),
13971
14221
  children: [
13972
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("div", { className: cn("flex size-5 flex-shrink-0 items-center justify-center rounded-md", net.bg), children: net.icon }),
13973
- /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)("div", { className: "min-w-0 flex-1", children: [
13974
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("p", { className: cn(eyebrow, net.text), children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("span", { "data-testid": "deposit-address-label", children: addressLabel }) }),
13975
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("p", { className: "mt-0.5 truncate font-mono text-tiny text-muted-foreground", children: address.length > 50 ? `${address.slice(0, 18)}...${address.slice(-14)}` : address })
14222
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("div", { className: cn("flex size-5 flex-shrink-0 items-center justify-center rounded-md", net.bg), children: net.icon }),
14223
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "min-w-0 flex-1", children: [
14224
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: cn(eyebrow, net.text), children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("span", { "data-testid": "deposit-address-label", children: addressLabel }) }),
14225
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: "mt-0.5 truncate font-mono text-tiny text-muted-foreground", children: address.length > 50 ? `${address.slice(0, 18)}...${address.slice(-14)}` : address })
13976
14226
  ] }),
13977
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(CopyIcon, { copied: copied === address })
14227
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(CopyIcon, { copied: copied === address })
13978
14228
  ]
13979
14229
  }
13980
14230
  ),
13981
- recipientId && /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(
14231
+ recipientId && /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(
13982
14232
  "div",
13983
14233
  {
13984
14234
  className: cn(
@@ -13987,16 +14237,16 @@ function DepositGeneratedView({
13987
14237
  ),
13988
14238
  onClick: () => void copyToClipboard(recipientId),
13989
14239
  children: [
13990
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("div", { className: "flex size-5 flex-shrink-0 items-center justify-center rounded-md bg-primary/15", children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(IconGlyph, { glyph: Person, size: "xs", className: "text-brand" }) }),
13991
- /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)("div", { className: "min-w-0 flex-1", children: [
13992
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("p", { className: cn("text-brand", eyebrow), children: "Recipient ID" }),
13993
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("p", { className: "mt-0.5 truncate font-mono text-tiny text-muted-foreground", children: recipientId.length > 50 ? `${recipientId.slice(0, 18)}...${recipientId.slice(-14)}` : recipientId })
14240
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("div", { className: "flex size-5 flex-shrink-0 items-center justify-center rounded-md bg-primary/15", children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(IconGlyph, { glyph: Person, size: "xs", className: "text-brand" }) }),
14241
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "min-w-0 flex-1", children: [
14242
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: cn("text-brand", eyebrow), children: "Recipient ID" }),
14243
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: "mt-0.5 truncate font-mono text-tiny text-muted-foreground", children: recipientId.length > 50 ? `${recipientId.slice(0, 18)}...${recipientId.slice(-14)}` : recipientId })
13994
14244
  ] }),
13995
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(CopyIcon, { copied: copied === recipientId })
14245
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(CopyIcon, { copied: copied === recipientId })
13996
14246
  ]
13997
14247
  }
13998
14248
  ),
13999
- showRegenerate && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("div", { className: "flex justify-center pt-1", children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
14249
+ showRegenerate && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("div", { className: "flex justify-center pt-1", children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
14000
14250
  GlyphButton,
14001
14251
  {
14002
14252
  label: `New ${network === "lightning" ? "invoice" : "address"}`,
@@ -14012,7 +14262,7 @@ function DepositGeneratedView({
14012
14262
  setAmount("");
14013
14263
  setInvoiceStatus(null);
14014
14264
  },
14015
- icon: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(IconGlyph, { glyph: Refresh, "aria-hidden": "true", className: cn(loading && "animate-spin motion-reduce:animate-none") })
14265
+ icon: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(IconGlyph, { glyph: Refresh, "aria-hidden": "true", className: cn(loading && "animate-spin motion-reduce:animate-none") })
14016
14266
  }
14017
14267
  ) })
14018
14268
  ] });
@@ -14020,7 +14270,7 @@ function DepositGeneratedView({
14020
14270
 
14021
14271
  // src/web/components/deposit-pre-generation.tsx
14022
14272
  var import_react44 = require("react");
14023
- var import_jsx_runtime136 = require("react/jsx-runtime");
14273
+ var import_jsx_runtime137 = require("react/jsx-runtime");
14024
14274
  var ACCOUNT_TITLES = {
14025
14275
  RGB: "RGB & Lightning",
14026
14276
  SPARK: "Spark",
@@ -14068,58 +14318,58 @@ function DepositPreGeneration({
14068
14318
  const amountId = (0, import_react44.useId)();
14069
14319
  const method = METHOD_META2[currentMethod];
14070
14320
  const isRgbOnchain = network === "onchain" && !isBtc;
14071
- return /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "space-y-3", children: [
14072
- showReceiveSummary && /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "rounded-2xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card p-3 shadow-card", children: [
14073
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: cn("text-muted-foreground", eyebrow), children: "Receive Summary" }),
14074
- /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "mt-2 grid grid-cols-1 gap-2 text-caption", children: [
14075
- /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "flex items-center justify-between gap-3", children: [
14076
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("span", { className: "text-foreground/55", children: "Asset" }),
14077
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("span", { className: "font-bold text-foreground", children: selectedAsset?.ticker ?? (isBtc ? "BTC" : "Asset") })
14321
+ return /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "space-y-3", children: [
14322
+ showReceiveSummary && /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "rounded-2xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card p-3 shadow-card", children: [
14323
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("p", { className: cn("text-muted-foreground", eyebrow), children: "Receive Summary" }),
14324
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "mt-2 grid grid-cols-1 gap-2 text-caption", children: [
14325
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "flex items-center justify-between gap-3", children: [
14326
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("span", { className: "text-foreground/55", children: "Asset" }),
14327
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("span", { className: "font-bold text-foreground", children: selectedAsset?.ticker ?? (isBtc ? "BTC" : "Asset") })
14078
14328
  ] }),
14079
- /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "flex items-center justify-between gap-3", children: [
14080
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("span", { className: "text-foreground/55", children: "Destination account" }),
14081
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("span", { className: "font-bold text-foreground", children: ACCOUNT_TITLES[selectedAccount] })
14329
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "flex items-center justify-between gap-3", children: [
14330
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("span", { className: "text-foreground/55", children: "Destination account" }),
14331
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("span", { className: "font-bold text-foreground", children: ACCOUNT_TITLES[selectedAccount] })
14082
14332
  ] }),
14083
- /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "flex items-center justify-between gap-3", children: [
14084
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("span", { className: "text-foreground/55", children: "Transfer method" }),
14085
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("span", { className: "font-bold text-foreground", children: method.label })
14333
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "flex items-center justify-between gap-3", children: [
14334
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("span", { className: "text-foreground/55", children: "Transfer method" }),
14335
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("span", { className: "font-bold text-foreground", children: method.label })
14086
14336
  ] }),
14087
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: "text-tiny text-foreground/55", children: method.summary })
14337
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("p", { className: "text-tiny text-foreground/55", children: method.summary })
14088
14338
  ] })
14089
14339
  ] }),
14090
- channelsLoading && selectedAccount === "RGB" && currentMethod === "lightning" && !isBtc && /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "flex items-center gap-2.5 rounded-xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card p-3 shadow-card", children: [
14091
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(IconGlyph, { glyph: ProgressActivity, className: "animate-spin text-icon-lg text-secondary-content" }),
14092
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("span", { className: "text-caption font-medium text-foreground/60", children: "Checking channel availability..." })
14340
+ channelsLoading && selectedAccount === "RGB" && currentMethod === "lightning" && !isBtc && /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "flex items-center gap-2.5 rounded-xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card p-3 shadow-card", children: [
14341
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(IconGlyph, { glyph: ProgressActivity, className: "animate-spin text-icon-lg text-secondary-content" }),
14342
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("span", { className: "text-caption font-medium text-foreground/60", children: "Checking channel availability..." })
14093
14343
  ] }),
14094
- showChannelWarning && /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(AlertBanner, { variant: "warning", children: [
14095
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: "mb-0.5 text-caption font-bold text-warning-fg", children: "No Lightning Channels" }),
14096
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: "text-tiny text-warning-fg/70", children: "Only on-chain deposits are available." })
14344
+ showChannelWarning && /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(AlertBanner, { variant: "warning", children: [
14345
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("p", { className: "mb-0.5 text-caption font-bold text-warning-fg", children: "No Lightning Channels" }),
14346
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("p", { className: "text-tiny text-warning-fg/70", children: "Only on-chain deposits are available." })
14097
14347
  ] }),
14098
- showLiquidityWarning && /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(AlertBanner, { variant: "warning", children: [
14099
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: "mb-0.5 text-caption font-bold text-warning-fg", children: "No Inbound Liquidity" }),
14100
- /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("p", { className: "text-tiny text-warning-fg/70", children: [
14348
+ showLiquidityWarning && /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(AlertBanner, { variant: "warning", children: [
14349
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("p", { className: "mb-0.5 text-caption font-bold text-warning-fg", children: "No Inbound Liquidity" }),
14350
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("p", { className: "text-tiny text-warning-fg/70", children: [
14101
14351
  "No channels with inbound capacity for ",
14102
14352
  selectedAsset?.ticker ?? "this asset",
14103
14353
  "."
14104
14354
  ] })
14105
14355
  ] }),
14106
- isAutoGenerate && loading && /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "flex flex-col items-center gap-4 py-10", children: [
14107
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("div", { className: cn("flex size-16 items-center justify-center rounded-2xl shadow-raised", net.bg), children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(IconGlyph, { glyph: ProgressActivity, className: cn("animate-spin text-icon-4xl", net.text) }) }),
14108
- /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "space-y-1 text-center", children: [
14109
- /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("p", { className: "text-caption font-bold text-muted-foreground", children: [
14356
+ isAutoGenerate && loading && /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "flex flex-col items-center gap-4 py-10", children: [
14357
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: cn("flex size-16 items-center justify-center rounded-2xl shadow-raised", net.bg), children: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(IconGlyph, { glyph: ProgressActivity, className: cn("animate-spin text-icon-4xl", net.text) }) }),
14358
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "space-y-1 text-center", children: [
14359
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("p", { className: "text-caption font-bold text-muted-foreground", children: [
14110
14360
  "Generating ",
14111
14361
  network === "lightning" ? "invoice" : "address",
14112
14362
  "..."
14113
14363
  ] }),
14114
- /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("p", { className: "text-caption text-foreground/55", children: [
14364
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("p", { className: "text-caption text-foreground/55", children: [
14115
14365
  net.label,
14116
14366
  " network"
14117
14367
  ] })
14118
14368
  ] })
14119
14369
  ] }),
14120
- isRgbOnchain && isNewRgbAsset && setNewAssetId && /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "flex flex-col gap-2", children: [
14121
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(Label3, { htmlFor: assetIdInputId, children: "RGB Asset ID - Optional" }),
14122
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
14370
+ isRgbOnchain && isNewRgbAsset && setNewAssetId && /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "flex flex-col gap-2", children: [
14371
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(Label3, { htmlFor: assetIdInputId, children: "RGB Asset ID - Optional" }),
14372
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
14123
14373
  "input",
14124
14374
  {
14125
14375
  id: assetIdInputId,
@@ -14132,15 +14382,15 @@ function DepositPreGeneration({
14132
14382
  className: "w-full rounded-xl bg-card/55 bg-gradient-card ring-1 ring-inset ring-secondary/15 hover:ring-secondary/35 px-3 py-2.5 font-mono text-caption text-foreground shadow-inner transition-all placeholder:text-muted-foreground focus:ring-primary/50 focus:shadow-glow-primary-soft focus:outline-none"
14133
14383
  }
14134
14384
  ),
14135
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: "text-xxs text-foreground/55", children: "Enter a specific asset ID to receive it, or leave empty to accept any RGB asset to this invoice." })
14385
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("p", { className: "text-xxs text-foreground/55", children: "Enter a specific asset ID to receive it, or leave empty to accept any RGB asset to this invoice." })
14136
14386
  ] }),
14137
- isRgbOnchain && /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "space-y-2.5 rounded-xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card p-3 shadow-card", children: [
14138
- /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "flex items-center justify-between gap-3", children: [
14139
- /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "min-w-0 flex-1", children: [
14140
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("h4", { className: "text-caption font-bold text-foreground", children: usePrivacy ? "Blinded receive" : "Witness receive" }),
14141
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: "mt-0.5 text-xxs text-muted-foreground", children: usePrivacy ? "Private - recommended" : "Simpler - less private" })
14387
+ isRgbOnchain && /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "space-y-2.5 rounded-xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card p-3 shadow-card", children: [
14388
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "flex items-center justify-between gap-3", children: [
14389
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "min-w-0 flex-1", children: [
14390
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("h4", { className: "text-caption font-bold text-foreground", children: usePrivacy ? "Blinded receive" : "Witness receive" }),
14391
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("p", { className: "mt-0.5 text-xxs text-muted-foreground", children: usePrivacy ? "Private - recommended" : "Simpler - less private" })
14142
14392
  ] }),
14143
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
14393
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
14144
14394
  "button",
14145
14395
  {
14146
14396
  type: "button",
@@ -14150,7 +14400,7 @@ function DepositPreGeneration({
14150
14400
  usePrivacy ? "bg-primary bg-gradient-primary shadow-glow-primary-soft" : "bg-foreground/10"
14151
14401
  ),
14152
14402
  onClick: () => setUsePrivacy(!usePrivacy),
14153
- children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
14403
+ children: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
14154
14404
  "span",
14155
14405
  {
14156
14406
  className: cn(
@@ -14162,8 +14412,8 @@ function DepositPreGeneration({
14162
14412
  }
14163
14413
  )
14164
14414
  ] }),
14165
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: "text-tiny leading-relaxed text-foreground/55", children: usePrivacy ? "Blinded: the sender never sees which UTXO you receive into. Spends one of your colorable UTXOs as the receiving slot." : "Witness: the sender creates the receiving UTXO for you. No colorable UTXO needed, but the sender sees the receiving output." }),
14166
- usePrivacy && colorableUtxoCount !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(
14415
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("p", { className: "text-tiny leading-relaxed text-foreground/55", children: usePrivacy ? "Blinded: the sender never sees which UTXO you receive into. Spends one of your colorable UTXOs as the receiving slot." : "Witness: the sender creates the receiving UTXO for you. No colorable UTXO needed, but the sender sees the receiving output." }),
14416
+ usePrivacy && colorableUtxoCount !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(
14167
14417
  "div",
14168
14418
  {
14169
14419
  className: cn(
@@ -14171,26 +14421,26 @@ function DepositPreGeneration({
14171
14421
  colorableUtxoCount > 0 ? "bg-success/10 text-success-fg/80" : "bg-warning/10 text-warning-fg/80"
14172
14422
  ),
14173
14423
  children: [
14174
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("span", { className: "font-medium", children: "Available colorable UTXOs" }),
14175
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("span", { className: "font-bold tabular-nums", children: colorableUtxoCount })
14424
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("span", { className: "font-medium", children: "Available colorable UTXOs" }),
14425
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("span", { className: "font-bold tabular-nums", children: colorableUtxoCount })
14176
14426
  ]
14177
14427
  }
14178
14428
  ),
14179
- usePrivacy && colorableUtxoCount === 0 && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: "text-tiny text-warning-fg/70", children: "None available \u2014 create a colorable UTXO below to receive privately, or switch off privacy to use a witness receive." })
14429
+ usePrivacy && colorableUtxoCount === 0 && /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("p", { className: "text-tiny text-warning-fg/70", children: "None available \u2014 create a colorable UTXO below to receive privately, or switch off privacy to use a witness receive." })
14180
14430
  ] }),
14181
- network === "onchain" && !isBtc && /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "flex flex-col gap-2", children: [
14182
- /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("div", { className: "flex items-center justify-between", children: [
14183
- /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(Label3, { htmlFor: amountId, children: [
14431
+ network === "onchain" && !isBtc && /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "flex flex-col gap-2", children: [
14432
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "flex items-center justify-between", children: [
14433
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(Label3, { htmlFor: amountId, children: [
14184
14434
  "Amount (",
14185
14435
  getUnitLabel(),
14186
14436
  ") - Optional"
14187
14437
  ] }),
14188
- selectedAsset && /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("span", { className: "text-xxs text-foreground/55", children: [
14438
+ selectedAsset && /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("span", { className: "text-xxs text-foreground/55", children: [
14189
14439
  selectedAsset.precision ?? 0,
14190
14440
  " decimals"
14191
14441
  ] })
14192
14442
  ] }),
14193
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
14443
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
14194
14444
  "input",
14195
14445
  {
14196
14446
  id: amountId,
@@ -14203,18 +14453,18 @@ function DepositPreGeneration({
14203
14453
  }
14204
14454
  )
14205
14455
  ] }),
14206
- needsColorableUtxos && /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(AlertBanner, { variant: "warning", children: [
14207
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: "mb-0.5 text-caption font-bold text-warning-fg", children: "Colorable UTXOs Required" }),
14208
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: "text-tiny text-warning-fg/70", children: "To receive RGB assets on-chain you need at least one uncolored UTXO. Create some now and the invoice will be generated automatically." })
14456
+ needsColorableUtxos && /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(AlertBanner, { variant: "warning", children: [
14457
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("p", { className: "mb-0.5 text-caption font-bold text-warning-fg", children: "Colorable UTXOs Required" }),
14458
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("p", { className: "text-tiny text-warning-fg/70", children: "To receive RGB assets on-chain you need at least one uncolored UTXO. Create some now and the invoice will be generated automatically." })
14209
14459
  ] }),
14210
- !isAutoGenerate && ((needsColorableUtxos || isRgbOnchain && usePrivacy && colorableUtxoCount === 0) && onOpenCreateUtxos ? /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(Button, { variant: "cta", size: "cta", onClick: onOpenCreateUtxos, disabled: loading, children: /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("span", { className: "flex items-center justify-center gap-2", children: [
14211
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(IconGlyph, { glyph: AddCircle, className: "text-icon-md" }),
14460
+ !isAutoGenerate && ((needsColorableUtxos || isRgbOnchain && usePrivacy && colorableUtxoCount === 0) && onOpenCreateUtxos ? /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(Button, { variant: "cta", size: "cta", onClick: onOpenCreateUtxos, disabled: loading, children: /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("span", { className: "flex items-center justify-center gap-2", children: [
14461
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(IconGlyph, { glyph: AddCircle, className: "text-icon-md" }),
14212
14462
  "Create Colorable UTXOs"
14213
- ] }) }) : /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(Button, { variant: "cta", size: "cta", onClick: generateInvoice, disabled: loading, children: loading ? /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("span", { className: "flex items-center justify-center gap-2", children: [
14214
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(IconGlyph, { glyph: ProgressActivity, className: "animate-spin text-icon-md" }),
14463
+ ] }) }) : /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(Button, { variant: "cta", size: "cta", onClick: generateInvoice, disabled: loading, children: loading ? /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("span", { className: "flex items-center justify-center gap-2", children: [
14464
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(IconGlyph, { glyph: ProgressActivity, className: "animate-spin text-icon-md" }),
14215
14465
  "Generating..."
14216
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)("span", { className: "flex items-center justify-center gap-2", children: [
14217
- /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(IconGlyph, { glyph: QrCode_2, className: "text-icon-md" }),
14466
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("span", { className: "flex items-center justify-center gap-2", children: [
14467
+ /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(IconGlyph, { glyph: QrCode_2, className: "text-icon-md" }),
14218
14468
  "Generate Address"
14219
14469
  ] }) }))
14220
14470
  ] });
@@ -14222,7 +14472,7 @@ function DepositPreGeneration({
14222
14472
 
14223
14473
  // src/web/components/deposit-asset-selection.tsx
14224
14474
  var import_react45 = require("react");
14225
- var import_jsx_runtime137 = require("react/jsx-runtime");
14475
+ var import_jsx_runtime138 = require("react/jsx-runtime");
14226
14476
  var ADD_ASSET_SUBTITLE = {
14227
14477
  RGB: "RGB asset on Bitcoin",
14228
14478
  SPARK: "Spark-native asset",
@@ -14311,9 +14561,9 @@ function DepositAssetSelection({
14311
14561
  titleHoverClass: "group-hover:text-network-liquid-fg"
14312
14562
  }
14313
14563
  ].filter((option) => option.enabled);
14314
- return /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "relative flex h-screen flex-col overflow-hidden bg-background bg-page-radial pt-16 font-display text-foreground", children: [
14315
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: "absolute left-4 top-4 z-30", children: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(GlyphButton, { icon: ArrowBack, label: "Go back", size: "lg", onClick: () => setCurrentView("dashboard") }) }),
14316
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: "flex-shrink-0 px-5 pb-3 pt-4", children: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
14564
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("div", { className: "relative flex h-screen flex-col overflow-hidden bg-background bg-page-radial pt-16 font-display text-foreground", children: [
14565
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "absolute left-4 top-4 z-30", children: /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(GlyphButton, { icon: ArrowBack, label: "Go back", size: "lg", onClick: () => setCurrentView("dashboard") }) }),
14566
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "flex-shrink-0 px-5 pb-3 pt-4", children: /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
14317
14567
  DotPagination,
14318
14568
  {
14319
14569
  count: 2,
@@ -14321,8 +14571,8 @@ function DepositAssetSelection({
14321
14571
  ariaLabel: "Deposit step 1 of 2: select asset"
14322
14572
  }
14323
14573
  ) }),
14324
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: "flex-shrink-0 px-5 pb-3", children: /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "relative", children: [
14325
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
14574
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "flex-shrink-0 px-5 pb-3", children: /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("div", { className: "relative", children: [
14575
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
14326
14576
  IconGlyph,
14327
14577
  {
14328
14578
  glyph: Search,
@@ -14330,7 +14580,7 @@ function DepositAssetSelection({
14330
14580
  className: "absolute left-3 top-1/2 -translate-y-1/2 text-secondary-content"
14331
14581
  }
14332
14582
  ),
14333
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
14583
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
14334
14584
  "input",
14335
14585
  {
14336
14586
  autoFocus: true,
@@ -14343,8 +14593,8 @@ function DepositAssetSelection({
14343
14593
  }
14344
14594
  )
14345
14595
  ] }) }),
14346
- /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(ScrollArea, { className: "min-h-0 flex-1", viewportClassName: "space-y-1.5 px-5 pb-3", children: [
14347
- btcAsset && /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(
14596
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(ScrollArea, { className: "min-h-0 flex-1", viewportClassName: "space-y-1.5 px-5 pb-3", children: [
14597
+ btcAsset && /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(
14348
14598
  "button",
14349
14599
  {
14350
14600
  type: "button",
@@ -14352,28 +14602,28 @@ function DepositAssetSelection({
14352
14602
  className: "group flex w-full min-w-0 items-center gap-3 overflow-hidden rounded-2xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card px-4 py-3 text-body shadow-card transition-all duration-200 hover-gradient-violet hover:shadow-card-hover",
14353
14603
  onClick: () => onSelectAsset(btcAsset),
14354
14604
  children: [
14355
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(AssetIcon, { ticker: "BTC", size: 40, className: "flex-shrink-0" }),
14356
- /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "min-w-0 flex-1 text-left", children: [
14357
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: "font-bold tracking-wide text-foreground transition-colors group-hover:text-secondary-content", children: "Bitcoin" }),
14358
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: "mt-0.5 text-caption text-foreground/55", children: "Choose destination account next" })
14605
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(AssetIcon, { ticker: "BTC", size: 40, className: "flex-shrink-0" }),
14606
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("div", { className: "min-w-0 flex-1 text-left", children: [
14607
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "font-bold tracking-wide text-foreground transition-colors group-hover:text-secondary-content", children: "Bitcoin" }),
14608
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "mt-0.5 text-caption text-foreground/55", children: "Choose destination account next" })
14359
14609
  ] }),
14360
- /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "hidden min-w-0 max-w-[42%] flex-shrink flex-wrap justify-end gap-1 min-[380px]:flex", children: [
14361
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(NetworkBadge, { network: "L1", size: "sm" }),
14362
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(NetworkBadge, { network: "LN", size: "sm" }),
14363
- isSparkConnected && /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(NetworkBadge, { network: "Spark", size: "sm" }),
14364
- isArkadeConnected && /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(NetworkBadge, { network: "Arkade", size: "sm" }),
14365
- isLiquidConnected && /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(NetworkBadge, { network: "Liquid", size: "sm" })
14610
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("div", { className: "hidden min-w-0 max-w-[42%] flex-shrink flex-wrap justify-end gap-1 min-[380px]:flex", children: [
14611
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(NetworkBadge, { network: "L1", size: "sm" }),
14612
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(NetworkBadge, { network: "LN", size: "sm" }),
14613
+ isSparkConnected && /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(NetworkBadge, { network: "Spark", size: "sm" }),
14614
+ isArkadeConnected && /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(NetworkBadge, { network: "Arkade", size: "sm" }),
14615
+ isLiquidConnected && /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(NetworkBadge, { network: "Liquid", size: "sm" })
14366
14616
  ] }),
14367
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(IconGlyph, { glyph: ArrowForward, className: "flex-shrink-0 text-icon-md text-foreground/20 transition-colors group-hover:text-secondary-content" })
14617
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(IconGlyph, { glyph: ArrowForward, className: "flex-shrink-0 text-icon-md text-foreground/20 transition-colors group-hover:text-secondary-content" })
14368
14618
  ]
14369
14619
  }
14370
14620
  ),
14371
- noResults ? /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "py-8 text-center text-caption text-foreground/55", children: [
14621
+ noResults ? /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("div", { className: "py-8 text-center text-caption text-foreground/55", children: [
14372
14622
  'No assets match "',
14373
14623
  searchQuery,
14374
14624
  '"'
14375
- ] }) : ownedAssetsCount > 0 ? /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "space-y-1.5 pt-1", children: [
14376
- /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(
14625
+ ] }) : ownedAssetsCount > 0 ? /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("div", { className: "space-y-1.5 pt-1", children: [
14626
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(
14377
14627
  "button",
14378
14628
  {
14379
14629
  type: "button",
@@ -14386,17 +14636,17 @@ function DepositAssetSelection({
14386
14636
  isSearching && "cursor-default"
14387
14637
  ),
14388
14638
  children: [
14389
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("span", { className: cn("text-muted-foreground", eyebrow), children: "Your assets" }),
14390
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("span", { className: "inline-flex size-5 items-center justify-center rounded-full bg-secondary bg-gradient-violet text-tiny font-bold text-white shadow-button-violet", children: ownedAssetsCount }),
14391
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: "flex-1" }),
14392
- !isSearching && /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(IconGlyph, { glyph: showOwnedAssets ? ExpandLess : ExpandMore, size: "md", className: "text-secondary-content" })
14639
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("span", { className: cn("text-muted-foreground", eyebrow), children: "Your assets" }),
14640
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("span", { className: "inline-flex size-5 items-center justify-center rounded-full bg-secondary bg-gradient-violet text-tiny font-bold text-white shadow-button-violet", children: ownedAssetsCount }),
14641
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "flex-1" }),
14642
+ !isSearching && /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(IconGlyph, { glyph: showOwnedAssets ? ExpandLess : ExpandMore, size: "md", className: "text-secondary-content" })
14393
14643
  ]
14394
14644
  }
14395
14645
  ),
14396
- showOwnedAssets && /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: "space-y-1.5 duration-200 animate-in fade-in slide-in-from-top-1", children: ownedAssets.map((asset) => {
14646
+ showOwnedAssets && /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "space-y-1.5 duration-200 animate-in fade-in slide-in-from-top-1", children: ownedAssets.map((asset) => {
14397
14647
  const protocolBadge = asset.accountId ? PROTOCOL_BADGE[asset.accountId] : null;
14398
14648
  const balance = asset.balance ?? 0;
14399
- return /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(
14649
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(
14400
14650
  "button",
14401
14651
  {
14402
14652
  type: "button",
@@ -14404,11 +14654,11 @@ function DepositAssetSelection({
14404
14654
  className: "group flex w-full min-w-0 items-center gap-3 overflow-hidden rounded-2xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card px-4 py-3 text-body shadow-card transition-all duration-200 hover-gradient-violet hover:shadow-card-hover",
14405
14655
  onClick: () => onSelectAsset(asset),
14406
14656
  children: [
14407
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(AssetIcon, { ticker: asset.ticker, size: 40, className: "flex-shrink-0" }),
14408
- /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "min-w-0 flex-1 text-left", children: [
14409
- /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "flex min-w-0 items-center gap-1.5", children: [
14410
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("span", { className: "truncate font-bold tracking-wide text-foreground transition-colors group-hover:text-secondary-content", children: asset.ticker }),
14411
- protocolBadge && /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
14657
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(AssetIcon, { ticker: asset.ticker, size: 40, className: "flex-shrink-0" }),
14658
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("div", { className: "min-w-0 flex-1 text-left", children: [
14659
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("div", { className: "flex min-w-0 items-center gap-1.5", children: [
14660
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("span", { className: "truncate font-bold tracking-wide text-foreground transition-colors group-hover:text-secondary-content", children: asset.ticker }),
14661
+ protocolBadge && /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
14412
14662
  "span",
14413
14663
  {
14414
14664
  className: cn(
@@ -14420,36 +14670,36 @@ function DepositAssetSelection({
14420
14670
  }
14421
14671
  )
14422
14672
  ] }),
14423
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: "mt-0.5 truncate text-caption text-foreground/55", children: asset.name ?? "Asset" })
14673
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "mt-0.5 truncate text-caption text-foreground/55", children: asset.name ?? "Asset" })
14424
14674
  ] }),
14425
- balance > 0 && /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "flex-shrink-0 text-right", children: [
14426
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: "text-caption font-bold tabular-nums text-foreground", children: formatAssetBalance(asset) }),
14427
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: cn("mt-0.5 text-foreground/55", eyebrow), children: asset.ticker })
14675
+ balance > 0 && /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("div", { className: "flex-shrink-0 text-right", children: [
14676
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "text-caption font-bold tabular-nums text-foreground", children: formatAssetBalance(asset) }),
14677
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: cn("mt-0.5 text-foreground/55", eyebrow), children: asset.ticker })
14428
14678
  ] }),
14429
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(IconGlyph, { glyph: ArrowForward, className: "flex-shrink-0 text-icon-sm text-foreground/20 transition-colors group-hover:text-secondary-content" })
14679
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(IconGlyph, { glyph: ArrowForward, className: "flex-shrink-0 text-icon-sm text-foreground/20 transition-colors group-hover:text-secondary-content" })
14430
14680
  ]
14431
14681
  },
14432
14682
  asset.asset_id
14433
14683
  );
14434
14684
  }) })
14435
14685
  ] }) : null,
14436
- !searchQuery && /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: "pb-1 pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(
14686
+ !searchQuery && /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "pb-1 pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(
14437
14687
  "button",
14438
14688
  {
14439
14689
  type: "button",
14440
14690
  onClick: () => setCurrentView("bridge"),
14441
14691
  className: "group flex w-full items-center gap-3 rounded-2xl bg-gradient-to-r from-secondary/20 to-primary/10 p-3 shadow-card transition-all duration-200 hover:from-secondary/30 hover:to-primary/15 hover:shadow-card-hover",
14442
14692
  children: [
14443
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: "flex size-10 shrink-0 items-center justify-center rounded-xl bg-secondary bg-gradient-violet text-white shadow-button-violet", children: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(IconGlyph, { glyph: SwapCalls, className: "text-icon-lg" }) }),
14444
- /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "flex-1 text-left", children: [
14445
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("p", { className: "text-body font-semibold text-foreground transition-colors group-hover:text-secondary-content", children: "Bridge from another chain" }),
14446
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("p", { className: "text-xxs leading-tight text-foreground/55", children: "USDC, USDT, ETH, SOL via Flashnet" })
14693
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "flex size-10 shrink-0 items-center justify-center rounded-xl bg-secondary bg-gradient-violet text-white shadow-button-violet", children: /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(IconGlyph, { glyph: SwapCalls, className: "text-icon-lg" }) }),
14694
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("div", { className: "flex-1 text-left", children: [
14695
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("p", { className: "text-body font-semibold text-foreground transition-colors group-hover:text-secondary-content", children: "Bridge from another chain" }),
14696
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("p", { className: "text-xxs leading-tight text-foreground/55", children: "USDC, USDT, ETH, SOL via Flashnet" })
14447
14697
  ] }),
14448
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(IconGlyph, { glyph: ArrowForward, className: "text-icon-lg text-foreground/55 transition-colors group-hover:text-secondary-content" })
14698
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(IconGlyph, { glyph: ArrowForward, className: "text-icon-lg text-foreground/55 transition-colors group-hover:text-secondary-content" })
14449
14699
  ]
14450
14700
  }
14451
14701
  ) }),
14452
- !searchQuery && newAssetOptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: "pb-1 pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(
14702
+ !searchQuery && newAssetOptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "pb-1 pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(
14453
14703
  "button",
14454
14704
  {
14455
14705
  type: "button",
@@ -14457,27 +14707,27 @@ function DepositAssetSelection({
14457
14707
  onClick: () => setShowAddAssetModal(true),
14458
14708
  className: "group flex w-full items-center gap-3 rounded-2xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card p-3 shadow-card transition-all duration-200 hover-gradient-violet hover:shadow-card-hover",
14459
14709
  children: [
14460
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: "flex size-10 shrink-0 items-center justify-center rounded-xl bg-secondary/15 text-secondary-content", children: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(IconGlyph, { glyph: Add, size: "md" }) }),
14461
- /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "flex-1 text-left", children: [
14462
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("p", { className: "text-body font-semibold text-foreground transition-colors group-hover:text-secondary-content", children: "Add an asset" }),
14463
- /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("p", { className: "text-xxs leading-tight text-foreground/55", children: [
14710
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "flex size-10 shrink-0 items-center justify-center rounded-xl bg-secondary/15 text-secondary-content", children: /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(IconGlyph, { glyph: Add, size: "md" }) }),
14711
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("div", { className: "flex-1 text-left", children: [
14712
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("p", { className: "text-body font-semibold text-foreground transition-colors group-hover:text-secondary-content", children: "Add an asset" }),
14713
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("p", { className: "text-xxs leading-tight text-foreground/55", children: [
14464
14714
  "Receive a new ",
14465
14715
  newAssetOptions.map((o) => o.ticker).join(", "),
14466
14716
  " asset"
14467
14717
  ] })
14468
14718
  ] }),
14469
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(IconGlyph, { glyph: ArrowForward, className: "text-icon-lg text-foreground/55 transition-colors group-hover:text-secondary-content" })
14719
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(IconGlyph, { glyph: ArrowForward, className: "text-icon-lg text-foreground/55 transition-colors group-hover:text-secondary-content" })
14470
14720
  ]
14471
14721
  }
14472
14722
  ) })
14473
14723
  ] }),
14474
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
14724
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
14475
14725
  BottomSheet,
14476
14726
  {
14477
14727
  open: showAddAssetModal,
14478
14728
  title: "Add an asset",
14479
14729
  onClose: () => setShowAddAssetModal(false),
14480
- children: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: "space-y-2", children: newAssetOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(
14730
+ children: /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "space-y-2", children: newAssetOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(
14481
14731
  "button",
14482
14732
  {
14483
14733
  type: "button",
@@ -14491,12 +14741,12 @@ function DepositAssetSelection({
14491
14741
  handleAddNewAsset(option.account);
14492
14742
  },
14493
14743
  children: [
14494
- option.account === "LIQUID" ? /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("span", { className: "flex size-9 shrink-0 items-center justify-center rounded-full bg-network-liquid/10", children: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(LiquidNetworkIcon, { className: "size-5" }) }) : /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(AssetIcon, { ticker: option.ticker, size: 36, className: "flex-shrink-0" }),
14495
- /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)("div", { className: "min-w-0 flex-1", children: [
14496
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: cn("text-body font-bold tracking-wide text-foreground", option.titleHoverClass), children: option.title }),
14497
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: "mt-0.5 text-xxs text-foreground/55", children: ADD_ASSET_SUBTITLE[option.account] })
14744
+ option.account === "LIQUID" ? /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("span", { className: "flex size-9 shrink-0 items-center justify-center rounded-full bg-network-liquid/10", children: /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(LiquidNetworkIcon, { className: "size-5" }) }) : /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(AssetIcon, { ticker: option.ticker, size: 36, className: "flex-shrink-0" }),
14745
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("div", { className: "min-w-0 flex-1", children: [
14746
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: cn("text-body font-bold tracking-wide text-foreground", option.titleHoverClass), children: option.title }),
14747
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "mt-0.5 text-xxs text-foreground/55", children: ADD_ASSET_SUBTITLE[option.account] })
14498
14748
  ] }),
14499
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(IconGlyph, { glyph: Add, size: "sm", className: "text-foreground/55 transition-colors group-hover:text-foreground/60" })
14749
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(IconGlyph, { glyph: Add, size: "sm", className: "text-foreground/55 transition-colors group-hover:text-foreground/60" })
14500
14750
  ]
14501
14751
  },
14502
14752
  option.account
@@ -14507,7 +14757,7 @@ function DepositAssetSelection({
14507
14757
  }
14508
14758
 
14509
14759
  // src/web/components/deposit-invoice-generation.tsx
14510
- var import_jsx_runtime138 = require("react/jsx-runtime");
14760
+ var import_jsx_runtime139 = require("react/jsx-runtime");
14511
14761
  var ACCOUNT_TITLES2 = {
14512
14762
  RGB: "RGB & Lightning",
14513
14763
  SPARK: "Spark",
@@ -14666,7 +14916,7 @@ function DepositInvoiceGeneration({
14666
14916
  if (nextMethod) applyMethodSelection(account, nextMethod);
14667
14917
  };
14668
14918
  if (depositDetected) {
14669
- return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
14919
+ return /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(
14670
14920
  DepositSuccessScreen,
14671
14921
  {
14672
14922
  handleDone,
@@ -14683,15 +14933,15 @@ function DepositInvoiceGeneration({
14683
14933
  const showChannelWarning = selectedAccount === "RGB" && network === "lightning" && !channelsLoading && channels.length === 0 && !isSparkConnected;
14684
14934
  const showLiquidityWarning = !isSparkLightning && network === "lightning" && maxDepositAmount === 0 && !channelsLoading && !isBtc;
14685
14935
  const isNewRgbAsset = isNewAsset && assetFamily === "RGB";
14686
- return /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("div", { className: "relative flex h-screen flex-col overflow-hidden bg-background bg-page-radial pt-16 font-display text-foreground", children: [
14687
- /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "absolute left-4 top-4 z-30", children: /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(GlyphButton, { icon: ArrowBack, label: "Go back", size: "lg", onClick: handleBack }) }),
14936
+ return /* @__PURE__ */ (0, import_jsx_runtime139.jsxs)("div", { className: "relative flex h-screen flex-col overflow-hidden bg-background bg-page-radial pt-16 font-display text-foreground", children: [
14937
+ /* @__PURE__ */ (0, import_jsx_runtime139.jsx)("div", { className: "absolute left-4 top-4 z-30", children: /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(GlyphButton, { icon: ArrowBack, label: "Go back", size: "lg", onClick: handleBack }) }),
14688
14938
  (() => {
14689
14939
  const hideDestinationRail = isNewAsset && (network === "spark" || network === "arkade");
14690
14940
  if (hideDestinationRail) return null;
14691
- return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "flex-shrink-0 px-4 py-2", children: /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("div", { className: "space-y-2", children: [
14692
- /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("div", { children: [
14693
- /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("p", { className: cn("text-muted-foreground", eyebrow), children: "Destination Account" }),
14694
- /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "mt-1.5 flex gap-1.5 overflow-x-auto no-scrollbar", children: availableAccounts.map((account) => /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
14941
+ return /* @__PURE__ */ (0, import_jsx_runtime139.jsx)("div", { className: "flex-shrink-0 px-4 py-2", children: /* @__PURE__ */ (0, import_jsx_runtime139.jsxs)("div", { className: "space-y-2", children: [
14942
+ /* @__PURE__ */ (0, import_jsx_runtime139.jsxs)("div", { children: [
14943
+ /* @__PURE__ */ (0, import_jsx_runtime139.jsx)("p", { className: cn("text-muted-foreground", eyebrow), children: "Destination Account" }),
14944
+ /* @__PURE__ */ (0, import_jsx_runtime139.jsx)("div", { className: "mt-1.5 flex gap-1.5 overflow-x-auto no-scrollbar", children: availableAccounts.map((account) => /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(
14695
14945
  AccountChoiceChip,
14696
14946
  {
14697
14947
  account,
@@ -14716,9 +14966,9 @@ function DepositInvoiceGeneration({
14716
14966
  account
14717
14967
  )) })
14718
14968
  ] }),
14719
- !isBtc && !(isNewAsset && (network === "spark" || network === "arkade")) && /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("div", { children: [
14720
- /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("p", { className: cn("text-muted-foreground", eyebrow), children: "Transfer Method" }),
14721
- /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("div", { className: "mt-1.5 flex gap-1.5 overflow-x-auto no-scrollbar", children: methodOptions.map(({ method, enabled, disabledReason }) => /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
14969
+ !isBtc && !(isNewAsset && (network === "spark" || network === "arkade")) && /* @__PURE__ */ (0, import_jsx_runtime139.jsxs)("div", { children: [
14970
+ /* @__PURE__ */ (0, import_jsx_runtime139.jsx)("p", { className: cn("text-muted-foreground", eyebrow), children: "Transfer Method" }),
14971
+ /* @__PURE__ */ (0, import_jsx_runtime139.jsx)("div", { className: "mt-1.5 flex gap-1.5 overflow-x-auto no-scrollbar", children: methodOptions.map(({ method, enabled, disabledReason }) => /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(
14722
14972
  MethodChoiceChip,
14723
14973
  {
14724
14974
  method,
@@ -14732,7 +14982,7 @@ function DepositInvoiceGeneration({
14732
14982
  ] })
14733
14983
  ] }) });
14734
14984
  })(),
14735
- /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(ScrollArea, { className: "flex-1", viewportAs: "main", viewportClassName: "space-y-2.5 px-4 py-2.5", children: isBtc && accountReceiveResult ? /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
14985
+ /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(ScrollArea, { className: "flex-1", viewportAs: "main", viewportClassName: "space-y-2.5 px-4 py-2.5", children: isBtc && accountReceiveResult ? /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(
14736
14986
  BtcUnifiedReceive,
14737
14987
  {
14738
14988
  btcSelectedAccount,
@@ -14752,15 +15002,15 @@ function DepositInvoiceGeneration({
14752
15002
  setAccountReceiveResult,
14753
15003
  handleDone
14754
15004
  }
14755
- ) : isBtc && !accountReceiveResult && loading ? /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("div", { className: "flex flex-col items-center gap-4 py-10", children: [
14756
- /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
15005
+ ) : isBtc && !accountReceiveResult && loading ? /* @__PURE__ */ (0, import_jsx_runtime139.jsxs)("div", { className: "flex flex-col items-center gap-4 py-10", children: [
15006
+ /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(
14757
15007
  "div",
14758
15008
  {
14759
15009
  className: cn(
14760
15010
  "flex size-16 items-center justify-center rounded-2xl shadow-raised",
14761
15011
  NETWORK_CONFIG[btcSelectedAccount === "SPARK" ? "spark" : btcSelectedAccount === "ARKADE" ? "arkade" : "onchain"].bg
14762
15012
  ),
14763
- children: /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
15013
+ children: /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(
14764
15014
  IconGlyph,
14765
15015
  {
14766
15016
  glyph: ProgressActivity,
@@ -14772,11 +15022,11 @@ function DepositInvoiceGeneration({
14772
15022
  )
14773
15023
  }
14774
15024
  ),
14775
- /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)("div", { className: "space-y-1 text-center", children: [
14776
- /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("p", { className: "text-caption font-bold text-muted-foreground", children: "Generating addresses..." }),
14777
- /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("p", { className: "text-caption text-foreground/55", children: ACCOUNT_TITLES2[btcSelectedAccount] })
15025
+ /* @__PURE__ */ (0, import_jsx_runtime139.jsxs)("div", { className: "space-y-1 text-center", children: [
15026
+ /* @__PURE__ */ (0, import_jsx_runtime139.jsx)("p", { className: "text-caption font-bold text-muted-foreground", children: "Generating addresses..." }),
15027
+ /* @__PURE__ */ (0, import_jsx_runtime139.jsx)("p", { className: "text-caption text-foreground/55", children: ACCOUNT_TITLES2[btcSelectedAccount] })
14778
15028
  ] })
14779
- ] }) : !address ? /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
15029
+ ] }) : !address ? /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(
14780
15030
  DepositPreGeneration,
14781
15031
  {
14782
15032
  selectedAsset,
@@ -14800,7 +15050,7 @@ function DepositInvoiceGeneration({
14800
15050
  onOpenCreateUtxos,
14801
15051
  showReceiveSummary: !isNewRgbAsset
14802
15052
  }
14803
- ) : /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
15053
+ ) : /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(
14804
15054
  DepositGeneratedView,
14805
15055
  {
14806
15056
  network,
@@ -14896,6 +15146,7 @@ function DepositInvoiceGeneration({
14896
15146
  CopyIcon,
14897
15147
  Copyable,
14898
15148
  DEFAULT_AMOUNT_LOCALE,
15149
+ DatePicker,
14899
15150
  DateRangeFilter,
14900
15151
  DepositAssetSelection,
14901
15152
  DepositGeneratedView,