@almadar/ui 4.54.8 → 4.54.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.
@@ -62669,246 +62669,91 @@ AvlCosmicZoom.displayName = "AvlCosmicZoom";
62669
62669
  init_avl_schema_parser();
62670
62670
  init_avl_zoom_state();
62671
62671
 
62672
- // components/organisms/avl/AvlTransitionScene.tsx
62673
- init_AvlEffect();
62674
- init_types();
62675
- var CX = 300;
62676
- var CARD_W = 440;
62677
- var CARD_X = CX - CARD_W / 2;
62678
- var SECTION_LEFT = CARD_X + 16;
62679
- var CONTENT_LEFT = CARD_X + 24;
62680
- function flattenEffect(node) {
62681
- const args = [];
62682
- for (const child of node.children ?? []) {
62683
- args.push(child.label);
62684
- }
62685
- return { type: node.label, args };
62686
- }
62687
- function mapEffectType(label) {
62688
- const valid = [
62689
- "render-ui",
62690
- "set",
62691
- "persist",
62692
- "fetch",
62693
- "emit",
62694
- "navigate",
62695
- "notify",
62696
- "call-service",
62697
- "spawn",
62698
- "despawn",
62699
- "do",
62700
- "if",
62701
- "log"
62702
- ];
62703
- return valid.includes(label) ? label : "log";
62672
+ // components/organisms/avl/AvlTransitionDetail.tsx
62673
+ init_Card();
62674
+ init_Box();
62675
+ init_Stack();
62676
+ init_Typography();
62677
+ init_Badge();
62678
+ init_Accordion();
62679
+ init_CodeBlock();
62680
+ function summarizeArg(node) {
62681
+ const label = node.label;
62682
+ if (label.length <= 32) return label;
62683
+ return `${label.slice(0, 30)}\u2026`;
62704
62684
  }
62705
- var AvlTransitionScene = ({
62706
- data,
62707
- color = "var(--color-primary)"
62708
- }) => {
62709
- const fromRole = getStateRole(data.from, true);
62710
- const toRole = getStateRole(data.to, false, false);
62711
- const fromColors = exports.STATE_COLORS[fromRole];
62712
- const toColors = exports.STATE_COLORS[toRole];
62685
+ function flattenEffect(node) {
62686
+ const args = node.children ?? [];
62687
+ const argSummary = args.slice(0, 2).map(summarizeArg).join(" \xB7 ");
62688
+ return { type: node.label, args, argSummary };
62689
+ }
62690
+ var AvlTransitionDetail = ({ data }) => {
62691
+ const effects = React96.useMemo(() => data.effects.map(flattenEffect), [data.effects]);
62692
+ const accordionItems = React96.useMemo(() => {
62693
+ return effects.map((eff, i) => {
62694
+ const code = JSON.stringify(
62695
+ [eff.type, ...eff.args.map((a) => safeParseLabel(a.label))],
62696
+ null,
62697
+ 2
62698
+ );
62699
+ return {
62700
+ id: `effect-${i}`,
62701
+ header: /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "center", children: [
62702
+ /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "sm", children: eff.type }),
62703
+ eff.argSummary ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "muted", children: eff.argSummary }) : null
62704
+ ] }),
62705
+ content: /* @__PURE__ */ jsxRuntime.jsx(CodeBlock, { code, language: "json", maxHeight: "320px" })
62706
+ };
62707
+ });
62708
+ }, [effects]);
62713
62709
  const hasGuard = !!data.guard;
62714
- const hasEffects = data.effects.length > 0;
62710
+ const hasEffects = effects.length > 0;
62715
62711
  const hasSlots = data.slotTargets.length > 0;
