@agent-ui-kit/web-components 0.0.14 → 0.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/dist/agent-ui.css +1 -1
  2. package/dist/api.colors.json +2 -2
  3. package/dist/api.colors.yaml +2 -2
  4. package/dist/api.components.json +3878 -636
  5. package/dist/api.tokens.json +35 -3
  6. package/dist/api.tokens.yaml +27 -3
  7. package/dist/chunks/{agent-C72JZNe6.js → agent-XMhz_6OA.js} +85 -76
  8. package/dist/chunks/{agent-C72JZNe6.js.map → agent-XMhz_6OA.js.map} +1 -1
  9. package/dist/chunks/{empty-state-5M3uR5CM.js → form-oekEhwja.js} +1409 -960
  10. package/dist/chunks/form-oekEhwja.js.map +1 -0
  11. package/dist/components/agent.js +6 -6
  12. package/dist/components/avatar/avatar.d.ts +0 -0
  13. package/dist/components/badge/badge.d.ts +0 -0
  14. package/dist/components/bar/bar.d.ts +0 -0
  15. package/dist/components/breadcrumb/breadcrumb.d.ts +2 -0
  16. package/dist/components/button-group/button-group.d.ts +0 -0
  17. package/dist/components/checkbox-group/checkbox-group.d.ts +14 -0
  18. package/dist/components/checkbox-group/index.d.ts +1 -0
  19. package/dist/components/code/code.d.ts +0 -0
  20. package/dist/components/color-area/color-area.d.ts +2 -1
  21. package/dist/components/color-picker/color-picker.d.ts +1 -0
  22. package/dist/components/color-picker/oklch-utils.d.ts +18 -0
  23. package/dist/components/color-slider/color-slider.d.ts +1 -1
  24. package/dist/components/color-swatch/color-swatch.d.ts +0 -0
  25. package/dist/components/content/content.d.ts +0 -0
  26. package/dist/components/description-list/description-list.d.ts +0 -0
  27. package/dist/components/divider/divider.d.ts +0 -0
  28. package/dist/components/editor.js +1 -1
  29. package/dist/components/fieldset/fieldset.d.ts +0 -0
  30. package/dist/components/footer/footer.d.ts +0 -0
  31. package/dist/components/form/form.d.ts +12 -0
  32. package/dist/components/form/index.d.ts +1 -0
  33. package/dist/components/graph.js +1 -1
  34. package/dist/components/grid/grid.d.ts +0 -0
  35. package/dist/components/header/header.d.ts +0 -0
  36. package/dist/components/heading/heading.d.ts +0 -0
  37. package/dist/components/index.d.ts +2 -0
  38. package/dist/components/input-group/input-group.d.ts +0 -0
  39. package/dist/components/inset/inset.d.ts +0 -0
  40. package/dist/components/kbd/kbd.d.ts +0 -0
  41. package/dist/components/noodles/noodle-controller.d.ts +1 -1
  42. package/dist/components/stack/stack.d.ts +0 -0
  43. package/dist/components/stat/stat.d.ts +4 -0
  44. package/dist/components/text/text.d.ts +0 -0
  45. package/dist/components/time-field/time-field.d.ts +1 -0
  46. package/dist/components/wrap/wrap.d.ts +0 -0
  47. package/dist/components.js +115 -126
  48. package/dist/components.js.map +1 -1
  49. package/dist/docs/blocks/agent-chat.yaml +33 -25
  50. package/dist/docs/blocks/announcement-card.yaml +14 -10
  51. package/dist/docs/blocks/bpm-process.yaml +216 -4
  52. package/dist/docs/blocks/chart-activity.yaml +12 -10
  53. package/dist/docs/blocks/chart-card.yaml +14 -11
  54. package/dist/docs/blocks/chart-donut.yaml +27 -23
  55. package/dist/docs/blocks/chart-grouped.yaml +14 -11
  56. package/dist/docs/blocks/chart-horizontal.yaml +13 -10
  57. package/dist/docs/blocks/chart-interactive.yaml +20 -17
  58. package/dist/docs/blocks/chart-labeled.yaml +14 -11
  59. package/dist/docs/blocks/checkout-form.yaml +26 -16
  60. package/dist/docs/blocks/clinical-trial.yaml +180 -4
  61. package/dist/docs/blocks/contributors.yaml +17 -11
  62. package/dist/docs/blocks/cyber-threat.yaml +158 -4
  63. package/dist/docs/blocks/dashboard-layout.yaml +25 -18
  64. package/dist/docs/blocks/data-eng-dag.yaml +222 -6
  65. package/dist/docs/blocks/date-picker.yaml +11 -10
  66. package/dist/docs/blocks/ddx-workflow.yaml +202 -6
  67. package/dist/docs/blocks/empty-state.yaml +8 -11
  68. package/dist/docs/blocks/env-variables.yaml +29 -20
  69. package/dist/docs/blocks/feature-upgrade.yaml +25 -18
  70. package/dist/docs/blocks/financial-risk.yaml +161 -4
  71. package/dist/docs/blocks/flow-editor.yaml +27 -18
  72. package/dist/docs/blocks/gen-ai-pipeline.yaml +232 -5
  73. package/dist/docs/blocks/issue-assign.yaml +25 -14
  74. package/dist/docs/blocks/keyboard-shortcuts.yaml +14 -9
  75. package/dist/docs/blocks/login-branded.yaml +62 -23
  76. package/dist/docs/blocks/login-email-only.yaml +14 -13
  77. package/dist/docs/blocks/login-form.yaml +17 -11
  78. package/dist/docs/blocks/login-simple.yaml +18 -12
  79. package/dist/docs/blocks/login-social.yaml +21 -14
  80. package/dist/docs/blocks/login-two-column.yaml +42 -22
  81. package/dist/docs/blocks/marketing-automation.yaml +209 -4
  82. package/dist/docs/blocks/member-list.yaml +23 -18
  83. package/dist/docs/blocks/ml-pipeline.yaml +163 -4
  84. package/dist/docs/blocks/nav-card.yaml +13 -11
  85. package/dist/docs/blocks/notification-list.yaml +18 -13
  86. package/dist/docs/blocks/oncology-pathway.yaml +227 -4
  87. package/dist/docs/blocks/pricing-card.yaml +20 -13
  88. package/dist/docs/blocks/processing-state.yaml +14 -11
  89. package/dist/docs/blocks/profile-card.yaml +22 -16
  90. package/dist/docs/blocks/saas-onboarding.yaml +222 -4
  91. package/dist/docs/blocks/settings-form.yaml +20 -11
  92. package/dist/docs/blocks/settings-panel.yaml +23 -22
  93. package/dist/docs/blocks/sidebar-nav.yaml +23 -15
  94. package/dist/docs/blocks/signup-form.yaml +17 -11
  95. package/dist/docs/blocks/stat-cards.yaml +12 -13
  96. package/dist/docs/blocks/status-card.yaml +20 -17
  97. package/dist/docs/blocks/suggested-labs.yaml +20 -13
  98. package/dist/docs/blocks/supply-chain.yaml +160 -4
  99. package/dist/docs/blocks/survey-card.yaml +21 -13
  100. package/dist/docs/blocks/tabbed-panel.yaml +21 -15
  101. package/dist/docs/blocks/team-empty.yaml +8 -9
  102. package/dist/docs/blocks/usage-billing.yaml +20 -16
  103. package/dist/docs/components/accordion-item.yaml +13 -21
  104. package/dist/docs/components/accordion.yaml +23 -29
  105. package/dist/docs/components/agent-activity.yaml +49 -41
  106. package/dist/docs/components/agent-feed.yaml +15 -22
  107. package/dist/docs/components/agent-input.yaml +238 -0
  108. package/dist/docs/components/agent-message.yaml +29 -48
  109. package/dist/docs/components/agent-panel.yaml +21 -24
  110. package/dist/docs/components/agent-prompt.yaml +29 -47
  111. package/dist/docs/components/agent-seeds.yaml +16 -24
  112. package/dist/docs/components/agent-text.yaml +14 -24
  113. package/dist/docs/components/agent-thread.yaml +15 -24
  114. package/dist/docs/components/alert.yaml +41 -39
  115. package/dist/docs/components/avatar-group.yaml +72 -45
  116. package/dist/docs/components/avatar.yaml +99 -0
  117. package/dist/docs/components/badge.yaml +110 -0
  118. package/dist/docs/components/bar.yaml +84 -0
  119. package/dist/docs/components/breadcrumb-item.yaml +8 -17
  120. package/dist/docs/components/breadcrumb.yaml +91 -29
  121. package/dist/docs/components/button-group.yaml +93 -0
  122. package/dist/docs/components/button.yaml +188 -261
  123. package/dist/docs/components/calendar-picker.yaml +16 -35
  124. package/dist/docs/components/calendar-range-picker.yaml +11 -29
  125. package/dist/docs/components/calendar.yaml +11 -29
  126. package/dist/docs/components/canvas.yaml +44 -61
  127. package/dist/docs/components/checkbox.yaml +37 -49
  128. package/dist/docs/components/chip.yaml +89 -55
  129. package/dist/docs/components/code-block.yaml +54 -53
  130. package/dist/docs/components/code.yaml +37 -0
  131. package/dist/docs/components/color-area.yaml +119 -0
  132. package/dist/docs/components/color-field.yaml +121 -0
  133. package/dist/docs/components/color-picker.yaml +87 -35
  134. package/dist/docs/components/color-slider.yaml +153 -0
  135. package/dist/docs/components/color-swatch.yaml +98 -0
  136. package/dist/docs/components/command.yaml +13 -18
  137. package/dist/docs/components/container.yaml +84 -73
  138. package/dist/docs/components/content.yaml +100 -0
  139. package/dist/docs/components/context-menu.yaml +11 -20
  140. package/dist/docs/components/date-field.yaml +81 -33
  141. package/dist/docs/components/description-list.yaml +81 -0
  142. package/dist/docs/components/disclosure-group.yaml +61 -42
  143. package/dist/docs/components/disclosure.yaml +60 -46
  144. package/dist/docs/components/divider.yaml +63 -0
  145. package/dist/docs/components/dropdown-menu.yaml +16 -25
  146. package/dist/docs/components/feed.yaml +15 -24
  147. package/dist/docs/components/field.yaml +50 -71
  148. package/dist/docs/components/fieldset.yaml +92 -0
  149. package/dist/docs/components/footer.yaml +147 -0
  150. package/dist/docs/components/grid.yaml +87 -0
  151. package/dist/docs/components/gripper.yaml +11 -23
  152. package/dist/docs/components/header.yaml +168 -0
  153. package/dist/docs/components/heading.yaml +58 -0
  154. package/dist/docs/components/hover-card.yaml +17 -25
  155. package/dist/docs/components/icon.yaml +32 -65
  156. package/dist/docs/components/index.yaml +11 -1
  157. package/dist/docs/components/input-group.yaml +102 -0
  158. package/dist/docs/components/input-otp.yaml +20 -19
  159. package/dist/docs/components/input.yaml +100 -139
  160. package/dist/docs/components/inset.yaml +59 -0
  161. package/dist/docs/components/kbd.yaml +57 -0
  162. package/dist/docs/components/link.yaml +36 -45
  163. package/dist/docs/components/meter.yaml +54 -42
  164. package/dist/docs/components/nav-item.yaml +54 -43
  165. package/dist/docs/components/noodles.yaml +72 -104
  166. package/dist/docs/components/option.yaml +12 -23
  167. package/dist/docs/components/pagination.yaml +21 -18
  168. package/dist/docs/components/pane.yaml +18 -32
  169. package/dist/docs/components/panes.yaml +19 -27
  170. package/dist/docs/components/progress-circle.yaml +64 -55
  171. package/dist/docs/components/progress.yaml +35 -51
  172. package/dist/docs/components/radio-group.yaml +99 -40
  173. package/dist/docs/components/radio.yaml +40 -41
  174. package/dist/docs/components/range.yaml +24 -27
  175. package/dist/docs/components/segmented-control.yaml +58 -17
  176. package/dist/docs/components/select.yaml +80 -100
  177. package/dist/docs/components/skeleton.yaml +39 -39
  178. package/dist/docs/components/sparkline.yaml +28 -45
  179. package/dist/docs/components/spinner.yaml +32 -33
  180. package/dist/docs/components/stack.yaml +126 -0
  181. package/dist/docs/components/stat.yaml +164 -0
  182. package/dist/docs/components/stepper.yaml +46 -53
  183. package/dist/docs/components/switch.yaml +36 -47
  184. package/dist/docs/components/tab-panel.yaml +27 -18
  185. package/dist/docs/components/tab.yaml +25 -22
  186. package/dist/docs/components/table-header.yaml +22 -12
  187. package/dist/docs/components/tabs.yaml +103 -20
  188. package/dist/docs/components/tag-group.yaml +63 -47
  189. package/dist/docs/components/text.yaml +67 -0
  190. package/dist/docs/components/textarea.yaml +43 -60
  191. package/dist/docs/components/time-field.yaml +108 -34
  192. package/dist/docs/components/toast.yaml +13 -30
  193. package/dist/docs/components/tooltip.yaml +56 -49
  194. package/dist/docs/components/tree-item.yaml +9 -10
  195. package/dist/docs/components/tree.yaml +127 -10
  196. package/dist/docs/components/wrap.yaml +60 -0
  197. package/dist/docs/traits/toggle-theme.yaml +34 -0
  198. package/dist/element.js +1 -1
  199. package/dist/icons.js +79 -59
  200. package/dist/icons.js.map +1 -1
  201. package/dist/reactivity.js +2 -2
  202. package/dist/register.d.ts +0 -1
  203. package/dist/register.js +368 -352
  204. package/dist/register.js.map +1 -1
  205. package/dist/store.js +1 -1
  206. package/dist/traits/toggle-theme/toggle-theme.d.ts +0 -0
  207. package/dist/traits/toggle-theme/toggle-theme.trait.d.ts +2 -0
  208. package/dist/traits.js +528 -485
  209. package/dist/traits.js.map +1 -1
  210. package/package.json +1 -1
  211. package/dist/chunks/empty-state-5M3uR5CM.js.map +0 -1
