@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
package/dist/register.js CHANGED
@@ -1,9 +1,10 @@
1
- import { A as T, s as S, a as I, b as $, d as z, e as n, p as W, v as X, f as B, g as K, h as j, i as _, j as J, k as V, l as Z, m as Q, n as tt } from "./chunks/agent-C72JZNe6.js";
1
+ import { A as T, l as S, m as I, n as $, o as G, p as a, q as O, v as X, d as _, k as B, f as K, j, b as J, i as V, g as Z, e as Q, h as tt } from "./chunks/agent-XMhz_6OA.js";
2
2
  import { registerBuiltinTraits as et } from "./traits.js";
3
3
  import { AuiEditor as it, AuiEditorLayer as st } from "./components/editor.js";
4
4
  import { AuiGraphUi as at, AuiGraphLayer as nt, AuiGraphNode as ot, AuiGraphNoodle as rt, AuiGraphPort as ut } from "./components/graph.js";
5
- import { A as lt, a as dt, b as ct, c as ht, d as mt, e as pt, f as ft, g as bt, h as gt, i as vt, j as At, k as yt, l as wt, m as xt, n as Ct, o as Et, p as kt, q as St, r as Pt, s as $t, t as Lt, u as Mt, v as Dt, w as Tt, x as It, y as Nt, z as Yt, B as qt, C as Rt, D as Ft, E as zt, F as Gt, G as Ut, H as Ht, I as Ot, J as Wt, K as Xt, L as Bt, M as Kt, N as jt, O as _t, P as Jt, Q as Vt, R as Zt, S as Qt, T as te, U as ee, V as ie, W as se, X as ae, Y as ne, Z as oe, _ as re, $ as ue, a0 as le, a1 as de, a2 as ce, a3 as he, a4 as me, a5 as pe, a6 as fe, a7 as be, a8 as ge, a9 as ve, aa as Ae, ab as ye, ac as we, ad as xe, ae as Ce, af as Ee, ag as ke, ah as Se, ai as Pe, aj as $e, ak as Le, al as Me, am as De, an as Te, ao as Ie, ap as Ne, aq as Ye, ar as qe } from "./chunks/empty-state-5M3uR5CM.js";
6
- class Re extends T {
5
+ import "./icons.js";
6
+ import { f as lt, P as dt, j as ct, ae as ht, a1 as mt, a2 as pt, ap as ft, x as bt, C as gt, F as vt, N as At, as as yt, a3 as wt, Q as xt, L as Ct, U as Et, T as kt, a7 as St, ar as Pt, an as $t, af as Mt, ag as Lt, A as Dt, a as Tt, d as It, e as Nt, a6 as Yt, a5 as qt, Y as Rt, r as Ft, u as Gt, w as zt, v as Ut, t as Ht, s as Wt, _ as Ot, Z as Xt, ah as _t, ak as Bt, ai as Kt, am as jt, al as Jt, aj as Vt, at as Zt, au as Qt, I as te, a4 as ee, g as ie, h as se, b as ae, V as ne, X as oe, W as re, a8 as ue, ab as le, a9 as de, aa as ce, $ as he, m as me, ac as pe, l as fe, D as be, c as ge, a0 as ve, E as Ae, ao as ye, n as we, q as xe, o as Ce, aq as Ee, B as ke, y as Se, G as Pe, M as $e, p as Me, J as Le, z as De, ad as Te, O as Ie, i as Ne, S as Ye, H as qe, R as Re, k as Fe, K as Ge } from "./chunks/form-oekEhwja.js";
7
+ class ze extends T {
7
8
  static attributes = {
8
9
  key: { type: "string", default: "" },
9
10
  label: { type: "string", default: "" },
@@ -14,7 +15,7 @@ class Re extends T {
14
15
  align: { type: "enum", values: ["start", "center", "end"], default: "start" }
15
16
  };
16
17
  }
17
- class Fe extends T {
18
+ class Ue extends T {
18
19
  static attributes = {
19
20
  background: { type: "string", default: "none" },
20
21
  orientation: { type: "string", default: "horizontal" },
@@ -94,8 +95,8 @@ class Fe extends T {
94
95
  i.appendChild(r);
95
96
  }
96
97
  e.appendChild(i), t.appendChild(e), this.#n = e, this.#t = i;
97
- const a = this.hasAttribute("pan-enabled") || this.hasAttribute("infinite"), o = this.hasAttribute("zoom-enabled") || this.hasAttribute("infinite");
98
- a && (t.addEventListener("pointerdown", this.#y), t.addEventListener("pointermove", this.#w), t.addEventListener("pointerup", this.#v), t.addEventListener("pointercancel", this.#v)), o && t.addEventListener("wheel", this.#A, { passive: !1 }), this.#o();
98
+ const n = this.hasAttribute("pan-enabled") || this.hasAttribute("infinite"), o = this.hasAttribute("zoom-enabled") || this.hasAttribute("infinite");
99
+ n && (t.addEventListener("pointerdown", this.#y), t.addEventListener("pointermove", this.#w), t.addEventListener("pointerup", this.#v), t.addEventListener("pointercancel", this.#v)), o && t.addEventListener("wheel", this.#A, { passive: !1 }), this.#o();
99
100
  }
100
101
  // ── Transform ──
101
102
  #o() {
@@ -132,8 +133,8 @@ class Fe extends T {
132
133
  t.preventDefault();
133
134
  const e = t.deltaY > 0 ? -0.05 : 0.05, i = Math.max(0.1, Math.min(10, this.#r + e * this.#r));
134
135
  if (this.#e) {
135
- const s = this.#e.getBoundingClientRect(), a = (t.clientX - s.left) / s.width, o = (t.clientY - s.top) / s.height, r = i / this.#r;
136
- this.#a = a * s.width * (1 - r) + this.#a * r, this.#s = o * s.height * (1 - r) + this.#s * r;
136
+ const s = this.#e.getBoundingClientRect(), n = (t.clientX - s.left) / s.width, o = (t.clientY - s.top) / s.height, r = i / this.#r;
137
+ this.#a = n * s.width * (1 - r) + this.#a * r, this.#s = o * s.height * (1 - r) + this.#s * r;
137
138
  }
138
139
  this.#r = i, this.#o(), this.#b();
139
140
  };
@@ -156,19 +157,19 @@ class Fe extends T {
156
157
  }
157
158
  };
158
159
  }
159
- function L(m) {
160
- if (!m) return null;
161
- const t = /* @__PURE__ */ new Date(m + "T00:00:00");
160
+ function M(p) {
161
+ if (!p) return null;
162
+ const t = /* @__PURE__ */ new Date(p + "T00:00:00");
162
163
  return isNaN(t.getTime()) ? null : t;
163
164
  }
164
- function ze(m) {
165
- const t = m.getFullYear(), e = String(m.getMonth() + 1).padStart(2, "0"), i = String(m.getDate()).padStart(2, "0");
165
+ function He(p) {
166
+ const t = p.getFullYear(), e = String(p.getMonth() + 1).padStart(2, "0"), i = String(p.getDate()).padStart(2, "0");
166
167
  return `${t}-${e}-${i}`;
167
168
  }
168
- function N(m, t) {
169
- return m.getFullYear() === t.getFullYear() && m.getMonth() === t.getMonth() && m.getDate() === t.getDate();
169
+ function N(p, t) {
170
+ return p.getFullYear() === t.getFullYear() && p.getMonth() === t.getMonth() && p.getDate() === t.getDate();
170
171
  }
171
- class Ge {
172
+ class We {
172
173
  view;
173
174
  focusedYear;
174
175
  focusedMonth;
@@ -183,7 +184,7 @@ class Ge {
183
184
  years;
184
185
  title;
185
186
  constructor(t = {}) {
186
- const e = /* @__PURE__ */ new Date(), i = L(t.value ?? null) ?? e;
187
+ const e = /* @__PURE__ */ new Date(), i = M(t.value ?? null) ?? e;
187
188
  this.view = S("day"), this.focusedYear = S(i.getFullYear()), this.focusedMonth = S(i.getMonth()), this.value = S(t.value ?? null), this.rangeStart = S(t.rangeStart ?? null), this.rangeEnd = S(t.rangeEnd ?? null), this.min = S(t.min ?? null), this.max = S(t.max ?? null), this.days = I(() => this.#n()), this.months = I(() => this.#t()), this.years = I(() => this.#e()), this.title = I(() => this.#a());
188
189
  }
189
190
  // ── Navigation ──
@@ -231,50 +232,50 @@ class Ge {
231
232
  }
232
233
  // ── Validation ──
233
234
  isDateDisabled(t) {
234
- const e = L(this.min.value), i = L(this.max.value), s = L(t);
235
+ const e = M(this.min.value), i = M(this.max.value), s = M(t);
235
236
  return !!(!s || e && s < e || i && s > i);
236
237
  }
237
238
  // ── Private Computations ──
238
239
  #n() {
239
- const t = this.focusedYear.value, e = this.focusedMonth.value, i = L(this.value.value), s = /* @__PURE__ */ new Date(), a = L(this.rangeStart.value), o = L(this.rangeEnd.value), h = new Date(t, e, 1).getDay(), c = new Date(t, e, 1 - h), p = [];
240
- for (let l = 0; l < 42; l++) {
241
- const u = new Date(c.getFullYear(), c.getMonth(), c.getDate() + l), v = ze(u), d = u.getMonth() === e, f = N(u, s), g = i ? N(u, i) : !1, C = this.isDateDisabled(v);
242
- let b = !1, y = !1, P = !1;
243
- if (a && o) {
244
- const E = a <= o ? a : o, D = a <= o ? o : a;
245
- b = u >= E && u <= D, y = N(u, E), P = N(u, D);
240
+ const t = this.focusedYear.value, e = this.focusedMonth.value, i = M(this.value.value), s = /* @__PURE__ */ new Date(), n = M(this.rangeStart.value), o = M(this.rangeEnd.value), c = new Date(t, e, 1).getDay(), u = new Date(t, e, 1 - c), m = [];
241
+ for (let h = 0; h < 42; h++) {
242
+ const d = new Date(u.getFullYear(), u.getMonth(), u.getDate() + h), v = He(d), l = d.getMonth() === e, f = N(d, s), b = i ? N(d, i) : !1, C = this.isDateDisabled(v);
243
+ let g = !1, y = !1, P = !1;
244
+ if (n && o) {
245
+ const E = n <= o ? n : o, D = n <= o ? o : n;
246
+ g = d >= E && d <= D, y = N(d, E), P = N(d, D);
246
247
  }
247
- p.push({
248
+ m.push({
248
249
  date: v,
249
- day: u.getDate(),
250
- inMonth: d,
250
+ day: d.getDate(),
251
+ inMonth: l,
251
252
  isToday: f,
252
- isSelected: g,
253
+ isSelected: b,
253
254
  isDisabled: C,
254
- inRange: b,
255
+ inRange: g,
255
256
  isRangeStart: y,
256
257
  isRangeEnd: P
257
258
  });
258
259
  }
259
- return p;
260
+ return m;
260
261
  }
261
262
  #t() {
262
263
  const t = this.focusedYear.value, e = this.focusedMonth.value;
263
- return ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"].map((s, a) => ({
264
- month: a,
264
+ return ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"].map((s, n) => ({
265
+ month: n,
265
266
  name: s,
266
- isCurrent: a === e && t === (/* @__PURE__ */ new Date()).getFullYear(),
267
- isSelected: a === e
267
+ isCurrent: n === e && t === (/* @__PURE__ */ new Date()).getFullYear(),
268
+ isSelected: n === e
268
269
  }));
269
270
  }
270
271
  #e() {
271
272
  const t = this.focusedYear.value, e = Math.floor(t / 10) * 10, i = (/* @__PURE__ */ new Date()).getFullYear(), s = [];
272
- for (let a = e - 1; a <= e + 10; a++)
273
+ for (let n = e - 1; n <= e + 10; n++)
273
274
  s.push({
274
- year: a,
275
- inDecade: a >= e && a < e + 10,
276
- isCurrent: a === i,
277
- isSelected: a === t
275
+ year: n,
276
+ inDecade: n >= e && n < e + 10,
277
+ isCurrent: n === i,
278
+ isSelected: n === t
278
279
  });
279
280
  return s;
280
281
  }
@@ -305,7 +306,7 @@ class Ge {
305
306
  }
306
307
  }
307
308
  }
308
- class Ue extends T {
309
+ class Oe extends T {
309
310
  static attributes = {
310
311
  value: { type: "string", default: "" },
311
312
  min: { type: "string", default: "" },
@@ -314,7 +315,7 @@ class Ue extends T {
314
315
  range: { type: "boolean", default: !1 }
315
316
  };
316
317
  #n;
317
- #t = new Ge();
318
+ #t = new We();
318
319
  #e = S(!1);
319
320
  // WHY: Track focused cell index for keyboard navigation within the grid
320
321
  #a = S(0);
@@ -389,8 +390,8 @@ class Ue extends T {
389
390
  <div data-cal-weekdays></div>
390
391
  <div data-cal-grid role="grid"></div>
391
392
  `;
392
- for (const a of this.querySelectorAll("[data-cal-header] aui-button"))
393
- a.setAttribute("tabindex", "-1");
393
+ for (const n of this.querySelectorAll("[data-cal-header] aui-button"))
394
+ n.setAttribute("tabindex", "-1");
394
395
  const t = this.querySelector('aui-button[data-role="prev"]'), e = this.querySelector('aui-button[data-role="next"]'), i = this.querySelector('aui-button[data-role="title"]');
395
396
  t?.addEventListener("click", this.#m), e?.addEventListener("click", this.#p), i?.addEventListener("click", this.#r);
396
397
  const s = this.querySelector("[data-cal-grid]");
@@ -401,28 +402,28 @@ class Ue extends T {
401
402
  if (!(!e || !i || !s)) {
402
403
  if (e.textContent = this.#t.title.value, t === "day") {
403
404
  this.setAttribute("view", "day"), i.innerHTML = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"].map((o) => `<span data-cal-weekday>${o}</span>`).join("");
404
- const a = this.#t.days.value;
405
- s.innerHTML = a.map((o, r) => {
406
- let h = `data-date="${o.date}" data-index="${r}" tabindex="-1"`;
407
- return o.inMonth || (h += " data-outside"), o.isToday && (h += ' data-today aria-current="date"'), o.isSelected && (h += ' data-selected aria-selected="true"'), o.isDisabled && (h += " disabled"), o.inRange && (h += " data-in-range"), o.isRangeStart && (h += " data-range-start"), o.isRangeEnd && (h += " data-range-end"), `<div data-cal-day ${h}>${o.day}</div>`;
405
+ const n = this.#t.days.value;
406
+ s.innerHTML = n.map((o, r) => {
407
+ let c = `data-date="${o.date}" data-index="${r}" tabindex="-1"`;
408
+ return o.inMonth || (c += " data-outside"), o.isToday && (c += ' data-today aria-current="date"'), o.isSelected && (c += ' data-selected aria-selected="true"'), o.isDisabled && (c += " disabled"), o.inRange && (c += " data-in-range"), o.isRangeStart && (c += " data-range-start"), o.isRangeEnd && (c += " data-range-end"), `<div data-cal-day ${c}>${o.day}</div>`;
408
409
  }).join("");
409
410
  } else if (t === "month") {
410
411
  this.setAttribute("view", "month"), i.innerHTML = "";
411
- const a = this.#t.months.value;
412
- s.innerHTML = a.map((o) => {
412
+ const n = this.#t.months.value;
413
+ s.innerHTML = n.map((o) => {
413
414
  let r = `data-month="${o.month}" tabindex="-1"`;
414
415
  return o.isCurrent && (r += ' data-today aria-current="date"'), o.isSelected && (r += ' data-selected aria-selected="true"'), `<div data-cal-cell ${r}>${o.name}</div>`;
415
416
  }).join("");
416
417
  } else {
417
418
  this.setAttribute("view", "year"), i.innerHTML = "";
418
- const a = this.#t.years.value;
419
- s.innerHTML = a.map((o) => {
419
+ const n = this.#t.years.value;
420
+ s.innerHTML = n.map((o) => {
420
421
  let r = `data-year="${o.year}" tabindex="-1"`;
421
422
  return o.inDecade || (r += " data-outside"), o.isCurrent && (r += ' data-today aria-current="date"'), o.isSelected && (r += ' data-selected aria-selected="true"'), `<div data-cal-cell ${r}>${o.year}</div>`;
422
423
  }).join("");
423
424
  }
424
- for (const a of s.querySelectorAll("[data-cal-day]:not([disabled]), [data-cal-cell]"))
425
- a.setAttribute("tabindex", "-1");
425
+ for (const n of s.querySelectorAll("[data-cal-day]:not([disabled]), [data-cal-cell]"))
426
+ n.setAttribute("tabindex", "-1");
426
427
  }
427
428
  }
428
429
  #m = () => {
@@ -462,8 +463,8 @@ class Ue extends T {
462
463
  if (this.#e.value) return;
463
464
  const e = t.target.closest("[data-cal-day], [data-cal-cell]");
464
465
  if (!e || e.hasAttribute("disabled")) return;
465
- const i = e.dataset.date, s = e.dataset.month, a = e.dataset.year;
466
- i ? this.#c(i) : s !== void 0 ? this.#t.selectMonth(Number(s)) : a !== void 0 && this.#t.selectYear(Number(a));
466
+ const i = e.dataset.date, s = e.dataset.month, n = e.dataset.year;
467
+ i ? this.#c(i) : s !== void 0 ? this.#t.selectMonth(Number(s)) : n !== void 0 && this.#t.selectYear(Number(n));
467
468
  }
468
469
  #c(t) {
469
470
  this.range ? this.#s === "idle" ? ($(() => {
@@ -514,7 +515,7 @@ class Ue extends T {
514
515
  #E = (t) => {
515
516
  if (this.#e.value || this.#t.view.value !== "day") return;
516
517
  const i = this.#t.days.value;
517
- let s = this.#a.value, a = !0;
518
+ let s = this.#a.value, n = !0;
518
519
  switch (t.key) {
519
520
  case "ArrowRight":
520
521
  s += 1;
@@ -547,17 +548,17 @@ class Ue extends T {
547
548
  break;
548
549
  }
549
550
  default:
550
- a = !1;
551
+ n = !1;
551
552
  }
552
- a && (t.preventDefault(), s = Math.max(0, Math.min(41, s)), this.#a.value = s, s < 0 && this.#t.prevMonth(), s > 41 && this.#t.nextMonth());
553
+ n && (t.preventDefault(), s = Math.max(0, Math.min(41, s)), this.#a.value = s, s < 0 && this.#t.prevMonth(), s > 41 && this.#t.nextMonth());
553
554
  };
554
555
  }
555
- let He = 0;
556
- function H(m) {
557
- return `${m}-${Date.now().toString(36)}-${(++He).toString(36)}`;
556
+ let Xe = 0;
557
+ function H(p) {
558
+ return `${p}-${Date.now().toString(36)}-${(++Xe).toString(36)}`;
558
559
  }
559
- const Oe = 50, M = "http://www.w3.org/2000/svg";
560
- class We {
560
+ const _e = 50, L = "http://www.w3.org/2000/svg";
561
+ class Be {
561
562
  host;
562
563
  // ── Public mutable options ──
563
564
  selector;
@@ -586,7 +587,7 @@ class We {
586
587
  #o = !1;
587
588
  #d = null;
588
589
  constructor(t, e = {}) {
589
- if (this.host = t, this.selector = e.selector ?? "[data-noodle-port]", this.editable = e.editable ?? !1, this.color = e.color ?? "var(--aui-accent-500)", this.strokeWidth = e.strokeWidth ?? 2, this.tension = e.tension ?? 0.5, this.showPorts = e.showPorts ?? this.editable, this.portSize = e.portSize ?? 10, this.style = e.style ?? "bezier", this.animated = e.animated ?? !1, this.disabled = e.disabled ?? !1, e.connections)
590
+ if (this.host = t, this.selector = e.selector ?? "[data-noodle-port]", this.editable = e.editable ?? !1, this.color = e.color ?? "var(--aui-accent)", this.strokeWidth = e.strokeWidth ?? 2, this.tension = e.tension ?? 0.5, this.showPorts = e.showPorts ?? this.editable, this.portSize = e.portSize ?? 10, this.style = e.style ?? "bezier", this.animated = e.animated ?? !1, this.disabled = e.disabled ?? !1, e.connections)
590
591
  for (const i of e.connections)
591
592
  this.#e.set(i.id, {
592
593
  ...i,
@@ -604,17 +605,17 @@ class We {
604
605
  this.#n && (this.#n = !1, this.#F(), this.#T(), this.#y(), this.#v(), this.host.style.isolation = "", this.host.removeEventListener("aui:magnet-snap", this.#x), this.host.removeEventListener("aui:magnet-drop", this.#x), this.host.removeEventListener("aui:drag-move", this.#x), this.#r && (cancelAnimationFrame(this.#r), this.#r = 0), this.#h = !1);
605
606
  }
606
607
  destroy() {
607
- this.#M(), this.detach(), this.#e.clear();
608
+ this.#L(), this.detach(), this.#e.clear();
608
609
  }
609
610
  // ── Public API ──
610
611
  /** Add a connection. Returns the connection ID. */
611
612
  connect(t, e, i = "right", s = "left") {
612
- const a = H("noodle"), o = { id: a, from: t, to: e, fromPort: i, toPort: s };
613
- return this.#e.set(a, o), this.#f(), this.host.dispatchEvent(new CustomEvent("aui:noodle-connect", {
613
+ const n = H("noodle"), o = { id: n, from: t, to: e, fromPort: i, toPort: s };
614
+ return this.#e.set(n, o), this.#f(), this.host.dispatchEvent(new CustomEvent("aui:noodle-connect", {
614
615
  bubbles: !0,
615
616
  composed: !0,
616
- detail: { id: a, from: t, to: e, fromPort: i, toPort: s }
617
- })), a;
617
+ detail: { id: n, from: t, to: e, fromPort: i, toPort: s }
618
+ })), n;
618
619
  }
619
620
  /** Remove a connection by ID. */
620
621
  disconnect(t) {
@@ -658,8 +659,8 @@ class We {
658
659
  }
659
660
  // ── SVG overlay ──
660
661
  #b() {
661
- const t = document.createElementNS(M, "svg");
662
- t.setAttribute("data-noodle-svg", ""), t.style.cssText = "position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible;z-index:0;", this.#s = document.createElementNS(M, "g"), this.#s.setAttribute("data-noodle-hits", ""), t.appendChild(this.#s), this.#a = document.createElementNS(M, "g"), this.#a.setAttribute("data-noodle-paths", ""), t.appendChild(this.#a), this.host.appendChild(t), this.#t = t;
662
+ const t = document.createElementNS(L, "svg");
663
+ t.setAttribute("data-noodle-svg", ""), t.style.cssText = "position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible;z-index:0;", this.#s = document.createElementNS(L, "g"), this.#s.setAttribute("data-noodle-hits", ""), t.appendChild(this.#s), this.#a = document.createElementNS(L, "g"), this.#a.setAttribute("data-noodle-paths", ""), t.appendChild(this.#a), this.host.appendChild(t), this.#t = t;
663
664
  }
664
665
  #y() {
665
666
  this.#t?.remove(), this.#t = null, this.#a = null, this.#s = null;
@@ -676,36 +677,36 @@ class We {
676
677
  /** Convert client (screen) coordinates to the host's layout coordinate space,
677
678
  * accounting for CSS transforms (zoom/pan) on the host or its ancestors. */
678
679
  #A(t, e) {
679
- const i = this.host.getBoundingClientRect(), s = i.width / (this.host.clientWidth || 1), a = i.height / (this.host.clientHeight || 1);
680
+ const i = this.host.getBoundingClientRect(), s = i.width / (this.host.clientWidth || 1), n = i.height / (this.host.clientHeight || 1);
680
681
  return {
681
682
  x: (t - i.left) / s,
682
- y: (e - i.top) / a
683
+ y: (e - i.top) / n
683
684
  };
684
685
  }
685
686
  // ── Path computation ──
686
687
  #c(t, e) {
687
688
  const i = this.host.querySelector(`#${CSS.escape(t)}`);
688
689
  if (!i) return null;
689
- let s = 0, a = 0, o = i;
690
+ let s = 0, n = 0, o = i;
690
691
  for (; o && o !== this.host; ) {
691
- s += o.offsetLeft, a += o.offsetTop;
692
- const c = o.style.translate;
693
- if (c) {
694
- const p = c.match(/-?[\d.]+/g);
695
- p && (s += parseFloat(p[0]) || 0, a += parseFloat(p[1]) || 0);
692
+ s += o.offsetLeft, n += o.offsetTop;
693
+ const u = o.style.translate;
694
+ if (u) {
695
+ const m = u.match(/-?[\d.]+/g);
696
+ m && (s += parseFloat(m[0]) || 0, n += parseFloat(m[1]) || 0);
696
697
  }
697
698
  o = o.offsetParent;
698
699
  }
699
- const r = i.offsetWidth, h = i.offsetHeight;
700
+ const r = i.offsetWidth, c = i.offsetHeight;
700
701
  switch (e) {
701
702
  case "top":
702
- return { x: s + r / 2, y: a };
703
+ return { x: s + r / 2, y: n };
703
704
  case "right":
704
- return { x: s + r, y: a + h / 2 };
705
+ return { x: s + r, y: n + c / 2 };
705
706
  case "bottom":
706
- return { x: s + r / 2, y: a + h };
707
+ return { x: s + r / 2, y: n + c };
707
708
  case "left":
708
- return { x: s, y: a + h / 2 };
709
+ return { x: s, y: n + c / 2 };
709
710
  }
710
711
  }
711
712
  #g(t, e, i, s) {
@@ -732,8 +733,8 @@ class We {
732
733
  }
733
734
  case "bezier":
734
735
  default: {
735
- const s = Math.max(Math.abs(i.x - e.x), Math.abs(i.y - e.y)), a = Math.max(50, s * this.tension), [o, r] = this.#g(e.x, e.y, t.fromPort, a), [h, c] = this.#g(i.x, i.y, t.toPort, a);
736
- return `M ${e.x} ${e.y} C ${o} ${r}, ${h} ${c}, ${i.x} ${i.y}`;
736
+ const s = Math.max(Math.abs(i.x - e.x), Math.abs(i.y - e.y)), n = Math.max(50, s * this.tension), [o, r] = this.#g(e.x, e.y, t.fromPort, n), [c, u] = this.#g(i.x, i.y, t.toPort, n);
737
+ return `M ${e.x} ${e.y} C ${o} ${r}, ${c} ${u}, ${i.x} ${i.y}`;
737
738
  }
738
739
  }
739
740
  }
@@ -745,10 +746,10 @@ class We {
745
746
  const e = this.#k(t);
746
747
  if (!e) continue;
747
748
  if (this.editable) {
748
- const s = document.createElementNS(M, "path");
749
+ const s = document.createElementNS(L, "path");
749
750
  s.setAttribute("d", e), s.setAttribute("stroke", "transparent"), s.setAttribute("stroke-width", "14"), s.setAttribute("fill", "none"), s.style.pointerEvents = "stroke", s.style.cursor = "pointer", s.dataset.noodleId = t.id, s.addEventListener("pointerdown", this.#q), this.#s.appendChild(s);
750
751
  }
751
- const i = document.createElementNS(M, "path");
752
+ const i = document.createElementNS(L, "path");
752
753
  i.setAttribute("d", e), i.setAttribute("fill", "none"), i.setAttribute("stroke-linecap", "round"), this.disabled ? (i.setAttribute("stroke", "var(--aui-ink-muted)"), i.setAttribute("stroke-width", String(this.strokeWidth)), i.setAttribute("stroke-dasharray", "6 4"), i.style.opacity = "0.6") : (i.setAttribute("stroke", t.color ?? this.color), i.setAttribute("stroke-width", String(this.strokeWidth)), this.animated && (i.setAttribute("stroke-dasharray", "8 4"), i.style.animation = "noodle-flow 0.6s linear infinite")), this.#a.appendChild(i);
753
754
  }
754
755
  this.#l || queueMicrotask(() => {
@@ -774,9 +775,9 @@ class We {
774
775
  for (const e of t) {
775
776
  const i = (e.getAttribute("data-noodle-port") ?? "").split(/\s+/).filter(Boolean), s = e.id;
776
777
  if (s)
777
- for (const a of i) {
778
+ for (const n of i) {
778
779
  const o = document.createElement("div");
779
- o.setAttribute("data-noodle-port-indicator", ""), o.setAttribute("data-noodle-side", a), o.setAttribute("data-noodle-target", s), o.style.cssText = `position:absolute;width:${this.portSize}px;height:${this.portSize}px;border-radius:50%;background:${this.color};border:2px solid white;pointer-events:auto;cursor:crosshair;z-index:5;touch-action:none;transform:translate(-50%,-50%);transition:transform 150ms ease,box-shadow 150ms ease;box-shadow:0 1px 3px rgba(0,0,0,0.2);`, o.addEventListener("pointerdown", this.#I), this.host.appendChild(o), this.#u.push(o);
780
+ o.setAttribute("data-noodle-port-indicator", ""), o.setAttribute("data-noodle-side", n), o.setAttribute("data-noodle-target", s), o.style.cssText = `position:absolute;width:${this.portSize}px;height:${this.portSize}px;border-radius:50%;background:${this.color};border:2px solid white;pointer-events:auto;cursor:crosshair;z-index:5;touch-action:none;transform:translate(-50%,-50%);transition:transform 150ms ease,box-shadow 150ms ease;box-shadow:0 1px 3px rgba(0,0,0,0.2);`, o.addEventListener("pointerdown", this.#I), this.host.appendChild(o), this.#u.push(o);
780
781
  }
781
782
  }
782
783
  this.#D(), this.#l || queueMicrotask(() => {
@@ -800,10 +801,10 @@ class We {
800
801
  const e = t.target.closest("[data-noodle-port-indicator]");
801
802
  if (!e) return;
802
803
  t.preventDefault(), t.stopPropagation();
803
- const i = e.getAttribute("data-noodle-target"), s = e.getAttribute("data-noodle-side"), a = this.host.querySelector(`#${CSS.escape(i)}`);
804
- if (a) {
804
+ const i = e.getAttribute("data-noodle-target"), s = e.getAttribute("data-noodle-side"), n = this.host.querySelector(`#${CSS.escape(i)}`);
805
+ if (n) {
805
806
  this.#l = {
806
- fromElement: a,
807
+ fromElement: n,
807
808
  fromPort: s,
808
809
  fromId: i,
809
810
  pointerId: t.pointerId,
@@ -811,14 +812,14 @@ class We {
811
812
  }, e.setAttribute("data-noodle-dragging", "");
812
813
  for (const o of this.#u) {
813
814
  if (o === e) continue;
814
- const r = o.getAttribute("data-noodle-target"), h = o.getAttribute("data-noodle-side");
815
- r === i && h === s || o.setAttribute("data-noodle-droppable", "");
815
+ const r = o.getAttribute("data-noodle-target"), c = o.getAttribute("data-noodle-side");
816
+ r === i && c === s || o.setAttribute("data-noodle-droppable", "");
816
817
  }
817
- this.#o = !0, this.#i = document.createElementNS(M, "path"), this.#i.setAttribute("stroke", "var(--aui-ink-muted)"), this.#i.setAttribute("stroke-width", String(this.strokeWidth)), this.#i.setAttribute("fill", "none"), this.#i.setAttribute("stroke-dasharray", "6 4"), this.#i.setAttribute("stroke-linecap", "round"), this.#i.style.opacity = "0.7", this.#a?.appendChild(this.#i), this.host.dispatchEvent(new CustomEvent("aui:noodle-drag", {
818
+ this.#o = !0, this.#i = document.createElementNS(L, "path"), this.#i.setAttribute("stroke", "var(--aui-ink-muted)"), this.#i.setAttribute("stroke-width", String(this.strokeWidth)), this.#i.setAttribute("fill", "none"), this.#i.setAttribute("stroke-dasharray", "6 4"), this.#i.setAttribute("stroke-linecap", "round"), this.#i.style.opacity = "0.7", this.#a?.appendChild(this.#i), this.host.dispatchEvent(new CustomEvent("aui:noodle-drag", {
818
819
  bubbles: !0,
819
820
  composed: !0,
820
821
  detail: { from: i, fromPort: s, x: t.clientX, y: t.clientY }
821
- })), document.addEventListener("pointermove", this.#P), document.addEventListener("pointerup", this.#$), document.addEventListener("pointercancel", this.#L);
822
+ })), document.addEventListener("pointermove", this.#P), document.addEventListener("pointerup", this.#$), document.addEventListener("pointercancel", this.#M);
822
823
  }
823
824
  };
824
825
  #P = (t) => {
@@ -826,35 +827,35 @@ class We {
826
827
  if (!e || !this.#i) return;
827
828
  const i = this.#c(e.fromId, e.fromPort);
828
829
  if (!i) return;
829
- const { x: s, y: a } = this.#A(t.clientX, t.clientY), o = Math.max(Math.abs(s - i.x), Math.abs(a - i.y)), r = Math.max(50, o * this.tension), [h, c] = this.#g(i.x, i.y, e.fromPort, r), p = `M ${i.x} ${i.y} C ${h} ${c}, ${s} ${a}, ${s} ${a}`;
830
- this.#i.setAttribute("d", p), this.#Y(t.clientX, t.clientY);
830
+ const { x: s, y: n } = this.#A(t.clientX, t.clientY), o = Math.max(Math.abs(s - i.x), Math.abs(n - i.y)), r = Math.max(50, o * this.tension), [c, u] = this.#g(i.x, i.y, e.fromPort, r), m = `M ${i.x} ${i.y} C ${c} ${u}, ${s} ${n}, ${s} ${n}`;
831
+ this.#i.setAttribute("d", m), this.#Y(t.clientX, t.clientY);
831
832
  };
832
833
  #$ = (t) => {
833
834
  const e = this.#l;
834
835
  if (!e) return;
835
836
  const i = this.#N(t.clientX, t.clientY);
836
837
  if (i) {
837
- const s = i.getAttribute("data-noodle-target"), a = i.getAttribute("data-noodle-side");
838
- (s !== e.fromId || a !== e.fromPort) && this.connect(e.fromId, s, e.fromPort, a);
838
+ const s = i.getAttribute("data-noodle-target"), n = i.getAttribute("data-noodle-side");
839
+ (s !== e.fromId || n !== e.fromPort) && this.connect(e.fromId, s, e.fromPort, n);
839
840
  }
840
- this.#M();
841
+ this.#L();
841
842
  };
842
- #L = () => {
843
- this.#M();
843
+ #M = () => {
844
+ this.#L();
844
845
  };
845
- #M() {
846
+ #L() {
846
847
  for (const t of this.#u)
847
848
  t.removeAttribute("data-noodle-dragging"), t.removeAttribute("data-noodle-droppable"), t.removeAttribute("data-noodle-drop-ready");
848
- this.#i?.remove(), this.#i = null, this.#l = null, document.removeEventListener("pointermove", this.#P), document.removeEventListener("pointerup", this.#$), document.removeEventListener("pointercancel", this.#L), this.#o = !1;
849
+ this.#i?.remove(), this.#i = null, this.#l = null, document.removeEventListener("pointermove", this.#P), document.removeEventListener("pointerup", this.#$), document.removeEventListener("pointercancel", this.#M), this.#o = !1;
849
850
  }
850
851
  // ── Proximity helpers ──
851
852
  /** Find the nearest droppable port within DROP_SNAP_RADIUS of a screen point. */
852
853
  #N(t, e) {
853
- let i = null, s = Oe;
854
- for (const a of this.#u) {
855
- if (!a.hasAttribute("data-noodle-droppable")) continue;
856
- const o = a.getBoundingClientRect(), r = o.left + o.width / 2, h = o.top + o.height / 2, c = Math.hypot(t - r, e - h);
857
- c < s && (s = c, i = a);
854
+ let i = null, s = _e;
855
+ for (const n of this.#u) {
856
+ if (!n.hasAttribute("data-noodle-droppable")) continue;
857
+ const o = n.getBoundingClientRect(), r = o.left + o.width / 2, c = o.top + o.height / 2, u = Math.hypot(t - r, e - c);
858
+ u < s && (s = u, i = n);
858
859
  }
859
860
  return i;
860
861
  }
@@ -865,10 +866,10 @@ class We {
865
866
  s === i ? s.setAttribute("data-noodle-drop-ready", "") : s.removeAttribute("data-noodle-drop-ready");
866
867
  if (i && this.#i && this.#l) {
867
868
  this.#i.setAttribute("stroke", this.color), this.#i.style.opacity = "1", this.#i.removeAttribute("stroke-dasharray");
868
- const s = i.getAttribute("data-noodle-target"), a = i.getAttribute("data-noodle-side"), o = this.#c(s, a), r = this.#c(this.#l.fromId, this.#l.fromPort);
869
+ const s = i.getAttribute("data-noodle-target"), n = i.getAttribute("data-noodle-side"), o = this.#c(s, n), r = this.#c(this.#l.fromId, this.#l.fromPort);
869
870
  if (r && o) {
870
- const h = Math.max(Math.abs(o.x - r.x), Math.abs(o.y - r.y)), c = Math.max(50, h * this.tension), [p, l] = this.#g(r.x, r.y, this.#l.fromPort, c), [u, v] = this.#g(o.x, o.y, a, c);
871
- this.#i.setAttribute("d", `M ${r.x} ${r.y} C ${p} ${l}, ${u} ${v}, ${o.x} ${o.y}`);
871
+ const c = Math.max(Math.abs(o.x - r.x), Math.abs(o.y - r.y)), u = Math.max(50, c * this.tension), [m, h] = this.#g(r.x, r.y, this.#l.fromPort, u), [d, v] = this.#g(o.x, o.y, n, u);
872
+ this.#i.setAttribute("d", `M ${r.x} ${r.y} C ${m} ${h}, ${d} ${v}, ${o.x} ${o.y}`);
872
873
  }
873
874
  } else this.#i && (this.#i.setAttribute("stroke", "var(--aui-ink-muted)"), this.#i.style.opacity = "0.7", this.#i.setAttribute("stroke-dasharray", "6 4"));
874
875
  }
@@ -880,49 +881,49 @@ class We {
880
881
  const s = this.#e.get(i);
881
882
  if (!s) return;
882
883
  t.preventDefault(), t.stopPropagation(), this.#o = !0;
883
- const a = this.#c(s.from, s.fromPort), o = this.#c(s.to, s.toPort);
884
- if (!a || !o) {
884
+ const n = this.#c(s.from, s.fromPort), o = this.#c(s.to, s.toPort);
885
+ if (!n || !o) {
885
886
  this.#o = !1;
886
887
  return;
887
888
  }
888
- const { x: r, y: h } = this.#A(t.clientX, t.clientY), c = Math.hypot(r - a.x, h - a.y), p = Math.hypot(r - o.x, h - o.y), l = c < p ? s.to : s.from, u = c < p ? s.toPort : s.fromPort;
889
+ const { x: r, y: c } = this.#A(t.clientX, t.clientY), u = Math.hypot(r - n.x, c - n.y), m = Math.hypot(r - o.x, c - o.y), h = u < m ? s.to : s.from, d = u < m ? s.toPort : s.fromPort;
889
890
  this.disconnect(i);
890
891
  const v = this.#u.find(
891
- (b) => b.getAttribute("data-noodle-target") === l && b.getAttribute("data-noodle-side") === u
892
+ (g) => g.getAttribute("data-noodle-target") === h && g.getAttribute("data-noodle-side") === d
892
893
  );
893
894
  if (!v) {
894
895
  this.#o = !1;
895
896
  return;
896
897
  }
897
- const d = this.host.querySelector(`#${CSS.escape(l)}`);
898
- if (!d) {
898
+ const l = this.host.querySelector(`#${CSS.escape(h)}`);
899
+ if (!l) {
899
900
  this.#o = !1;
900
901
  return;
901
902
  }
902
903
  this.#l = {
903
- fromElement: d,
904
- fromPort: u,
905
- fromId: l,
904
+ fromElement: l,
905
+ fromPort: d,
906
+ fromId: h,
906
907
  pointerId: t.pointerId,
907
908
  sourceDot: v,
908
909
  reconnectId: i
909
910
  }, v.setAttribute("data-noodle-dragging", "");
910
- for (const b of this.#u) {
911
- if (b === v) continue;
912
- const y = b.getAttribute("data-noodle-target"), P = b.getAttribute("data-noodle-side");
913
- y === l && P === u || b.setAttribute("data-noodle-droppable", "");
911
+ for (const g of this.#u) {
912
+ if (g === v) continue;
913
+ const y = g.getAttribute("data-noodle-target"), P = g.getAttribute("data-noodle-side");
914
+ y === h && P === d || g.setAttribute("data-noodle-droppable", "");
914
915
  }
915
- this.#i = document.createElementNS(M, "path"), this.#i.setAttribute("stroke", "var(--aui-ink-muted)"), this.#i.setAttribute("stroke-width", String(this.strokeWidth)), this.#i.setAttribute("fill", "none"), this.#i.setAttribute("stroke-dasharray", "6 4"), this.#i.setAttribute("stroke-linecap", "round"), this.#i.style.opacity = "0.7";
916
- const f = this.#c(l, u), { x: g, y: C } = this.#A(t.clientX, t.clientY);
916
+ this.#i = document.createElementNS(L, "path"), this.#i.setAttribute("stroke", "var(--aui-ink-muted)"), this.#i.setAttribute("stroke-width", String(this.strokeWidth)), this.#i.setAttribute("fill", "none"), this.#i.setAttribute("stroke-dasharray", "6 4"), this.#i.setAttribute("stroke-linecap", "round"), this.#i.style.opacity = "0.7";
917
+ const f = this.#c(h, d), { x: b, y: C } = this.#A(t.clientX, t.clientY);
917
918
  if (f) {
918
- const b = Math.max(Math.abs(g - f.x), Math.abs(C - f.y)), y = Math.max(50, b * this.tension), [P, E] = this.#g(f.x, f.y, u, y);
919
- this.#i.setAttribute("d", `M ${f.x} ${f.y} C ${P} ${E}, ${g} ${C}, ${g} ${C}`);
919
+ const g = Math.max(Math.abs(b - f.x), Math.abs(C - f.y)), y = Math.max(50, g * this.tension), [P, E] = this.#g(f.x, f.y, d, y);
920
+ this.#i.setAttribute("d", `M ${f.x} ${f.y} C ${P} ${E}, ${b} ${C}, ${b} ${C}`);
920
921
  }
921
922
  this.#a?.appendChild(this.#i), this.host.dispatchEvent(new CustomEvent("aui:noodle-drag", {
922
923
  bubbles: !0,
923
924
  composed: !0,
924
- detail: { from: l, fromPort: u, x: t.clientX, y: t.clientY, reconnect: !0 }
925
- })), document.addEventListener("pointermove", this.#P), document.addEventListener("pointerup", this.#$), document.addEventListener("pointercancel", this.#L);
925
+ detail: { from: h, fromPort: d, x: t.clientX, y: t.clientY, reconnect: !0 }
926
+ })), document.addEventListener("pointermove", this.#P), document.addEventListener("pointerup", this.#$), document.addEventListener("pointercancel", this.#M);
926
927
  };
927
928
  // ── Movement tracking ──
928
929
  #x = () => {
@@ -943,7 +944,7 @@ class We {
943
944
  this.#m?.disconnect(), this.#m = null, this.#p?.disconnect(), this.#p = null;
944
945
  }
945
946
  }
946
- class Xe extends T {
947
+ class Ke extends T {
947
948
  static attributes = {
948
949
  editable: { type: "boolean", default: !1 },
949
950
  color: { type: "string", default: "" },
@@ -983,7 +984,7 @@ class Xe extends T {
983
984
  }
984
985
  // ── Lifecycle ──
985
986
  activate() {
986
- this.#n = new We(this, this.#t());
987
+ this.#n = new Be(this, this.#t());
987
988
  }
988
989
  dispose() {
989
990
  this.#n?.destroy(), this.#n = null;
@@ -1008,9 +1009,9 @@ class Xe extends T {
1008
1009
  isNaN(r) || (t.tension = r);
1009
1010
  }
1010
1011
  this.hasAttribute("show-ports") && (t.showPorts = this.getAttribute("show-ports") !== "false");
1011
- const a = this.getAttribute("port-size");
1012
- if (a) {
1013
- const r = Number(a);
1012
+ const n = this.getAttribute("port-size");
1013
+ if (n) {
1014
+ const r = Number(n);
1014
1015
  isNaN(r) || (t.portSize = r);
1015
1016
  }
1016
1017
  const o = this.getAttribute("curve");
@@ -1023,7 +1024,7 @@ class Xe extends T {
1023
1024
  i.editable = e !== null, i.update();
1024
1025
  break;
1025
1026
  case "color":
1026
- i.color = e ?? "var(--aui-accent-500)", i.update();
1027
+ i.color = e ?? "var(--aui-accent)", i.update();
1027
1028
  break;
1028
1029
  case "stroke-width": {
1029
1030
  const s = Number(e);
@@ -1055,11 +1056,11 @@ class Xe extends T {
1055
1056
  }
1056
1057
  }
1057
1058
  }
1058
- const Be = '<svg width="20" height="20" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M92.2671 346.112C88.1711 262.144 202.347 250.88 288.875 237.568C288.363 202.752 290.923 133.12 221.291 133.12C206.955 133.12 197.227 134.144 186.987 137.216L189.547 147.968C228.459 148.992 238.187 173.056 237.163 193.024C235.115 229.888 196.715 242.688 169.579 242.688C141.419 242.688 104.555 227.328 106.091 186.88C107.627 143.872 163.435 112.64 250.987 112.64C348.779 112.64 403.563 139.776 403.563 244.736V351.744C403.563 369.152 407.659 375.296 417.387 375.296C422.507 375.296 427.627 369.664 431.723 361.984L444.523 369.152C423.019 401.408 391.275 415.744 362.603 415.744C302.699 415.744 279.147 377.856 308.331 313.856L296.043 309.76C277.611 386.048 232.555 415.744 180.331 415.744C135.787 415.744 94.3151 391.68 92.2671 346.112ZM202.859 327.168C208.491 348.672 227.435 357.888 245.355 351.232C267.883 343.04 285.291 311.808 288.363 265.216L288.875 257.536C232.555 267.776 191.083 283.136 202.859 327.168Z" fill="currentColor"/></svg>';
1059
- function k(m) {
1060
- return m.split("-").map((t) => t[0].toUpperCase() + t.slice(1)).join(" ");
1059
+ const je = '<svg width="20" height="20" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M92.2671 346.112C88.1711 262.144 202.347 250.88 288.875 237.568C288.363 202.752 290.923 133.12 221.291 133.12C206.955 133.12 197.227 134.144 186.987 137.216L189.547 147.968C228.459 148.992 238.187 173.056 237.163 193.024C235.115 229.888 196.715 242.688 169.579 242.688C141.419 242.688 104.555 227.328 106.091 186.88C107.627 143.872 163.435 112.64 250.987 112.64C348.779 112.64 403.563 139.776 403.563 244.736V351.744C403.563 369.152 407.659 375.296 417.387 375.296C422.507 375.296 427.627 369.664 431.723 361.984L444.523 369.152C423.019 401.408 391.275 415.744 362.603 415.744C302.699 415.744 279.147 377.856 308.331 313.856L296.043 309.76C277.611 386.048 232.555 415.744 180.331 415.744C135.787 415.744 94.3151 391.68 92.2671 346.112ZM202.859 327.168C208.491 348.672 227.435 357.888 245.355 351.232C267.883 343.04 285.291 311.808 288.363 265.216L288.875 257.536C232.555 267.776 191.083 283.136 202.859 327.168Z" fill="currentColor"/></svg>';
1060
+ function k(p) {
1061
+ return p.split("-").map((t) => t[0].toUpperCase() + t.slice(1)).join(" ");
1061
1062
  }
1062
- class Ke extends T {
1063
+ class Je extends T {
1063
1064
  static attributes = {
1064
1065
  src: { type: "string", default: "./preview.json" }
1065
1066
  };
@@ -1083,61 +1084,61 @@ class Ke extends T {
1083
1084
  this.textContent = "Failed to load preview.json";
1084
1085
  return;
1085
1086
  }
1086
- const { section: e, param: i, items: s, links: a } = t, r = new URL(this.src, window.location.href).href.replace(/preview\.json$/, ""), c = new URLSearchParams(location.search).get(i), p = document.createElement("div");
1087
- p.setAttribute("data-role", "navbar");
1088
- const l = document.createElement("aui-select");
1089
- l.setAttribute("mode", "bar"), l.setAttribute("width", "full");
1090
- const u = document.createElement("aui-option");
1091
- u.setAttribute("value", ""), u.setAttribute("overflow-pin", ""), u.setAttribute("data-preview-logo", ""), u.dataset.href = window.location.pathname, u.innerHTML = `${Be} AgentUI`, l.appendChild(u);
1092
- const v = "aui-preview-scheme", d = localStorage.getItem(v);
1093
- d && (document.documentElement.dataset.theme = d, document.documentElement.style.colorScheme = d);
1087
+ const { section: e, param: i, items: s, links: n } = t, r = new URL(this.src, window.location.href).href.replace(/preview\.json$/, ""), u = new URLSearchParams(location.search).get(i), m = document.createElement("div");
1088
+ m.setAttribute("data-role", "navbar");
1089
+ const h = document.createElement("aui-select");
1090
+ h.setAttribute("mode", "bar"), h.setAttribute("width", "full");
1091
+ const d = document.createElement("aui-option");
1092
+ d.setAttribute("value", ""), d.setAttribute("overflow-pin", ""), d.setAttribute("data-preview-logo", ""), d.dataset.href = window.location.pathname, d.innerHTML = `${je} AgentUI`, h.appendChild(d);
1093
+ const v = "aui-preview-scheme", l = localStorage.getItem(v);
1094
+ l && (document.documentElement.dataset.theme = l, document.documentElement.style.colorScheme = l);
1094
1095
  const f = document.createElement("aui-button");
1095
1096
  f.setAttribute("ghost", ""), f.setAttribute("size", "sm"), f.setAttribute("hide-label", ""), f.setAttribute("label", "Toggle color scheme");
1096
- const g = document.createElement("aui-icon"), C = document.documentElement.dataset.theme === "dark";
1097
- g.setAttribute("name", C ? "sun" : "moon"), f.appendChild(g), l.appendChild(f), f.addEventListener("click", () => {
1097
+ const b = document.createElement("aui-icon"), C = document.documentElement.dataset.theme === "dark";
1098
+ b.setAttribute("name", C ? "sun" : "moon"), f.appendChild(b), h.appendChild(f), f.addEventListener("click", () => {
1098
1099
  const A = document.documentElement, x = A.dataset.theme === "dark", w = x ? "light" : "dark";
1099
- A.dataset.theme = w, A.style.colorScheme = w, localStorage.setItem(v, w), g.setAttribute("name", x ? "moon" : "sun");
1100
+ A.dataset.theme = w, A.style.colorScheme = w, localStorage.setItem(v, w), b.setAttribute("name", x ? "moon" : "sun");
1100
1101
  });
1101
- const b = document.createElement("aui-select");
1102
- if (b.setAttribute("placeholder", k(e)), b.setAttribute("outline", ""), b.setAttribute("data-role", "page-select"), a.length) {
1102
+ const g = document.createElement("aui-select");
1103
+ if (g.setAttribute("placeholder", k(e)), g.setAttribute("outline", ""), g.setAttribute("data-role", "page-select"), n.length) {
1103
1104
  const A = document.createElement("aui-optgroup");
1104
1105
  A.setAttribute("label", "Sections");
1105
- for (const x of a) {
1106
+ for (const x of n) {
1106
1107
  const w = document.createElement("aui-option");
1107
1108
  w.setAttribute("value", `go-${x.label.toLowerCase()}`), w.dataset.href = x.href, w.textContent = x.label, A.appendChild(w);
1108
1109
  }
1109
- b.appendChild(A);
1110
+ g.appendChild(A);
1110
1111
  }
1111
1112
  let y = null, P = "";
1112
1113
  for (const A of s) {
1113
1114
  const x = A.group || k(e);
1114
- x !== P && (y = document.createElement("aui-optgroup"), y.setAttribute("label", x), b.appendChild(y), P = x);
1115
+ x !== P && (y = document.createElement("aui-optgroup"), y.setAttribute("label", x), g.appendChild(y), P = x);
1115
1116
  const w = document.createElement("aui-option");
1116
- w.setAttribute("value", A.slug), A.file && (w.dataset.file = A.file), A.slug === c && w.setAttribute("selected", ""), w.textContent = A.name || k(A.slug), y.appendChild(w);
1117
+ w.setAttribute("value", A.slug), A.file && (w.dataset.file = A.file), A.slug === u && w.setAttribute("selected", ""), w.textContent = A.name || k(A.slug), y.appendChild(w);
1117
1118
  }
1118
- c && b.setAttribute("value", c), l.appendChild(b), p.appendChild(l), this.appendChild(p);
1119
+ u && g.setAttribute("value", u), h.appendChild(g), m.appendChild(h), this.appendChild(m);
1119
1120
  const E = document.createElement("aui-editor");
1120
1121
  E.setAttribute("data-role", "canvas"), E.setAttribute("background", "dots");
1121
1122
  const D = document.createElement("aui-editor-layer");
1122
1123
  D.setAttribute("name", "content");
1123
1124
  const R = document.createElement("div");
1124
- if (R.setAttribute("data-role", "content"), D.appendChild(R), E.appendChild(D), this.appendChild(E), this.#n = E, this.#t = R, l.addEventListener("click", (A) => {
1125
+ if (R.setAttribute("data-role", "content"), D.appendChild(R), E.appendChild(D), this.appendChild(E), this.#n = E, this.#t = R, h.addEventListener("click", (A) => {
1125
1126
  const w = A.target.closest("aui-option")?.dataset?.href;
1126
1127
  w && (window.location.href = w);
1127
- }), b.addEventListener("change", (A) => {
1128
- const x = A.target.value, G = b.querySelector(`aui-option[value="${x}"]`)?.dataset?.href;
1129
- if (G) {
1130
- window.location.href = G;
1128
+ }), g.addEventListener("change", (A) => {
1129
+ const x = A.target.value, z = g.querySelector(`aui-option[value="${x}"]`)?.dataset?.href;
1130
+ if (z) {
1131
+ window.location.href = z;
1131
1132
  return;
1132
1133
  }
1133
1134
  const U = new URL(window.location.href);
1134
1135
  U.searchParams.set(i, x), window.location.href = U.toString();
1135
- }), c) {
1136
- const x = s.find((w) => w.slug === c)?.file || `${c}/${c}.html`;
1137
- document.title = `${k(c)} — AgentUI ${k(e)}`, await this.#h(x, r);
1136
+ }), u) {
1137
+ const x = s.find((w) => w.slug === u)?.file || `${u}/${u}.html`;
1138
+ document.title = `${k(u)} — AgentUI ${k(e)}`, await this.#h(x, r);
1138
1139
  } else
1139
1140
  document.title = `AgentUI — ${k(e)}`, await this.#o(s, r);
1140
- this.#e = t, this.#a = c, this.#l(t, i), document.addEventListener("keydown", this.#p), requestAnimationFrame(() => this.#d());
1141
+ this.#e = t, this.#a = u, this.#l(t, i), document.addEventListener("keydown", this.#p), requestAnimationFrame(() => this.#d());
1141
1142
  }
1142
1143
  // ── Command palette ──
1143
1144
  #l(t, e) {
@@ -1145,36 +1146,36 @@ class Ke extends T {
1145
1146
  i.setAttribute("size", "sm");
1146
1147
  const s = document.createElement("aui-command");
1147
1148
  s.setAttribute("max-width", "full");
1148
- const a = document.createElement("aui-command-input");
1149
- a.setAttribute("placeholder", `Go to ${k(t.section)}…`), s.appendChild(a);
1149
+ const n = document.createElement("aui-command-input");
1150
+ n.setAttribute("placeholder", `Go to ${k(t.section)}…`), s.appendChild(n);
1150
1151
  const o = document.createElement("aui-command-list");
1151
1152
  if (t.links.length) {
1152
- const p = document.createElement("aui-command-group");
1153
- p.setAttribute("label", "Sections");
1154
- for (const l of t.links) {
1155
- const u = document.createElement("aui-command-item");
1156
- u.setAttribute("value", `section:${l.label}`), u.dataset.href = l.href, u.textContent = l.label, p.appendChild(u);
1153
+ const m = document.createElement("aui-command-group");
1154
+ m.setAttribute("label", "Sections");
1155
+ for (const h of t.links) {
1156
+ const d = document.createElement("aui-command-item");
1157
+ d.setAttribute("value", `section:${h.label}`), d.dataset.href = h.href, d.textContent = h.label, m.appendChild(d);
1157
1158
  }
1158
- o.appendChild(p);
1159
+ o.appendChild(m);
1159
1160
  }
1160
- let r = null, h = "";
1161
- for (const p of t.items) {
1162
- const l = p.group || k(t.section);
1163
- l !== h && (r = document.createElement("aui-command-group"), r.setAttribute("label", l), o.appendChild(r), h = l);
1164
- const u = document.createElement("aui-command-item");
1165
- u.setAttribute("value", p.slug), p.summary && u.setAttribute("keywords", p.summary), u.textContent = p.name || k(p.slug), r.appendChild(u);
1161
+ let r = null, c = "";
1162
+ for (const m of t.items) {
1163
+ const h = m.group || k(t.section);
1164
+ h !== c && (r = document.createElement("aui-command-group"), r.setAttribute("label", h), o.appendChild(r), c = h);
1165
+ const d = document.createElement("aui-command-item");
1166
+ d.setAttribute("value", m.slug), m.summary && d.setAttribute("keywords", m.summary), d.textContent = m.name || k(m.slug), r.appendChild(d);
1166
1167
  }
1167
1168
  s.appendChild(o);
1168
- const c = document.createElement("aui-command-empty");
1169
- c.textContent = "No results.", s.appendChild(c), s.addEventListener("select", (p) => {
1170
- const { value: l } = p.detail, v = s.querySelector(`aui-command-item[value="${CSS.escape(l)}"]`)?.dataset?.href;
1169
+ const u = document.createElement("aui-command-empty");
1170
+ u.textContent = "No results.", s.appendChild(u), s.addEventListener("select", (m) => {
1171
+ const { value: h } = m.detail, v = s.querySelector(`aui-command-item[value="${CSS.escape(h)}"]`)?.dataset?.href;
1171
1172
  if (v) {
1172
1173
  window.location.href = v;
1173
1174
  return;
1174
1175
  }
1175
- if (l.startsWith("section:")) return;
1176
- const d = new URL(window.location.href);
1177
- d.searchParams.set(e, l), window.location.href = d.toString();
1176
+ if (h.startsWith("section:")) return;
1177
+ const l = new URL(window.location.href);
1178
+ l.searchParams.set(e, h), window.location.href = l.toString();
1178
1179
  }), s.addEventListener("dismiss", () => this.#m()), i.addEventListener("close", () => {
1179
1180
  this.#s?.removeAttribute("open");
1180
1181
  }), i.appendChild(s), this.appendChild(i), this.#s = i;
@@ -1206,34 +1207,42 @@ class Ke extends T {
1206
1207
  if (!this.#e) return;
1207
1208
  const { items: e, param: i } = this.#e;
1208
1209
  if (!e.length) return;
1209
- let a = (this.#a ? e.findIndex((h) => h.slug === this.#a) : -1) + t;
1210
- a >= e.length && (a = 0), a < 0 && (a = e.length - 1);
1211
- const o = e[a];
1210
+ let n = (this.#a ? e.findIndex((c) => c.slug === this.#a) : -1) + t;
1211
+ n >= e.length && (n = 0), n < 0 && (n = e.length - 1);
1212
+ const o = e[n];
1212
1213
  if (!o) return;
1213
1214
  const r = new URL(window.location.href);
1214
1215
  r.searchParams.set(i, o.slug), window.location.href = r.toString();
1215
1216
  }
1216
1217
  async #h(t, e) {
1217
- const i = t.split("/")[0], s = `${e}${t}`, a = `${e}${i}/${i}.css`, o = `${e}${i}/${i}.ts`;
1218
+ const i = `${e}${t}`, s = t.replace(/\.html$/, ""), n = `${e}${s}.css`, o = `${e}${s}.ts`;
1218
1219
  try {
1219
- const d = await fetch(s);
1220
- d.ok && (this.#t.innerHTML = await d.text());
1220
+ const l = await fetch(i);
1221
+ l.ok && (this.#t.innerHTML = await l.text());
1221
1222
  } catch {
1222
1223
  }
1223
- await new Promise((d) => requestAnimationFrame(() => requestAnimationFrame(d))), await new Promise((d) => requestAnimationFrame(() => requestAnimationFrame(d)));
1224
+ await new Promise((l) => requestAnimationFrame(() => requestAnimationFrame(l))), await new Promise((l) => requestAnimationFrame(() => requestAnimationFrame(l)));
1224
1225
  const r = Array.from(this.#t.children).filter(
1225
- (d) => d.nodeType === 1 && d.tagName !== "SCRIPT"
1226
- ), h = 96, c = 200, p = r.map((d) => ({
1227
- el: d,
1228
- height: d.offsetHeight,
1229
- width: d.offsetWidth
1226
+ (l) => l.nodeType === 1 && l.tagName !== "SCRIPT"
1227
+ ), c = 96, u = 200, m = r.map((l) => ({
1228
+ el: l,
1229
+ height: l.offsetHeight,
1230
+ width: l.offsetWidth
1230
1231
  }));
1231
- let l = c, u = 0;
1232
- for (const { el: d, height: f, width: g } of p)
1233
- d.style.position = "absolute", d.style.left = "0px", d.style.top = `${l}px`, d.tagName === "AUI-GRAPH-UI" || d.tagName === "AUI-EDITOR" || (z(d, "drag", { config: { mode: "free", modifier: "alt" } }), z(d, "resize", { config: { modifier: "alt" } })), g > u && (u = g), l += f + h;
1234
- this.#t.style.width = `${u}px`, this.#t.style.height = `${l}px`;
1235
- const v = document.createElement("link");
1236
- v.rel = "stylesheet", v.href = a, document.head.appendChild(v);
1232
+ let h = u, d = 0;
1233
+ const v = [];
1234
+ for (const { el: l, height: f, width: b } of m)
1235
+ v.push({ el: l, y: h, width: b }), b > d && (d = b), h += f + c;
1236
+ for (const { el: l, y: f, width: b } of v)
1237
+ l.style.position = "absolute", l.style.left = `${(d - b) / 2}px`, l.style.top = `${f}px`, l.tagName === "AUI-GRAPH-UI" || l.tagName === "AUI-EDITOR" || (G(l, "drag", { config: { mode: "free", modifier: "alt" } }), G(l, "resize", { config: { modifier: "alt" } }));
1238
+ this.#t.style.width = `${d}px`, this.#t.style.height = `${h}px`;
1239
+ try {
1240
+ if ((await fetch(n, { method: "HEAD" })).ok) {
1241
+ const f = document.createElement("link");
1242
+ f.rel = "stylesheet", f.href = n, document.head.appendChild(f);
1243
+ }
1244
+ } catch {
1245
+ }
1237
1246
  try {
1238
1247
  await import(
1239
1248
  /* @vite-ignore */
@@ -1241,179 +1250,186 @@ class Ke extends T {
1241
1250
  );
1242
1251
  } catch {
1243
1252
  }
1244
- for (const d of Array.from(this.#t.querySelectorAll("script"))) {
1253
+ for (const l of Array.from(this.#t.querySelectorAll("script"))) {
1245
1254
  const f = document.createElement("script");
1246
- for (const g of d.attributes) f.setAttribute(g.name, g.value);
1247
- f.textContent = d.textContent, d.replaceWith(f);
1255
+ for (const b of l.attributes) f.setAttribute(b.name, b.value);
1256
+ f.textContent = l.textContent, l.replaceWith(f);
1248
1257
  }
1249
1258
  requestAnimationFrame(() => this.#d());
1250
1259
  }
1251
1260
  async #o(t, e) {
1252
- const a = /* @__PURE__ */ new Set(), o = /* @__PURE__ */ new Set();
1253
- let r = 200, h = 0;
1254
- for (const c of t) {
1255
- const p = c.file || `${c.slug}/${c.slug}.html`, l = p.split("/")[0], u = `${e}${p}`, v = `${e}${l}/${l}.css`, d = `${e}${l}/${l}.ts`;
1256
- if (!a.has(v)) {
1257
- a.add(v);
1261
+ const n = /* @__PURE__ */ new Set(), o = /* @__PURE__ */ new Set();
1262
+ let r = 200, c = 0;
1263
+ for (const u of t) {
1264
+ const m = u.file || `${u.slug}/${u.slug}.html`, h = m.replace(/\.html$/, ""), d = `${e}${m}`, v = `${e}${h}.css`, l = `${e}${h}.ts`;
1265
+ if (!n.has(v)) {
1266
+ n.add(v);
1258
1267
  const y = document.createElement("link");
1259
1268
  y.rel = "stylesheet", y.href = v, document.head.appendChild(y);
1260
1269
  }
1261
- if (!o.has(d)) {
1262
- o.add(d);
1270
+ if (!o.has(l)) {
1271
+ o.add(l);
1263
1272
  try {
1264
1273
  await import(
1265
1274
  /* @vite-ignore */
1266
- d
1275
+ l
1267
1276
  );
1268
1277
  } catch {
1269
1278
  }
1270
1279
  }
1271
1280
  let f = "";
1272
1281
  try {
1273
- const y = await fetch(u);
1282
+ const y = await fetch(d);
1274
1283
  y.ok && (f = await y.text());
1275
1284
  } catch {
1276
1285
  continue;
1277
1286
  }
1278
1287
  if (!f.trim()) continue;
1279
- const g = document.createElement("div");
1280
- g.setAttribute("data-role", "gallery-item"), g.innerHTML = `<h3 style="margin:0 0 1rem;font-family:var(--aui-font-family);font-size:var(--aui-font-lg);font-weight:var(--aui-font-weight-semibold);color:var(--aui-ink-muted);">${c.name || k(c.slug)}</h3>${f}`, this.#t.appendChild(g), await new Promise((y) => requestAnimationFrame(y));
1281
- const C = g.offsetHeight, b = g.offsetWidth;
1282
- g.style.position = "absolute", g.style.left = "0px", g.style.top = `${r}px`, b > h && (h = b), r += C + 96;
1288
+ const b = document.createElement("div");
1289
+ b.setAttribute("data-role", "gallery-item"), b.innerHTML = `<h3 style="margin:0 0 1rem;font-family:var(--aui-font-family);font-size:var(--aui-font-lg);font-weight:var(--aui-font-weight-semibold);color:var(--aui-ink-muted);">${u.name || k(u.slug)}</h3>${f}`, this.#t.appendChild(b), await new Promise((y) => requestAnimationFrame(y));
1290
+ const C = b.offsetHeight, g = b.offsetWidth;
1291
+ b.style.position = "absolute", b.style.top = `${r}px`, b.__measuredWidth = g, g > c && (c = g), r += C + 96;
1292
+ }
1293
+ for (const u of Array.from(this.#t.children)) {
1294
+ const m = u.__measuredWidth ?? u.offsetWidth;
1295
+ u.style.left = `${(c - m) / 2}px`;
1283
1296
  }
1284
- this.#t.style.width = `${h}px`, this.#t.style.height = `${r}px`, requestAnimationFrame(() => this.#d());
1297
+ this.#t.style.width = `${c}px`, this.#t.style.height = `${r}px`, requestAnimationFrame(() => this.#d());
1285
1298
  }
1286
1299
  #d() {
1287
- const t = this.#n, e = this.#n.clientWidth, i = this.#t.offsetWidth, s = (e - i) / 2;
1300
+ const t = this.#n, e = this.#n.clientWidth, i = this.#t.offsetWidth, s = Math.max(16, (e - i) / 2);
1288
1301
  t.panTo?.(s, 0);
1289
1302
  }
1290
1303
  }
1291
1304
  et();
1292
- n("aui-button", lt);
1293
- n("aui-input", dt);
1294
- n("aui-checkbox", ct);
1295
- n("aui-switch", ht);
1296
- n("aui-radio", mt);
1297
- n("aui-radio-group", pt);
1298
- n("aui-textarea", ft);
1299
- n("aui-container", bt);
1300
- n("aui-dialog", gt);
1301
- n("aui-drawer", vt);
1302
- n("aui-icon", At);
1303
- n("aui-tooltip", yt);
1304
- n("aui-range", wt);
1305
- n("aui-input-otp", xt);
1306
- n("aui-gripper", Ct);
1307
- n("aui-option", Et);
1308
- n("aui-optgroup", kt);
1309
- n("aui-select", St);
1310
- n("aui-toast", Pt);
1311
- n("aui-tabs", $t);
1312
- n("aui-tab", Lt);
1313
- n("aui-tab-panel", Mt);
1314
- n("aui-accordion", Dt);
1315
- n("aui-accordion-item", Tt);
1316
- n("aui-breadcrumb", It);
1317
- n("aui-breadcrumb-item", Nt);
1318
- n("aui-segmented-control", Yt);
1319
- n("aui-segment", qt);
1320
- n("aui-pagination", Rt);
1321
- n("aui-command", Ft);
1322
- n("aui-command-input", zt);
1323
- n("aui-command-list", Gt);
1324
- n("aui-command-item", Ut);
1325
- n("aui-command-group", Ht);
1326
- n("aui-command-empty", Ot);
1327
- n("aui-panes", Wt);
1328
- n("aui-pane", Xt);
1329
- n("aui-table", Bt);
1330
- n("aui-table-head", Kt);
1331
- n("aui-table-body", jt);
1332
- n("aui-table-row", _t);
1333
- n("aui-table-header", Jt);
1334
- n("aui-table-cell", Vt);
1335
- n("aui-table-column", Re);
1336
- n("aui-tree", Zt);
1337
- n("aui-tree-item", Qt);
1338
- n("aui-feed", te);
1339
- n("aui-root", ee);
1340
- n("aui-canvas", Fe);
1341
- n("aui-calendar", Ue);
1342
- n("aui-calendar-picker", ie);
1343
- n("aui-calendar-range-picker", se);
1344
- n("aui-noodles", Xe);
1345
- n("aui-agent-feed", B);
1346
- n("aui-agent-thread", K);
1347
- n("aui-agent-message", j);
1348
- n("aui-agent-text", _);
1349
- n("aui-agent-activity", J);
1350
- n("aui-agent-seeds", V);
1351
- n("aui-agent-panel", Z);
1352
- n("aui-agent-input", Q);
1353
- n("aui-agent-prompt", tt);
1354
- n("aui-app-shell", ae);
1355
- n("aui-page", ne);
1356
- n("aui-page-main", oe);
1357
- n("aui-page-context", re);
1358
- n("aui-sidebar", ue);
1359
- n("aui-sidebar-header", le);
1360
- n("aui-sidebar-content", de);
1361
- n("aui-sidebar-footer", ce);
1362
- n("aui-preview-app", Ke);
1363
- n("aui-editor", it);
1364
- n("aui-editor-layer", st);
1365
- n("aui-graph-ui", at);
1366
- n("aui-graph-layer", nt);
1367
- n("aui-graph-node", ot);
1368
- n("aui-graph-noodle", rt);
1369
- n("aui-graph-port", ut);
1370
- n("aui-progress", he);
1371
- n("aui-code-block", me);
1372
- n("aui-sparkline", pe);
1373
- n("aui-chip", fe);
1374
- n("aui-disclosure", be);
1375
- n("aui-avatar-group", ge);
1376
- n("aui-progress-circle", ve);
1377
- n("aui-disclosure-group", Ae);
1378
- n("aui-tag-group", ye);
1379
- n("aui-color-area", we);
1380
- n("aui-color-slider", xe);
1381
- n("aui-color-field", Ce);
1382
- n("aui-time-field", Ee);
1383
- n("aui-date-field", ke);
1384
- n("aui-context-menu", Se);
1385
- n("aui-dropdown-menu", Pe);
1386
- n("aui-hover-card", $e);
1387
- n("aui-color-picker", Le);
1388
- n("aui-file-upload", Me);
1389
- n("aui-copy-button", De);
1390
- n("aui-stat", Te);
1391
- n("aui-image", Ie);
1392
- n("aui-carousel", Ne);
1393
- n("aui-notification-center", Ye);
1394
- n("aui-empty-state", qe);
1305
+ a("aui-button", lt);
1306
+ a("aui-input", dt);
1307
+ a("aui-checkbox", ct);
1308
+ a("aui-switch", ht);
1309
+ a("aui-radio", mt);
1310
+ a("aui-radio-group", pt);
1311
+ a("aui-textarea", ft);
1312
+ a("aui-container", bt);
1313
+ a("aui-dialog", gt);
1314
+ a("aui-drawer", vt);
1315
+ a("aui-icon", At);
1316
+ a("aui-tooltip", yt);
1317
+ a("aui-range", wt);
1318
+ a("aui-input-otp", xt);
1319
+ a("aui-gripper", Ct);
1320
+ a("aui-option", Et);
1321
+ a("aui-optgroup", kt);
1322
+ a("aui-select", St);
1323
+ a("aui-toast", Pt);
1324
+ a("aui-tabs", $t);
1325
+ a("aui-tab", Mt);
1326
+ a("aui-tab-panel", Lt);
1327
+ a("aui-accordion", Dt);
1328
+ a("aui-accordion-item", Tt);
1329
+ a("aui-breadcrumb", It);
1330
+ a("aui-breadcrumb-item", Nt);
1331
+ a("aui-segmented-control", Yt);
1332
+ a("aui-segment", qt);
1333
+ a("aui-pagination", Rt);
1334
+ a("aui-command", Ft);
1335
+ a("aui-command-input", Gt);
1336
+ a("aui-command-list", zt);
1337
+ a("aui-command-item", Ut);
1338
+ a("aui-command-group", Ht);
1339
+ a("aui-command-empty", Wt);
1340
+ a("aui-panes", Ot);
1341
+ a("aui-pane", Xt);
1342
+ a("aui-table", _t);
1343
+ a("aui-table-head", Bt);
1344
+ a("aui-table-body", Kt);
1345
+ a("aui-table-row", jt);
1346
+ a("aui-table-header", Jt);
1347
+ a("aui-table-cell", Vt);
1348
+ a("aui-table-column", ze);
1349
+ a("aui-tree", Zt);
1350
+ a("aui-tree-item", Qt);
1351
+ a("aui-feed", te);
1352
+ a("aui-root", ee);
1353
+ a("aui-canvas", Ue);
1354
+ a("aui-calendar", Oe);
1355
+ a("aui-calendar-picker", ie);
1356
+ a("aui-calendar-range-picker", se);
1357
+ a("aui-noodles", Ke);
1358
+ a("aui-agent-feed", _);
1359
+ a("aui-agent-thread", B);
1360
+ a("aui-agent-message", K);
1361
+ a("aui-agent-text", j);
1362
+ a("aui-agent-activity", J);
1363
+ a("aui-agent-seeds", V);
1364
+ a("aui-agent-panel", Z);
1365
+ a("aui-agent-input", Q);
1366
+ a("aui-agent-prompt", tt);
1367
+ a("aui-app-shell", ae);
1368
+ a("aui-page", ne);
1369
+ a("aui-page-main", oe);
1370
+ a("aui-page-context", re);
1371
+ a("aui-sidebar", ue);
1372
+ a("aui-sidebar-header", le);
1373
+ a("aui-sidebar-content", de);
1374
+ a("aui-sidebar-footer", ce);
1375
+ a("aui-preview-app", Je);
1376
+ a("aui-editor", it);
1377
+ a("aui-editor-layer", st);
1378
+ a("aui-graph-ui", at);
1379
+ a("aui-graph-layer", nt);
1380
+ a("aui-graph-node", ot);
1381
+ a("aui-graph-noodle", rt);
1382
+ a("aui-graph-port", ut);
1383
+ a("aui-progress", he);
1384
+ a("aui-code-block", me);
1385
+ a("aui-sparkline", pe);
1386
+ a("aui-chip", fe);
1387
+ a("aui-disclosure", be);
1388
+ a("aui-avatar-group", ge);
1389
+ a("aui-progress-circle", ve);
1390
+ a("aui-disclosure-group", Ae);
1391
+ a("aui-tag-group", ye);
1392
+ a("aui-color-area", we);
1393
+ a("aui-color-slider", xe);
1394
+ a("aui-color-field", Ce);
1395
+ a("aui-time-field", Ee);
1396
+ a("aui-date-field", ke);
1397
+ a("aui-context-menu", Se);
1398
+ a("aui-dropdown-menu", Pe);
1399
+ a("aui-hover-card", $e);
1400
+ a("aui-color-picker", Me);
1401
+ a("aui-file-upload", Le);
1402
+ a("aui-copy-button", De);
1403
+ a("aui-stat", Te);
1404
+ a("aui-image", Ie);
1405
+ a("aui-carousel", Ne);
1406
+ a("aui-notification-center", Ye);
1407
+ a("aui-empty-state", qe);
1408
+ a("aui-meter", Re);
1409
+ a("aui-checkbox-group", Fe);
1410
+ a("aui-form", Ge);
1395
1411
  const q = /* @__PURE__ */ new WeakMap();
1396
- function Y(m) {
1397
- if (m instanceof T || q.has(m)) return;
1398
- const t = m.getAttribute("traits");
1412
+ function Y(p) {
1413
+ if (p instanceof T || q.has(p)) return;
1414
+ const t = p.getAttribute("traits");
1399
1415
  if (!t) return;
1400
- const e = W(t), i = X(e, m.localName), s = [];
1401
- for (const { entry: a } of i) {
1402
- const o = z(m, a.name, {
1403
- config: a.config
1416
+ const e = O(t), i = X(e, p.localName), s = [];
1417
+ for (const { entry: n } of i) {
1418
+ const o = G(p, n.name, {
1419
+ config: n.config
1404
1420
  });
1405
1421
  s.push(o);
1406
1422
  }
1407
- q.set(m, s);
1423
+ q.set(p, s);
1408
1424
  }
1409
- function F(m) {
1410
- const t = q.get(m);
1425
+ function F(p) {
1426
+ const t = q.get(p);
1411
1427
  if (t) {
1412
1428
  for (const e of t) e();
1413
- q.delete(m);
1429
+ q.delete(p);
1414
1430
  }
1415
1431
  }
1416
- function O() {
1432
+ function W() {
1417
1433
  for (const t of document.querySelectorAll("[traits]"))
1418
1434
  Y(t);
1419
1435
  new MutationObserver((t) => {
@@ -1423,15 +1439,15 @@ function O() {
1423
1439
  if (i.nodeType !== 1) continue;
1424
1440
  const s = i;
1425
1441
  s.hasAttribute("traits") && Y(s);
1426
- for (const a of s.querySelectorAll("[traits]"))
1427
- Y(a);
1442
+ for (const n of s.querySelectorAll("[traits]"))
1443
+ Y(n);
1428
1444
  }
1429
1445
  for (const i of e.removedNodes) {
1430
1446
  if (i.nodeType !== 1) continue;
1431
1447
  const s = i;
1432
1448
  F(s);
1433
- for (const a of s.querySelectorAll("[traits]"))
1434
- F(a);
1449
+ for (const n of s.querySelectorAll("[traits]"))
1450
+ F(n);
1435
1451
  }
1436
1452
  }
1437
1453
  if (e.type === "attributes" && e.attributeName === "traits") {
@@ -1446,9 +1462,9 @@ function O() {
1446
1462
  attributeFilter: ["traits"]
1447
1463
  });
1448
1464
  }
1449
- document.body ? O() : document.addEventListener("DOMContentLoaded", O, { once: !0 });
1450
- document.addEventListener("click", (m) => {
1451
- const t = m.target?.closest?.("[popover-trigger]");
1465
+ document.body ? W() : document.addEventListener("DOMContentLoaded", W, { once: !0 });
1466
+ document.addEventListener("click", (p) => {
1467
+ const t = p.target?.closest?.("[popover-trigger]");
1452
1468
  if (!t) return;
1453
1469
  const e = t.getAttribute("popover-trigger");
1454
1470
  if (!e) return;
@@ -1461,8 +1477,8 @@ document.addEventListener("click", (m) => {
1461
1477
  } catch {
1462
1478
  }
1463
1479
  });
1464
- for (const m of ["pointermove", "pointerdown", "pointerup", "mouseover", "mouseenter", "mouseleave"])
1465
- document.addEventListener(m, (t) => {
1480
+ for (const p of ["pointermove", "pointerdown", "pointerup", "mouseover", "mouseenter", "mouseleave"])
1481
+ document.addEventListener(p, (t) => {
1466
1482
  t.target?.closest?.("[popover], dialog") && t.stopPropagation();
1467
1483
  }, !0);
1468
1484
  //# sourceMappingURL=register.js.map