62716
- const effects = data.effects.map(flattenEffect);
62717
- const headerH = 52;
62718
- const sectionGap = 8;
62719
- const triggerH = 34;
62720
- const guardH = hasGuard ? 30 + sectionGap : 0;
62721
- const effectRowH = 28;
62722
- const effectsH = hasEffects ? 24 + effects.length * effectRowH + sectionGap : 0;
62723
- const slotsH = hasSlots ? 24 + data.slotTargets.length * 22 + sectionGap : 0;
62724
- const cardH = headerH + triggerH + guardH + effectsH + slotsH + 16;
62725
- const cardY = Math.max(20, (400 - cardH) / 2);
62726
- return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
62727
- /* @__PURE__ */ jsxRuntime.jsx(
62728
- "rect",
62729
- {
62730
- x: CARD_X,
62731
- y: cardY,
62732
- width: CARD_W,
62733
- height: cardH,
62734
- rx: 12,
62735
- fill: "var(--color-surface, white)",
62736
- fillOpacity: 0.97,
62737
- stroke: color,
62738
- strokeWidth: 0.8,
62739
- strokeOpacity: 0.2
62740
- }
62741
- ),
62742
- /* @__PURE__ */ jsxRuntime.jsx(
62743
- "rect",
62744
- {
62745
- x: CARD_X,
62746
- y: cardY,
62747
- width: CARD_W,
62748
- height: headerH,
62749
- rx: 12,
62750
- fill: color,
62751
- fillOpacity: 0.03
62752
- }
62753
- ),
62754
- /* @__PURE__ */ jsxRuntime.jsx(
62755
- "rect",
62756
- {
62757
- x: CARD_X,
62758
- y: cardY + headerH - 12,
62759
- width: CARD_W,
62760
- height: 12,
62761
- fill: color,
62762
- fillOpacity: 0.03
62763
- }
62764
- ),
62765
- /* @__PURE__ */ jsxRuntime.jsx(
62766
- "rect",
62767
- {
62768
- x: CARD_X + 20,
62769
- y: cardY + 12,
62770
- width: 140,
62771
- height: 30,
62772
- rx: 15,
62773
- fill: fromColors.fill,
62774
- stroke: fromColors.border,
62775
- strokeWidth: 1.5
62776
- }
62777
- ),
62778
- /* @__PURE__ */ jsxRuntime.jsx(
62779
- "text",
62780
- {
62781
- x: CARD_X + 90,
62782
- y: cardY + 31,
62783
- textAnchor: "middle",
62784
- fill: fromColors.border,
62785
- fontSize: 14,
62786
- fontWeight: 600,
62787
- fontFamily: "inherit",
62788
- children: data.from
62789
- }
62790
- ),
62791
- /* @__PURE__ */ jsxRuntime.jsx(
62792
- "text",
62793
- {
62794
- x: CX,
62795
- y: cardY + 32,
62796
- textAnchor: "middle",
62797
- fill: color,
62798
- fontSize: 16,
62799
- opacity: 0.4,
62800
- fontFamily: "inherit",
62801
- children: "\u2192"
62802
- }
62803
- ),
62804
- /* @__PURE__ */ jsxRuntime.jsx(
62805
- "rect",
62806
- {
62807
- x: CARD_X + CARD_W - 160,
62808
- y: cardY + 12,
62809
- width: 140,
62810
- height: 30,
62811
- rx: 15,
62812
- fill: toColors.fill,
62813
- stroke: toColors.border,
62814
- strokeWidth: 1.5
62815
- }
62816
- ),
62817
- /* @__PURE__ */ jsxRuntime.jsx(
62818
- "text",
62819
- {
62820
- x: CARD_X + CARD_W - 90,
62821
- y: cardY + 31,
62822
- textAnchor: "middle",
62823
- fill: toColors.border,
62824
- fontSize: 14,
62825
- fontWeight: 600,
62826
- fontFamily: "inherit",
62827
- children: data.to
62828
- }
62829
- ),
62830
- /* @__PURE__ */ jsxRuntime.jsx(
62831
- "line",
62832
- {
62833
- x1: CARD_X + 12,
62834
- y1: cardY + headerH,
62835
- x2: CARD_X + CARD_W - 12,
62836
- y2: cardY + headerH,
62837
- stroke: color,
62838
- strokeWidth: 0.5,
62839
- opacity: 0.1
62840
- }
62841
- ),
62842
- (() => {
62843
- const secY = cardY + headerH + sectionGap;
62844
- return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
62845
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: SECTION_LEFT, y: secY + 12, fill: color, fontSize: 10, fontWeight: 600, opacity: 0.4, fontFamily: "inherit", children: "TRIGGER" }),
62846
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: CONTENT_LEFT + 14, y: secY + 28, fill: color, fontSize: 14, fontWeight: 600, fontFamily: "inherit", children: data.event }),
62847
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: CONTENT_LEFT + 4, y: secY + 28, fill: color, fontSize: 10, opacity: 0.5, children: "\u26A1" })
62848
- ] });
62849
- })(),
62850
- hasGuard && data.guard && (() => {
62851
- const secY = cardY + headerH + sectionGap + triggerH;
62852
- return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
62853
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: SECTION_LEFT, y: secY + 12, fill: color, fontSize: 10, fontWeight: 600, opacity: 0.4, fontFamily: "inherit", children: "GUARD" }),
62854
- /* @__PURE__ */ jsxRuntime.jsx(
62855
- "polygon",
62856
- {
62857
- points: `${CONTENT_LEFT + 6},${secY + 22} ${CONTENT_LEFT + 2},${secY + 26} ${CONTENT_LEFT + 6},${secY + 30} ${CONTENT_LEFT + 10},${secY + 26}`,
62858
- fill: "none",
62859
- stroke: color,
62860
- strokeWidth: 1,
62861
- opacity: 0.5
62862
- }
62863
- ),
62864
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: CONTENT_LEFT + 18, y: secY + 29, fill: color, fontSize: 12, fontWeight: 400, opacity: 0.6, fontFamily: "inherit", children: data.guard.label })
62865
- ] });
62866
- })(),
62867
- hasEffects && (() => {
62868
- const secY = cardY + headerH + sectionGap + triggerH + guardH;
62869
- return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
62870
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: SECTION_LEFT, y: secY + 12, fill: color, fontSize: 10, fontWeight: 600, opacity: 0.4, fontFamily: "inherit", children: "EFFECTS" }),
62871
- effects.map((eff, i) => {
62872
- const rowY = secY + 22 + i * effectRowH;
62873
- const effectType = mapEffectType(eff.type);
62874
- const argsText = eff.args.length > 0 ? eff.args.map((a) => typeof a === "string" ? a : JSON.stringify(a)).join(" \xB7 ") : "";
62875
- return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
62876
- /* @__PURE__ */ jsxRuntime.jsx(
62877
- exports.AvlEffect,
62878
- {
62879
- x: CONTENT_LEFT + 10,
62880
- y: rowY + 6,
62881
- effectType,
62882
- size: 10,
62883
- showBackground: true
62884
- }
62885
- ),
62886
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: CONTENT_LEFT + 28, y: rowY + 10, fill: color, fontSize: 12, fontWeight: 500, opacity: 0.8, fontFamily: "inherit", children: eff.type }),
62887
- argsText && /* @__PURE__ */ jsxRuntime.jsx("text", { x: CONTENT_LEFT + 28 + eff.type.length * 7 + 8, y: rowY + 10, fill: color, fontSize: 10, fontWeight: 400, opacity: 0.5, fontFamily: "monospace", children: argsText })
62888
- ] }, `eff-${i}`);
62889
- })
62890
- ] });
62891
- })(),
62892
- hasSlots && (() => {
62893
- const secY = cardY + headerH + sectionGap + triggerH + guardH + effectsH;
62894
- return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
62895
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: SECTION_LEFT, y: secY + 12, fill: color, fontSize: 10, fontWeight: 600, opacity: 0.4, fontFamily: "inherit", children: "SLOTS" }),
62896
- data.slotTargets.map((slot, i) => {
62897
- const rowY = secY + 22 + i * 22;
62898
- return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
62899
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: CONTENT_LEFT, y: rowY - 4, width: CARD_W - 56, height: 18, rx: 4, fill: color, fillOpacity: 0.04 }),
62900
- /* @__PURE__ */ jsxRuntime.jsxs("text", { x: CONTENT_LEFT + 8, y: rowY + 8, fill: color, fontSize: 11, fontFamily: "inherit", children: [
62901
- slot.name,
62902
- ": ",
62903
- slot.pattern
62904
- ] })
62905
- ] }, `slot-${i}`);
62906
- })
62907
- ] });
62908
- })()
62909
- ] });
62712
+ return /* @__PURE__ */ jsxRuntime.jsx(Card, { className: "w-full max-w-3xl mx-auto", shadow: "md", children: /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-6", children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "lg", children: [
62713
+ /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "md", justify: "center", align: "center", children: [
62714
+ /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "lg", children: data.from }),
62715
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h5", color: "muted", children: "\u2192" }),
62716
+ /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "neutral", size: "lg", children: data.to })
62717
+ ] }),
62718
+ /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", children: [
62719
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "overline", color: "muted", children: "TRIGGER" }),
62720
+ /* @__PURE__ */ jsxRuntime.jsx(HStack, { gap: "xs", align: "center", children: /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "body1", weight: "semibold", children: [
62721
+ "\u26A1 ",
62722
+ data.event
62723
+ ] }) })
62724
+ ] }),
62725
+ hasGuard && data.guard && /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", children: [
62726
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "overline", color: "muted", children: "GUARD" }),
62727
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", color: "muted", children: data.guard.label })
62728
+ ] }),
62729
+ hasEffects && /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", children: [
62730
+ /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "overline", color: "muted", children: [
62731
+ "EFFECTS (",
62732
+ effects.length,
62733
+ ")"
62734
+ ] }),
62735
+ /* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: accordionItems, multiple: true })
62736
+ ] }),
62737
+ hasSlots && /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", children: [
62738
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "overline", color: "muted", children: "SLOTS" }),
62739
+ /* @__PURE__ */ jsxRuntime.jsx(VStack, { gap: "xs", children: data.slotTargets.map((slot, i) => /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "center", children: [
62740
+ /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", size: "sm", children: slot.name }),
62741
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "muted", children: slot.pattern })
62742
+ ] }, `slot-${i}`)) })
62743
+ ] })
62744
+ ] }) }) });
62910
62745
  };