@@ -1,17 +1,25 @@
1
1
  name: feature-upgrade
2
2
  type: block
3
3
  summary: Feature upgrade card with checklist, note, and call-to-action.
4
- description: >
5
- A persuasion card for upsells and feature announcements. Heading and
6
- description at top, a checklist of feature benefits with check icons,
7
- an inset note box with supporting detail, and a footer with cancel and
8
- primary enable actions in an aui-button-group.
9
-
10
- components: [aui-container, aui-content, aui-footer, aui-inset, aui-stack, aui-heading, aui-text, aui-avatar, aui-icon, aui-badge, aui-button, aui-button-group]
4
+ description: |
5
+ A persuasion card for upsells and feature announcements. Heading and description at top, a checklist of feature benefits with check icons, an inset note box with supporting detail, and a footer with cancel and primary enable actions in an aui-button-group.
6
+ components:
7
+ - aui-container
8
+ - aui-content
9
+ - aui-footer
10
+ - aui-inset
11
+ - aui-stack
12
+ - aui-heading
13
+ - aui-text
14
+ - aui-avatar
15
+ - aui-icon
16
+ - aui-badge
17
+ - aui-button
18
+ - aui-button-group
11
19
  kind: card
12
-
13
20
  examples:
14
- - html: |
21
+ - description: Feature upgrade card with checklist, note, and call-to-action.
22
+ html: |-
15
23
  <aui-container kind="card" bordered max-width="prose">