62911
- AvlTransitionScene.displayName = "AvlTransitionScene";
62746
+ AvlTransitionDetail.displayName = "AvlTransitionDetail";
62747
+ function safeParseLabel(label) {
62748
+ if (typeof label !== "string") return label;
62749
+ const trimmed = label.trim();
62750
+ if (!trimmed.startsWith("{") && !trimmed.startsWith("[")) return label;
62751
+ try {
62752
+ return JSON.parse(trimmed);
62753
+ } catch {
62754
+ return label;
62755
+ }
62756
+ }
62912
62757
 
62913
62758
  // components/organisms/avl/AvlOrbitalsCosmicZoom.tsx
62914
62759
  init_Box();
@@ -63470,83 +63315,31 @@ var AvlOrbitalsCosmicZoom = ({
63470
63315
  paddingRight: 24
63471
63316
  },
63472
63317
  children: /* @__PURE__ */ jsxRuntime.jsx(
63473
- FlowCanvas,
63474
- {
63475
- schema: scopedSchema,
63476
- initialLevel: "trait-expanded",
63477
- initialOrbital: state.selectedOrbital,
63478
- onNodeClick: handleCanvasNodeClick,
63479
- width: "100%",
63480
- height: "100%"
63481
- }
63482
- )
63483
- }
63484
- ),
63485
- state.level === "transition" && transitionLevelData && /* @__PURE__ */ jsxRuntime.jsx(
63486
- Box,
63487
- {
63488
- position: "absolute",
63489
- style: {
63490
- inset: 0,
63491
- paddingTop: 56,
63492
- paddingBottom: 24,
63493
- paddingLeft: 24,
63494
- paddingRight: 24
63495
- },
63496
- children: /* @__PURE__ */ jsxRuntime.jsx(
63497
- Box,
63498
- {
63499
- ref: transformWrapperRef,
63500
- position: "relative",
63501
- onPointerDown: handlePointerDown,
63502
- onPointerMove: handlePointerMove,
63503
- onPointerUp: handlePointerUp,
63504
- onPointerCancel: handlePointerUp,
63505
- style: {
63506
- width: "100%",
63507
- height: "100%",
63508
- cursor: dragStateRef.current ? "grabbing" : "grab",
63509
- overflow: "hidden"
63510
- },
63511
- children: /* @__PURE__ */ jsxRuntime.jsx(
63512
- Box,
63513
- {
63514
- position: "absolute",
63515
- style: {
63516
- inset: 0,
63517
- transform: `translate(${pan.x}px, ${pan.y}px) scale(${zoom})`,
63518
- transformOrigin: "0 0"
63519
- },
63520
- children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 600 400", style: { width: "100%", height: "100%" }, children: /* @__PURE__ */ jsxRuntime.jsx(
63521
- AvlTransitionScene,
63522
- {
63523
- data: transitionLevelData,
63524
- color
63525
- }
63526
- ) })
63527
- }
63528
- )
63318
+ FlowCanvas,
63319
+ {
63320
+ schema: scopedSchema,
63321
+ initialLevel: "trait-expanded",
63322
+ initialOrbital: state.selectedOrbital,
63323
+ onNodeClick: handleCanvasNodeClick,
63324
+ width: "100%",
63325
+ height: "100%"
63529
63326
  }
63530
63327
  )
63531
63328
  }
63532
63329
  ),
63533
- state.level === "transition" && /* @__PURE__ */ jsxRuntime.jsxs(
63330
+ state.level === "transition" && transitionLevelData && /* @__PURE__ */ jsxRuntime.jsx(
63534
63331
  Box,
63535
63332
  {
63536
63333
  position: "absolute",
63537
63334
  style: {
63538
- top: 12,
63539
- right: 12,
63540
- display: "flex",
63541
- flexDirection: "column",
63542
- gap: 4,
63543
- zIndex: 30
63335
+ inset: 0,
63336
+ paddingTop: 56,
63337
+ paddingBottom: 24,
63338
+ paddingLeft: 24,
63339
+ paddingRight: 24,
63340
+ overflowY: "auto"
63544
63341
  },
63545
- children: [
63546
- /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "secondary", size: "sm", onClick: zoomIn, title: "Zoom in", action: "COSMIC_ZOOM_IN", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "plus", size: "sm" }) }),
63547
- /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "secondary", size: "sm", onClick: zoomOut, title: "Zoom out", action: "COSMIC_ZOOM_OUT", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "minus", size: "sm" }) }),
63548
- /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "secondary", size: "sm", onClick: resetZoom, title: "Reset", action: "COSMIC_ZOOM_RESET", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "maximize", size: "sm" }) })
63549
- ]
63342
+ children: /* @__PURE__ */ jsxRuntime.jsx(AvlTransitionDetail, { data: transitionLevelData })
63550
63343
  }