16
24
  <aui-content>
17
25
  <aui-inset>
@@ -22,16 +30,16 @@ examples:
22
30
  </aui-stack>
23
31
  <aui-stack gap="3">
24
32
  <aui-stack direction="row" gap="2">
25
- <aui-avatar square size="sm"><aui-icon name="check"></aui-icon></aui-avatar>
26
- <aui-text size="sm"><strong>Code reviews</strong> with full codebase context to catch <strong>hard-to-find</strong> bugs.</aui-text>
33
+ <aui-avatar square size="sm" success solid><aui-icon name="check"></aui-icon></aui-avatar>
34
+ <aui-heading size="sm"><strong>Code reviews</strong> with full codebase context to catch <strong>hard-to-find</strong> bugs.</aui-heading>
27
35
  </aui-stack>
28
36
  <aui-stack direction="row" gap="2">
29
- <aui-avatar square size="sm"><aui-icon name="check"></aui-icon></aui-avatar>
30
- <aui-text size="sm"><strong>Code suggestions</strong> validated in sandboxes before you merge.</aui-text>
37
+ <aui-avatar square size="sm" success solid><aui-icon name="check"></aui-icon></aui-avatar>
38
+ <aui-heading size="sm"><strong>Code suggestions</strong> validated in sandboxes before you merge.</aui-heading>
31
39
  </aui-stack>
32
40
  <aui-stack direction="row" gap="2">
33
- <aui-avatar square size="sm"><aui-icon name="check"></aui-icon></aui-avatar>
34
- <aui-text size="sm"><strong>Root-cause analysis</strong> for production issues with deployment context. <aui-badge accent>Requires Plus</aui-badge></aui-text>
41
+ <aui-avatar square size="sm" success solid><aui-icon name="check"></aui-icon></aui-avatar>
42
+ <aui-heading size="sm"><strong>Root-cause analysis</strong> for production issues with deployment context. <aui-badge accent>Requires Plus</aui-badge></aui-heading>
35
43
  </aui-stack>
36
44
  </aui-stack>
37
45
  <aui-container kind="widget" elevation="3">
@@ -44,9 +52,8 @@ examples:
44
52
  </aui-content>
45
53
  <aui-footer>
46
54
  <aui-button-group>
47
- <aui-button scrim grow="1">Cancel</aui-button>
48
- <aui-button primary grow="1">Enable with $100 credits</aui-button>
55
+ <aui-button primary grow="1" basis="0">Enable with $100 credits</aui-button>
56
+ <aui-button scrim grow="1" basis="0">Cancel</aui-button>
49
57
  </aui-button-group>
50
58
  </aui-footer>
51
59
  </aui-container>
52
- description: Feature upgrade card with benefits checklist and trial credit offer.
@@ -1,7 +1,164 @@
1
1
  name: financial-risk
2
2
  type: block
3
3
  summary: Financial Risk Cascade — 12 nodes, 14 connections.