63551
63344
  )
63552
63345
  ]
@@ -63554,6 +63347,247 @@ var AvlOrbitalsCosmicZoom = ({
63554
63347
  );
63555
63348
  };
63556
63349
  AvlOrbitalsCosmicZoom.displayName = "AvlOrbitalsCosmicZoom";
63350
+
63351
+ // components/organisms/avl/AvlTransitionScene.tsx
63352
+ init_AvlEffect();
63353
+ init_types();
63354
+ var CX = 300;
63355
+ var CARD_W = 440;
63356
+ var CARD_X = CX - CARD_W / 2;
63357
+ var SECTION_LEFT = CARD_X + 16;
63358
+ var CONTENT_LEFT = CARD_X + 24;
63359
+ function flattenEffect2(node) {
63360
+ const args = [];
63361
+ for (const child of node.children ?? []) {
63362
+ args.push(child.label);
63363
+ }
63364
+ return { type: node.label, args };
63365
+ }
63366
+ function mapEffectType(label) {
63367
+ const valid = [
63368
+ "render-ui",
63369
+ "set",
63370
+ "persist",
63371
+ "fetch",
63372
+ "emit",
63373
+ "navigate",
63374
+ "notify",
63375
+ "call-service",
63376
+ "spawn",
63377
+ "despawn",
63378
+ "do",
63379
+ "if",
63380
+ "log"
63381
+ ];
63382
+ return valid.includes(label) ? label : "log";
63383
+ }
63384
+ var AvlTransitionScene = ({
63385
+ data,
63386
+ color = "var(--color-primary)"
63387
+ }) => {
63388
+ const fromRole = getStateRole(data.from, true);
63389
+ const toRole = getStateRole(data.to, false, false);
63390
+ const fromColors = exports.STATE_COLORS[fromRole];
63391
+ const toColors = exports.STATE_COLORS[toRole];
63392
+ const hasGuard = !!data.guard;
63393
+ const hasEffects = data.effects.length > 0;
63394
+ const hasSlots = data.slotTargets.length > 0;
63395
+ const effects = data.effects.map(flattenEffect2);
63396
+ const headerH = 52;
63397
+ const sectionGap = 8;
63398
+ const triggerH = 34;
63399
+ const guardH = hasGuard ? 30 + sectionGap : 0;
63400
+ const effectRowH = 28;
63401
+ const effectsH = hasEffects ? 24 + effects.length * effectRowH + sectionGap : 0;
63402
+ const slotsH = hasSlots ? 24 + data.slotTargets.length * 22 + sectionGap : 0;
63403
+ const cardH = headerH + triggerH + guardH + effectsH + slotsH + 16;
63404
+ const cardY = Math.max(20, (400 - cardH) / 2);
63405
+ return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
63406
+ /* @__PURE__ */ jsxRuntime.jsx(
63407
+ "rect",
63408
+ {
63409
+ x: CARD_X,
63410
+ y: cardY,
63411
+ width: CARD_W,
63412
+ height: cardH,
63413
+ rx: 12,
63414
+ fill: "var(--color-surface, white)",
63415
+ fillOpacity: 0.97,
63416
+ stroke: color,
63417
+ strokeWidth: 0.8,
63418
+ strokeOpacity: 0.2
63419
+ }
63420
+ ),
63421
+ /* @__PURE__ */ jsxRuntime.jsx(
63422
+ "rect",
63423
+ {
63424
+ x: CARD_X,
63425
+ y: cardY,
63426
+ width: CARD_W,
63427
+ height: headerH,
63428
+ rx: 12,
63429
+ fill: color,
63430
+ fillOpacity: 0.03
63431
+ }
63432
+ ),
63433
+ /* @__PURE__ */ jsxRuntime.jsx(
63434
+ "rect",
63435
+ {
63436
+ x: CARD_X,
63437
+ y: cardY + headerH - 12,
63438
+ width: CARD_W,
63439
+ height: 12,
63440
+ fill: color,
63441
+ fillOpacity: 0.03
63442
+ }
63443
+ ),
63444
+ /* @__PURE__ */ jsxRuntime.jsx(
63445
+ "rect",
63446
+ {
63447
+ x: CARD_X + 20,
63448
+ y: cardY + 12,
63449
+ width: 140,
63450
+ height: 30,
63451
+ rx: 15,
63452
+ fill: fromColors.fill,
63453
+ stroke: fromColors.border,
63454
+ strokeWidth: 1.5
63455
+ }
63456
+ ),
63457
+ /* @__PURE__ */ jsxRuntime.jsx(
63458
+ "text",
63459
+ {
63460
+ x: CARD_X + 90,
63461
+ y: cardY + 31,
63462
+ textAnchor: "middle",
63463
+ fill: fromColors.border,
63464
+ fontSize: 14,
63465
+ fontWeight: 600,
63466
+ fontFamily: "inherit",
63467
+ children: data.from
63468
+ }
63469
+ ),
63470
+ /* @__PURE__ */ jsxRuntime.jsx(
63471
+ "text",
63472
+ {
63473
+ x: CX,
63474
+ y: cardY + 32,
63475
+ textAnchor: "middle",
63476
+ fill: color,
63477
+ fontSize: 16,
63478
+ opacity: 0.4,
63479
+ fontFamily: "inherit",
63480
+ children: "\u2192"
63481
+ }
63482
+ ),
63483
+ /* @__PURE__ */ jsxRuntime.jsx(
63484
+ "rect",
63485
+ {
63486
+ x: CARD_X + CARD_W - 160,
63487
+ y: cardY + 12,
63488
+ width: 140,
63489
+ height: 30,
63490
+ rx: 15,
63491
+ fill: toColors.fill,
63492
+ stroke: toColors.border,
63493
+ strokeWidth: 1.5
63494
+ }
63495
+ ),
63496
+ /* @__PURE__ */ jsxRuntime.jsx(
63497
+ "text",
63498
+ {
63499
+ x: CARD_X + CARD_W - 90,
63500
+ y: cardY + 31,
63501
+ textAnchor: "middle",
63502
+ fill: toColors.border,
63503
+ fontSize: 14,
63504
+ fontWeight: 600,
63505
+ fontFamily: "inherit",
63506
+ children: data.to
63507
+ }
63508
+ ),
63509
+ /* @__PURE__ */ jsxRuntime.jsx(
63510
+ "line",
63511
+ {
63512
+ x1: CARD_X + 12,
63513
+ y1: cardY + headerH,
63514
+ x2: CARD_X + CARD_W - 12,
63515
+ y2: cardY + headerH,
63516
+ stroke: color,
63517
+ strokeWidth: 0.5,
63518
+ opacity: 0.1
63519
+ }
63520
+ ),
63521
+ (() => {
63522
+ const secY = cardY + headerH + sectionGap;
63523
+ return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
63524
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: SECTION_LEFT, y: secY + 12, fill: color, fontSize: 10, fontWeight: 600, opacity: 0.4, fontFamily: "inherit", children: "TRIGGER" }),
63525
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: CONTENT_LEFT + 14, y: secY + 28, fill: color, fontSize: 14, fontWeight: 600, fontFamily: "inherit", children: data.event }),
63526
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: CONTENT_LEFT + 4, y: secY + 28, fill: color, fontSize: 10, opacity: 0.5, children: "\u26A1" })
63527
+ ] });
63528
+ })(),
63529
+ hasGuard && data.guard && (() => {
63530
+ const secY = cardY + headerH + sectionGap + triggerH;
63531
+ return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
63532
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: SECTION_LEFT, y: secY + 12, fill: color, fontSize: 10, fontWeight: 600, opacity: 0.4, fontFamily: "inherit", children: "GUARD" }),
63533
+ /* @__PURE__ */ jsxRuntime.jsx(
63534
+ "polygon",
63535
+ {
63536
+ points: `${CONTENT_LEFT + 6},${secY + 22} ${CONTENT_LEFT + 2},${secY + 26} ${CONTENT_LEFT + 6},${secY + 30} ${CONTENT_LEFT + 10},${secY + 26}`,
63537
+ fill: "none",
63538
+ stroke: color,
63539
+ strokeWidth: 1,
63540
+ opacity: 0.5
63541
+ }
63542
+ ),
63543
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: CONTENT_LEFT + 18, y: secY + 29, fill: color, fontSize: 12, fontWeight: 400, opacity: 0.6, fontFamily: "inherit", children: data.guard.label })
63544
+ ] });
63545
+ })(),
63546
+ hasEffects && (() => {
63547
+ const secY = cardY + headerH + sectionGap + triggerH + guardH;
63548
+ return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
63549
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: SECTION_LEFT, y: secY + 12, fill: color, fontSize: 10, fontWeight: 600, opacity: 0.4, fontFamily: "inherit", children: "EFFECTS" }),
63550
+ effects.map((eff, i) => {
63551
+ const rowY = secY + 22 + i * effectRowH;
63552
+ const effectType = mapEffectType(eff.type);
63553
+ const argsText = eff.args.length > 0 ? eff.args.map((a) => typeof a === "string" ? a : JSON.stringify(a)).join(" \xB7 ") : "";
63554
+ return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
63555
+ /* @__PURE__ */ jsxRuntime.jsx(
63556
+ exports.AvlEffect,
63557
+ {
63558
+ x: CONTENT_LEFT + 10,
63559
+ y: rowY + 6,
63560
+ effectType,
63561
+ size: 10,
63562
+ showBackground: true
63563
+ }
63564
+ ),
63565
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: CONTENT_LEFT + 28, y: rowY + 10, fill: color, fontSize: 12, fontWeight: 500, opacity: 0.8, fontFamily: "inherit", children: eff.type }),
63566
+ argsText && /* @__PURE__ */ jsxRuntime.jsx("text", { x: CONTENT_LEFT + 28 + eff.type.length * 7 + 8, y: rowY + 10, fill: color, fontSize: 10, fontWeight: 400, opacity: 0.5, fontFamily: "monospace", children: argsText })
63567
+ ] }, `eff-${i}`);
63568
+ })
63569
+ ] });
63570
+ })(),
63571
+ hasSlots && (() => {
63572
+ const secY = cardY + headerH + sectionGap + triggerH + guardH + effectsH;
63573
+ return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
63574
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: SECTION_LEFT, y: secY + 12, fill: color, fontSize: 10, fontWeight: 600, opacity: 0.4, fontFamily: "inherit", children: "SLOTS" }),
63575
+ data.slotTargets.map((slot, i) => {
63576
+ const rowY = secY + 22 + i * 22;
63577
+ return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
63578
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: CONTENT_LEFT, y: rowY - 4, width: CARD_W - 56, height: 18, rx: 4, fill: color, fillOpacity: 0.04 }),
63579
+ /* @__PURE__ */ jsxRuntime.jsxs("text", { x: CONTENT_LEFT + 8, y: rowY + 8, fill: color, fontSize: 11, fontFamily: "inherit", children: [
63580
+ slot.name,
63581
+ ": ",
63582
+ slot.pattern
63583
+ ] })
63584
+ ] }, `slot-${i}`);
63585
+ })
63586
+ ] });
63587
+ })()
63588
+ ] });
63589
+ };
63590
+ AvlTransitionScene.displayName = "AvlTransitionScene";
63557
63591
  var AvlClickTarget = ({
63558
63592
  x,
63559
63593
  y,