4
- description: >
5
- Visual graph block rendered from the Financial Risk Cascade dataset using
6
- aui-graph components with port-selector noodle connections.
7
- components: [aui-container, aui-text, aui-graph-ui, aui-graph-layer, aui-graph-node, aui-graph-noodle, aui-graph-port]
4
+ description: |
5
+ Visual graph block rendered from the Financial Risk Cascade dataset using aui-graph components with port-selector noodle connections.
6
+ components:
7
+ - aui-container
8
+ - aui-text
9
+ - aui-graph-ui
10
+ - aui-graph-layer
11
+ - aui-graph-node
12
+ - aui-graph-noodle
13
+ - aui-graph-port
14
+ examples:
15
+ - description: Financial Risk Cascade — 12 nodes, 14 connections.
16
+ html: |-
17
+ <aui-graph-ui connectable style="width: 100%; height: 32.875rem; min-width: 71.125rem;">
18
+ <aui-graph-layer name="wires" type="svg">
19
+ <!-- Market Data Feed → Interest Rate Model -->
20
+ <aui-graph-noodle from="fr-market:right" to="fr-interest:left" color="accent" weight="2"></aui-graph-noodle>
21
+ <!-- Market Data Feed → Credit Risk Model -->
22
+ <aui-graph-noodle from="fr-market:right" to="fr-credit:left" color="accent" weight="2"></aui-graph-noodle>
23
+ <!-- FX Rate Engine → Credit Risk Model -->
24
+ <aui-graph-noodle from="fr-fx:right" to="fr-credit:left" color="accent" weight="2"></aui-graph-noodle>
25
+ <!-- FX Rate Engine → VaR Calculator -->
26
+ <aui-graph-noodle from="fr-fx:right" to="fr-var:left" color="accent" weight="2"></aui-graph-noodle>
27
+ <!-- Interest Rate Model → VaR Calculator -->
28
+ <aui-graph-noodle from="fr-interest:right" to="fr-var:left" color="accent" weight="2"></aui-graph-noodle>
29
+ <!-- Credit Risk Model → Stress Test Engine -->
30
+ <aui-graph-noodle from="fr-credit:right" to="fr-stress:left" color="accent" weight="2"></aui-graph-noodle>
31
+ <!-- VaR Calculator → Compliance Gateway -->
32
+ <aui-graph-noodle from="fr-var:right" to="fr-compliance:left" color="accent" weight="2"></aui-graph-noodle>
33
+ <!-- VaR Calculator → P&L Attribution -->
34
+ <aui-graph-noodle from="fr-var:right" to="fr-pnl:left" color="accent" weight="2"></aui-graph-noodle>
35
+ <!-- Stress Test Engine → Compliance Gateway -->
36
+ <aui-graph-noodle from="fr-stress:right" to="fr-compliance:left" color="accent" weight="2"></aui-graph-noodle>
37
+ <!-- Liquidity Monitor → Compliance Gateway -->
38
+ <aui-graph-noodle from="fr-liquidity:right" to="fr-compliance:left" color="danger" weight="2"></aui-graph-noodle>
39
+ <!-- Compliance Gateway → Regulatory Report -->
40
+ <aui-graph-noodle from="fr-compliance:right" to="fr-regulatory:left" color="accent" weight="2"></aui-graph-noodle>
41
+ <!-- P&L Attribution → Counterparty Exposure -->
42
+ <aui-graph-noodle from="fr-pnl:right" to="fr-counterparty:left" color="accent" weight="2"></aui-graph-noodle>
43
+ <!-- Counterparty Exposure → Margin Call Engine -->
44
+ <aui-graph-noodle from="fr-counterparty:right" to="fr-margin:left" color="accent" weight="2"></aui-graph-noodle>
45
+ <!-- Margin Call Engine → Regulatory Report -->
46
+ <aui-graph-noodle from="fr-margin:right" to="fr-regulatory:left" color="accent" weight="2"></aui-graph-noodle>
47
+ </aui-graph-layer>
48
+ <aui-graph-layer name="content">
49
+ <!-- Market Data Feed -->
50
+ <aui-graph-node x="24" y="116" node-id="fr-market">
51
+ <aui-container kind="card" bordered padding="3" accent>
52
+ <aui-text weight="medium">Market Data Feed</aui-text>
53
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
54
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
55
+ </aui-container>
56
+ </aui-graph-node>
57
+ <!-- FX Rate Engine -->
58
+ <aui-graph-node x="24" y="256" node-id="fr-fx">
59
+ <aui-container kind="card" bordered padding="3" accent>
60
+ <aui-text weight="medium">FX Rate Engine</aui-text>
61
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
62
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
63
+ </aui-container>
64
+ </aui-graph-node>
65
+ <!-- Interest Rate Model -->
66
+ <aui-graph-node x="240" y="46" node-id="fr-interest">
67
+ <aui-container kind="card" bordered padding="3" info>
68
+ <aui-text weight="medium">Interest Rate Model</aui-text>
69
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
70
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
71
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
72
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
73
+ </aui-container>
74
+ </aui-graph-node>
75
+ <!-- Credit Risk Model -->
76
+ <aui-graph-node x="240" y="186" node-id="fr-credit">
77
+ <aui-container kind="card" bordered padding="3" info>
78
+ <aui-text weight="medium">Credit Risk Model</aui-text>
79
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
80
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
81
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
82
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
83
+ </aui-container>
84
+ </aui-graph-node>
85
+ <!-- VaR Calculator -->
86
+ <aui-graph-node x="456" y="46" node-id="fr-var">
87
+ <aui-container kind="card" bordered padding="3" warning>
88
+ <aui-text weight="medium">VaR Calculator</aui-text>
89
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
90
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
91
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
92
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
93
+ </aui-container>
94
+ </aui-graph-node>
95
+ <!-- Stress Test Engine -->
96
+ <aui-graph-node x="456" y="186" node-id="fr-stress">
97
+ <aui-container kind="card" bordered padding="3" warning>
98
+ <aui-text weight="medium">Stress Test Engine</aui-text>
99
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
100
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
101
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
102
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
103
+ </aui-container>
104
+ </aui-graph-node>
105
+ <!-- Liquidity Monitor -->
106
+ <aui-graph-node x="456" y="326" node-id="fr-liquidity">
107
+ <aui-container kind="card" bordered padding="3" warning>
108
+ <aui-text weight="medium">Liquidity Monitor</aui-text>
109
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
110
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
111
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
112
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
113
+ </aui-container>
114
+ </aui-graph-node>
115
+ <!-- Compliance Gateway -->
116
+ <aui-graph-node x="672" y="116" node-id="fr-compliance">
117
+ <aui-container kind="card" bordered padding="3" danger>
118
+ <aui-text weight="medium">Compliance Gateway</aui-text>
119
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
120
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
121
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
122
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
123
+ </aui-container>
124
+ </aui-graph-node>
125
+ <!-- P&L Attribution -->
126
+ <aui-graph-node x="672" y="256" node-id="fr-pnl">
127
+ <aui-container kind="card" bordered padding="3" danger>
128
+ <aui-text weight="medium">P&L Attribution</aui-text>
129
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
130
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
131
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
132
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
133
+ </aui-container>
134
+ </aui-graph-node>
135
+ <!-- Regulatory Report -->
136
+ <aui-graph-node x="888" y="46" node-id="fr-regulatory">
137
+ <aui-container kind="card" bordered padding="3" success>
138
+ <aui-text weight="medium">Regulatory Report</aui-text>
139
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
140
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
141
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
142
+ </aui-container>
143
+ </aui-graph-node>
144
+ <!-- Counterparty Exposure -->
145
+ <aui-graph-node x="888" y="186" node-id="fr-counterparty">
146
+ <aui-container kind="card" bordered padding="3" success>
147
+ <aui-text weight="medium">Counterparty Exposure</aui-text>
148
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
149
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
150
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
151
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
152
+ </aui-container>
153
+ </aui-graph-node>
154
+ <!-- Margin Call Engine -->
155
+ <aui-graph-node x="888" y="326" node-id="fr-margin">
156
+ <aui-container kind="card" bordered padding="3" success>
157
+ <aui-text weight="medium">Margin Call Engine</aui-text>
158
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
159
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
160
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
161
+ </aui-container>
162
+ </aui-graph-node>
163
+ </aui-graph-layer>
164
+ </aui-graph-ui>
@@ -1,17 +1,22 @@
1
1
  name: flow-editor
2
2
  type: block
3
3
  summary: Data-driven pipeline diagram rendered from a JSON dataset.
4
- description: >
5
- A visual flow editor that renders pipeline nodes and connections from
6
- a standard JSON structure. Each node has an id, label, description,
7
- intent, and x/y position. Connections define from/to relationships
8
- between nodes. The same JSON schema powers the static CSS preview
9
- shown here and the interactive aui-noodles version with draggable
10
- bezier connections. Adapters can transform external formats (Airflow
11
- DAGs, dbt lineage, CI/CD pipelines) into this standard structure.
12
-
13
- components: [aui-container, aui-inset, aui-stack, aui-heading, aui-text, aui-badge, aui-editor, aui-editor-layer, aui-graph-ui, aui-graph-layer, aui-graph-node, aui-graph-noodle, aui-graph-port]
14
-
4
+ description: |
5
+ A visual flow editor that renders pipeline nodes and connections from a standard JSON structure. Each node has an id, label, description, intent, and x/y position. Connections define from/to relationships between nodes. The same JSON schema powers the static CSS preview shown here and the interactive aui-noodles version with draggable bezier connections. Adapters can transform external formats (Airflow DAGs, dbt lineage, CI/CD pipelines) into this standard structure.
6
+ components:
7
+ - aui-container
8
+ - aui-inset
9
+ - aui-stack
10
+ - aui-heading
11
+ - aui-text
12
+ - aui-badge
13
+ - aui-editor
14
+ - aui-editor-layer
15
+ - aui-graph-ui
16
+ - aui-graph-layer
17
+ - aui-graph-node
18
+ - aui-graph-noodle
19
+ - aui-graph-port
15
20
  schema:
16
21
  nodes:
17
22
  - id: string
@@ -25,7 +30,6 @@ schema:
25
30
  connections:
26
31
  - from: string (node id)
27
32
  to: string (node id)
28
-
29
33
  dataset: |
30
34
  {
31
35
  "nodes": [
@@ -41,18 +45,23 @@ dataset: |
41
45
  { "from": "validate", "to": "warehouse" }
42
46
  ]
43
47
  }
44
-
45
48
  examples:
46
- - html: |
49
+ - description: Data-driven pipeline diagram rendered from a JSON dataset.
50
+ html: |-
47
51
  <aui-stack gap="2">
48
- <aui-graph-ui style="width: 100%; height: 22rem; min-width: 44rem;" zoom="1">
52
+ <aui-graph-ui connectable style="width: 100%; height: 22rem" min-width="44" zoom="1">
49
53
  <aui-graph-layer name="wires" type="svg">
54
+ <!-- Data Ingest → Transform -->
50
55
  <aui-graph-noodle from="data-ingest:out" to="transform:in" color="accent" weight="2"></aui-graph-noodle>
56
+ <!-- Data Ingest → Validate -->
51
57
  <aui-graph-noodle from="data-ingest:out" to="validate:in" color="accent" weight="2"></aui-graph-noodle>
58
+ <!-- Transform → Data Warehouse -->
52
59
  <aui-graph-noodle from="transform:out" to="data-warehouse:in" color="success" weight="2"></aui-graph-noodle>
60
+ <!-- Validate → Data Warehouse -->
53
61
  <aui-graph-noodle from="validate:out" to="data-warehouse:in" color="warning" weight="2"></aui-graph-noodle>
54
62
  </aui-graph-layer>
55
63
  <aui-graph-layer name="content">
64
+ <!-- Source node -->
56
65
  <aui-graph-node x="30" y="45" node-id="data-ingest">
57
66
  <aui-container kind="widget" bordered accent>
58
67
  <aui-inset>
@@ -65,6 +74,7 @@ examples:
65
74
  <aui-graph-port port-id="out" side="right" type="output"></aui-graph-port>
66
75
  </aui-container>
67
76
  </aui-graph-node>
77
+ <!-- Transform node -->
68
78
  <aui-graph-node x="270" y="10" node-id="transform">
69
79
  <aui-container kind="widget" bordered info>
70
80
  <aui-inset>
@@ -78,6 +88,7 @@ examples:
78
88
  <aui-graph-port port-id="out" side="right" type="output"></aui-graph-port>
79
89
  </aui-container>
80
90
  </aui-graph-node>
91
+ <!-- Validate node -->
81
92
  <aui-graph-node x="270" y="140" node-id="validate">
82
93
  <aui-container kind="widget" bordered warning>
83
94
  <aui-inset>
@@ -91,6 +102,7 @@ examples:
91
102
  <aui-graph-port port-id="out" side="right" type="output"></aui-graph-port>
92
103
  </aui-container>
93
104
  </aui-graph-node>
105
+ <!-- Sink node -->
94
106
  <aui-graph-node x="510" y="75" node-id="data-warehouse">
95
107
  <aui-container kind="widget" bordered success>
96
108
  <aui-inset>
@@ -108,6 +120,3 @@ examples:
108
120
 
109
121
  <aui-text muted size="xs" align-items="center">Rendered from a standard JSON dataset. The same schema powers the interactive aui-graph version. Adapters can transform Airflow DAGs, dbt lineage, or CI/CD pipelines into this format.</aui-text>
110
122
  </aui-stack>
111
- description: >
112
- Data pipeline with 4 nodes (Source → Process → QA → Sink) using
113
- aui-graph components with draggable nodes and bezier noodle connections.
@@ -1,8 +1,235 @@
1
1
  name: gen-ai-pipeline
2
2
  type: block
3
3
  summary: ComfyUI-style generative AI pipeline with encoders, samplers, and post-processing nodes.
4
- description: >
5
- A visual node graph representing a Stable Diffusion / ComfyUI-style image generation
6
- pipeline. Includes prompt encoding, CLIP, VAE, UNet, KSampler, ControlNet, LoRA merging,
7
- SDXL refinement, upscaling, and face restoration stages connected by typed noodles.
8
- components: [aui-container, aui-text, aui-graph-ui, aui-graph-layer, aui-graph-node, aui-graph-noodle, aui-graph-port]
4
+ description: |
5
+ A visual node graph representing a Stable Diffusion / ComfyUI-style image generation pipeline. Includes prompt encoding, CLIP, VAE, UNet, KSampler, ControlNet, LoRA merging, SDXL refinement, upscaling, and face restoration stages connected by typed noodles.
6
+ components:
7
+ - aui-container
8
+ - aui-text
9
+ - aui-graph-ui
10
+ - aui-graph-layer
11
+ - aui-graph-node
12
+ - aui-graph-noodle
13
+ - aui-graph-port
14
+ examples:
15
+ - description: ComfyUI-style generative AI pipeline with encoders, samplers, and post-processing nodes.
16
+ html: |-
17
+ <aui-graph-ui connectable style="width: 100%; height: 39rem; min-width: 89rem;">
18
+ <aui-graph-layer name="wires" type="svg">
19
+ <!-- Prompt Encoder → CLIP Text Encoder -->
20
+ <aui-graph-noodle from="ai-prompt:right" to="ai-clip:left" color="accent" weight="2"></aui-graph-noodle>
21
+ <!-- Negative Prompt → CLIP Text Encoder -->
22
+ <aui-graph-noodle from="ai-neg-prompt:right" to="ai-clip:left" color="accent" weight="2"></aui-graph-noodle>
23
+ <!-- Reference Image → VAE Encoder -->
24
+ <aui-graph-noodle from="ai-ref-image:right" to="ai-vae-enc:left" color="accent" weight="2"></aui-graph-noodle>
25
+ <!-- Reference Image → IP-Adapter -->
26
+ <aui-graph-noodle from="ai-ref-image:right" to="ai-ipadapter:left" color="accent" weight="2"></aui-graph-noodle>
27
+ <!-- Style Transfer LoRA → LoRA Stack Merge -->
28
+ <aui-graph-noodle from="ai-style:right" to="ai-lora-stack:left" color="accent" weight="2"></aui-graph-noodle>
29
+ <!-- CLIP Text Encoder → KSampler Scheduler -->
30
+ <aui-graph-noodle from="ai-clip:right" to="ai-scheduler:left" color="accent" weight="2"></aui-graph-noodle>
31
+ <!-- CLIP Text Encoder → UNet Backbone -->
32
+ <aui-graph-noodle from="ai-clip:right" to="ai-unet:left" color="accent" weight="2"></aui-graph-noodle>
33
+ <!-- VAE Encoder → ControlNet (Canny) -->
34
+ <aui-graph-noodle from="ai-vae-enc:right" to="ai-controlnet:left" color="accent" weight="2"></aui-graph-noodle>
35
+ <!-- IP-Adapter → UNet Backbone -->
36
+ <aui-graph-noodle from="ai-ipadapter:right" to="ai-unet:left" color="accent" weight="2"></aui-graph-noodle>
37
+ <!-- LoRA Stack Merge → UNet Backbone -->
38
+ <aui-graph-noodle from="ai-lora-stack:top" to="ai-unet:bottom" color="accent" weight="2"></aui-graph-noodle>
39
+ <!-- KSampler Scheduler → KSampler -->
40
+ <aui-graph-noodle from="ai-scheduler:right" to="ai-sampler:left" color="accent" weight="2"></aui-graph-noodle>
41
+ <!-- UNet Backbone → KSampler -->
42
+ <aui-graph-noodle from="ai-unet:right" to="ai-sampler:left" color="accent" weight="2"></aui-graph-noodle>
43
+ <!-- ControlNet (Canny) → KSampler -->
44
+ <aui-graph-noodle from="ai-controlnet:right" to="ai-sampler:left" color="accent" weight="2"></aui-graph-noodle>
45
+ <!-- KSampler → SDXL Refiner -->
46
+ <aui-graph-noodle from="ai-sampler:bottom" to="ai-refiner:top" color="accent" weight="2"></aui-graph-noodle>
47
+ <!-- KSampler → VAE Decoder -->
48
+ <aui-graph-noodle from="ai-sampler:right" to="ai-vae-dec:left" color="accent" weight="2"></aui-graph-noodle>
49
+ <!-- SDXL Refiner → VAE Decoder -->
50
+ <aui-graph-noodle from="ai-refiner:right" to="ai-vae-dec:left" color="accent" weight="2"></aui-graph-noodle>
51
+ <!-- VAE Decoder → Upscale -->
52
+ <aui-graph-noodle from="ai-vae-dec:bottom" to="ai-upscale:top" color="accent" weight="2"></aui-graph-noodle>
53
+ <!-- VAE Decoder → Save Image -->
54
+ <aui-graph-noodle from="ai-vae-dec:right" to="ai-output:left" color="accent" weight="2"></aui-graph-noodle>
55
+ <!-- Upscale → Face Restore -->
56
+ <aui-graph-noodle from="ai-upscale:bottom" to="ai-face:top" color="accent" weight="2"></aui-graph-noodle>
57
+ <!-- Upscale → Save Image -->
58
+ <aui-graph-noodle from="ai-upscale:right" to="ai-output:left" color="accent" weight="2"></aui-graph-noodle>
59
+ <!-- Face Restore → Preview Node -->
60
+ <aui-graph-noodle from="ai-face:right" to="ai-preview:left" color="accent" weight="2"></aui-graph-noodle>
61
+ </aui-graph-layer>
62
+ <aui-graph-layer name="content">
63
+ <!-- Prompt Encoder -->
64
+ <aui-graph-node x="24" y="46" node-id="ai-prompt">
65
+ <aui-container kind="card" bordered padding="3" accent>
66
+ <aui-text weight="medium">Prompt Encoder</aui-text>
67
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
68
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
69
+ </aui-container>
70
+ </aui-graph-node>
71
+ <!-- Negative Prompt -->
72
+ <aui-graph-node x="24" y="186" node-id="ai-neg-prompt">
73
+ <aui-container kind="card" bordered padding="3" accent>
74
+ <aui-text weight="medium">Negative Prompt</aui-text>
75
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
76
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
77
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
78
+ </aui-container>
79
+ </aui-graph-node>
80
+ <!-- Reference Image -->
81
+ <aui-graph-node x="24" y="326" node-id="ai-ref-image">
82
+ <aui-container kind="card" bordered padding="3" accent>
83
+ <aui-text weight="medium">Reference Image</aui-text>
84
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
85
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
86
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
87
+ </aui-container>
88
+ </aui-graph-node>
89
+ <!-- Style Transfer LoRA -->
90
+ <aui-graph-node x="24" y="466" node-id="ai-style">
91
+ <aui-container kind="card" bordered padding="3" accent>
92
+ <aui-text weight="medium">Style Transfer LoRA</aui-text>
93
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
94
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
95
+ </aui-container>
96
+ </aui-graph-node>
97
+ <!-- CLIP Text Encoder -->
98
+ <aui-graph-node x="260" y="116" node-id="ai-clip">
99
+ <aui-container kind="card" bordered padding="3" info>
100
+ <aui-text weight="medium">CLIP Text Encoder</aui-text>
101
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
102
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
103
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
104
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
105
+ </aui-container>
106
+ </aui-graph-node>
107
+ <!-- VAE Encoder -->
108
+ <aui-graph-node x="260" y="256" node-id="ai-vae-enc">
109
+ <aui-container kind="card" bordered padding="3" info>
110
+ <aui-text weight="medium">VAE Encoder</aui-text>
111
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
112
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
113
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
114
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
115
+ </aui-container>
116
+ </aui-graph-node>
117
+ <!-- IP-Adapter -->
118
+ <aui-graph-node x="260" y="396" node-id="ai-ipadapter">
119
+ <aui-container kind="card" bordered padding="3" info>
120
+ <aui-text weight="medium">IP-Adapter</aui-text>
121
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
122
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
123
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
124
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
125
+ </aui-container>
126
+ </aui-graph-node>
127
+ <!-- KSampler Scheduler -->
128
+ <aui-graph-node x="500" y="46" node-id="ai-scheduler">
129
+ <aui-container kind="card" bordered padding="3" warning>
130
+ <aui-text weight="medium">KSampler Scheduler</aui-text>
131
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
132
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
133
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
134
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
135
+ </aui-container>
136
+ </aui-graph-node>
137
+ <!-- UNet Backbone -->
138
+ <aui-graph-node x="500" y="186" node-id="ai-unet">
139
+ <aui-container kind="card" bordered padding="3" warning>
140
+ <aui-text weight="medium">UNet Backbone</aui-text>
141
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
142
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
143
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
144
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
145
+ </aui-container>
146
+ </aui-graph-node>
147
+ <!-- ControlNet (Canny) -->
148
+ <aui-graph-node x="500" y="326" node-id="ai-controlnet">
149
+ <aui-container kind="card" bordered padding="3" warning>
150
+ <aui-text weight="medium">ControlNet (Canny)</aui-text>
151
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
152
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
153
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
154
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
155
+ </aui-container>
156
+ </aui-graph-node>
157
+ <!-- KSampler -->
158
+ <aui-graph-node x="740" y="116" node-id="ai-sampler">
159
+ <aui-container kind="card" bordered padding="3" danger>
160
+ <aui-text weight="medium">KSampler</aui-text>
161
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
162
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
163
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
164
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
165
+ </aui-container>
166
+ </aui-graph-node>
167
+ <!-- SDXL Refiner -->
168
+ <aui-graph-node x="740" y="256" node-id="ai-refiner">
169
+ <aui-container kind="card" bordered padding="3" danger>
170
+ <aui-text weight="medium">SDXL Refiner</aui-text>
171
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
172
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
173
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
174
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
175
+ </aui-container>
176
+ </aui-graph-node>
177
+ <!-- VAE Decoder -->
178
+ <aui-graph-node x="980" y="116" node-id="ai-vae-dec">
179
+ <aui-container kind="card" bordered padding="3" success>
180
+ <aui-text weight="medium">VAE Decoder</aui-text>
181
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
182
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
183
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
184
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
185
+ </aui-container>
186
+ </aui-graph-node>
187
+ <!-- Upscale (4x ESRGAN) -->
188
+ <aui-graph-node x="980" y="256" node-id="ai-upscale">
189
+ <aui-container kind="card" bordered padding="3" success>
190
+ <aui-text weight="medium">Upscale (4x ESRGAN)</aui-text>
191
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
192
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
193
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
194
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
195
+ </aui-container>
196
+ </aui-graph-node>
197
+ <!-- Face Restore (GFPGAN) -->
198
+ <aui-graph-node x="980" y="396" node-id="ai-face">
199
+ <aui-container kind="card" bordered padding="3" success>
200
+ <aui-text weight="medium">Face Restore (GFPGAN)</aui-text>
201
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
202
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
203
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
204
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
205
+ </aui-container>
206
+ </aui-graph-node>
207
+ <!-- Save Image -->
208
+ <aui-graph-node x="1220" y="186" node-id="ai-output">
209
+ <aui-container kind="card" bordered padding="3" success>
210
+ <aui-text weight="medium">Save Image</aui-text>
211
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
212
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
213
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
214
+ </aui-container>
215
+ </aui-graph-node>
216
+ <!-- Preview Node -->
217
+ <aui-graph-node x="1220" y="396" node-id="ai-preview">
218
+ <aui-container kind="card" bordered padding="3" info>
219
+ <aui-text weight="medium">Preview Node</aui-text>
220
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
221
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
222
+ </aui-container>
223
+ </aui-graph-node>
224
+ <!-- LoRA Stack Merge -->
225
+ <aui-graph-node x="500" y="466" node-id="ai-lora-stack">
226
+ <aui-container kind="card" bordered padding="3" warning>
227
+ <aui-text weight="medium">LoRA Stack Merge</aui-text>
228
+ <aui-graph-port port-id="left" side="left" type="input"></aui-graph-port>
229
+ <aui-graph-port port-id="right" side="right" type="output"></aui-graph-port>
230
+ <aui-graph-port port-id="top" side="top" type="input"></aui-graph-port>
231
+ <aui-graph-port port-id="bottom" side="bottom" type="output"></aui-graph-port>
232
+ </aui-container>
233
+ </aui-graph-node>
234
+ </aui-graph-layer>
235
+ </aui-graph-ui>