@threadlabs/looma 0.1.9 → 0.1.11

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 (210) hide show
  1. package/dist/{chunk-UMFO4QNN.js → chunk-DYIMEQY7.js} +27 -26
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/looma.cjs.js +1 -1
  4. package/dist/cjs/ui-affordance-scope.cjs.entry.js +152 -0
  5. package/dist/cjs/ui-avatar-group.cjs.entry.js +1 -1
  6. package/dist/cjs/ui-avatar.cjs.entry.js +1 -1
  7. package/dist/cjs/ui-badge.cjs.entry.js +1 -1
  8. package/dist/cjs/ui-button.cjs.entry.js +1 -1
  9. package/dist/cjs/ui-checkbox.cjs.entry.js +1 -1
  10. package/dist/cjs/ui-context-menu.cjs.entry.js +1 -1
  11. package/dist/cjs/ui-dialog.cjs.entry.js +1 -1
  12. package/dist/cjs/ui-disclosure.cjs.entry.js +1 -1
  13. package/dist/cjs/ui-floating-action-button.cjs.entry.js +1 -1
  14. package/dist/cjs/ui-form-field.cjs.entry.js +1 -1
  15. package/dist/cjs/ui-icon-button.cjs.entry.js +4 -2
  16. package/dist/cjs/ui-input.cjs.entry.js +1 -1
  17. package/dist/cjs/ui-menu-item.cjs.entry.js +1 -1
  18. package/dist/cjs/ui-menu.cjs.entry.js +1 -1
  19. package/dist/cjs/ui-popover.cjs.entry.js +1 -1
  20. package/dist/cjs/ui-radio-group.cjs.entry.js +1 -1
  21. package/dist/cjs/ui-radio.cjs.entry.js +1 -1
  22. package/dist/cjs/ui-search-result-row.cjs.entry.js +1 -1
  23. package/dist/cjs/ui-search-shell.cjs.entry.js +1 -1
  24. package/dist/cjs/ui-select.cjs.entry.js +1 -1
  25. package/dist/cjs/ui-switch.cjs.entry.js +2 -2
  26. package/dist/cjs/ui-tabs.cjs.entry.js +1 -1
  27. package/dist/cjs/ui-textarea.cjs.entry.js +1 -1
  28. package/dist/cjs/ui-toast-region.cjs.entry.js +1 -1
  29. package/dist/cjs/ui-tooltip.cjs.entry.js +1 -1
  30. package/dist/cjs/ui-top-bar.cjs.entry.js +1 -1
  31. package/dist/collection/collection-manifest.json +1 -0
  32. package/dist/collection/components/ui-affordance-scope/ui-affordance-scope.css +8 -0
  33. package/dist/collection/components/ui-affordance-scope/ui-affordance-scope.js +70 -0
  34. package/dist/collection/components/ui-avatar/ui-avatar.js +1 -1
  35. package/dist/collection/components/ui-avatar-group/ui-avatar-group.js +1 -1
  36. package/dist/collection/components/ui-badge/ui-badge.js +1 -1
  37. package/dist/collection/components/ui-button/ui-button.js +1 -1
  38. package/dist/collection/components/ui-checkbox/ui-checkbox.js +1 -1
  39. package/dist/collection/components/ui-context-menu/ui-context-menu.js +1 -1
  40. package/dist/collection/components/ui-dialog/ui-dialog.js +1 -1
  41. package/dist/collection/components/ui-disclosure/ui-disclosure.js +1 -1
  42. package/dist/collection/components/ui-floating-action-button/ui-floating-action-button.js +1 -1
  43. package/dist/collection/components/ui-form-field/ui-form-field.js +1 -1
  44. package/dist/collection/components/ui-icon-button/ui-icon-button.css +53 -0
  45. package/dist/collection/components/ui-icon-button/ui-icon-button.js +23 -1
  46. package/dist/collection/components/ui-input/ui-input.js +1 -1
  47. package/dist/collection/components/ui-menu/ui-menu.js +1 -1
  48. package/dist/collection/components/ui-menu-item/ui-menu-item.js +1 -1
  49. package/dist/collection/components/ui-popover/ui-popover.js +1 -1
  50. package/dist/collection/components/ui-radio/ui-radio.js +1 -1
  51. package/dist/collection/components/ui-radio-group/ui-radio-group.js +1 -1
  52. package/dist/collection/components/ui-search-result-row/ui-search-result-row.js +1 -1
  53. package/dist/collection/components/ui-search-shell/ui-search-shell.js +1 -1
  54. package/dist/collection/components/ui-select/ui-select.js +1 -1
  55. package/dist/collection/components/ui-switch/ui-switch.js +2 -2
  56. package/dist/collection/components/ui-tabs/ui-tabs.js +1 -1
  57. package/dist/collection/components/ui-textarea/ui-textarea.js +1 -1
  58. package/dist/collection/components/ui-toast-region/ui-toast-region.js +1 -1
  59. package/dist/collection/components/ui-tooltip/ui-tooltip.js +1 -1
  60. package/dist/collection/components/ui-top-bar/ui-top-bar.js +1 -1
  61. package/dist/collection/overlay/positioning.js +135 -0
  62. package/dist/components/index.d.ts +2 -0
  63. package/dist/components/index.js +1 -1
  64. package/dist/components/{p-gHC_Ei92.js → p-QiwSQmKJ.js} +1 -1
  65. package/dist/components/ui-affordance-scope.d.ts +11 -0
  66. package/dist/components/ui-affordance-scope.js +1 -0
  67. package/dist/components/ui-avatar-group.js +1 -1
  68. package/dist/components/ui-avatar.js +1 -1
  69. package/dist/components/ui-badge.js +1 -1
  70. package/dist/components/ui-button.js +1 -1
  71. package/dist/components/ui-checkbox.js +1 -1
  72. package/dist/components/ui-context-menu.js +1 -1
  73. package/dist/components/ui-dialog.js +1 -1
  74. package/dist/components/ui-disclosure.js +1 -1
  75. package/dist/components/ui-floating-action-button.js +1 -1
  76. package/dist/components/ui-form-field.js +1 -1
  77. package/dist/components/ui-icon-button.js +1 -1
  78. package/dist/components/ui-input.js +1 -1
  79. package/dist/components/ui-menu-item.js +1 -1
  80. package/dist/components/ui-menu.js +1 -1
  81. package/dist/components/ui-popover.js +1 -1
  82. package/dist/components/ui-radio-group.js +1 -1
  83. package/dist/components/ui-radio.js +1 -1
  84. package/dist/components/ui-search-result-row.js +1 -1
  85. package/dist/components/ui-search-shell.js +1 -1
  86. package/dist/components/ui-select.js +1 -1
  87. package/dist/components/ui-switch.js +1 -1
  88. package/dist/components/ui-tabs.js +1 -1
  89. package/dist/components/ui-textarea.js +1 -1
  90. package/dist/components/ui-toast-region.js +1 -1
  91. package/dist/components/ui-tooltip.js +1 -1
  92. package/dist/components/ui-top-bar.js +1 -1
  93. package/dist/esm/loader.js +1 -1
  94. package/dist/esm/looma.js +1 -1
  95. package/dist/esm/ui-affordance-scope.entry.js +150 -0
  96. package/dist/esm/ui-avatar-group.entry.js +1 -1
  97. package/dist/esm/ui-avatar.entry.js +1 -1
  98. package/dist/esm/ui-badge.entry.js +1 -1
  99. package/dist/esm/ui-button.entry.js +1 -1
  100. package/dist/esm/ui-checkbox.entry.js +1 -1
  101. package/dist/esm/ui-context-menu.entry.js +1 -1
  102. package/dist/esm/ui-dialog.entry.js +1 -1
  103. package/dist/esm/ui-disclosure.entry.js +1 -1
  104. package/dist/esm/ui-floating-action-button.entry.js +1 -1
  105. package/dist/esm/ui-form-field.entry.js +1 -1
  106. package/dist/esm/ui-icon-button.entry.js +4 -2
  107. package/dist/esm/ui-input.entry.js +1 -1
  108. package/dist/esm/ui-menu-item.entry.js +1 -1
  109. package/dist/esm/ui-menu.entry.js +1 -1
  110. package/dist/esm/ui-popover.entry.js +1 -1
  111. package/dist/esm/ui-radio-group.entry.js +1 -1
  112. package/dist/esm/ui-radio.entry.js +1 -1
  113. package/dist/esm/ui-search-result-row.entry.js +1 -1
  114. package/dist/esm/ui-search-shell.entry.js +1 -1
  115. package/dist/esm/ui-select.entry.js +1 -1
  116. package/dist/esm/ui-switch.entry.js +2 -2
  117. package/dist/esm/ui-tabs.entry.js +1 -1
  118. package/dist/esm/ui-textarea.entry.js +1 -1
  119. package/dist/esm/ui-toast-region.entry.js +1 -1
  120. package/dist/esm/ui-tooltip.entry.js +1 -1
  121. package/dist/esm/ui-top-bar.entry.js +1 -1
  122. package/dist/index.cjs +306 -29
  123. package/dist/index.d.cts +42 -1
  124. package/dist/index.d.ts +42 -1
  125. package/dist/index.js +127 -2
  126. package/dist/looma/looma.esm.js +1 -1
  127. package/dist/looma/p-0198bb21.entry.js +1 -0
  128. package/dist/looma/{p-d39905f9.entry.js → p-051f578c.entry.js} +1 -1
  129. package/dist/looma/{p-c14233bc.entry.js → p-0584a051.entry.js} +1 -1
  130. package/dist/looma/{p-cb15e8e3.entry.js → p-078f9fb8.entry.js} +1 -1
  131. package/dist/looma/{p-dc857ed4.entry.js → p-0f45c5f0.entry.js} +1 -1
  132. package/dist/looma/{p-201243dc.entry.js → p-1681b218.entry.js} +1 -1
  133. package/dist/looma/{p-41d62a83.entry.js → p-2ae73d5b.entry.js} +1 -1
  134. package/dist/looma/{p-5a645647.entry.js → p-2ed7e241.entry.js} +1 -1
  135. package/dist/looma/{p-5717a4c4.entry.js → p-34417499.entry.js} +1 -1
  136. package/dist/looma/{p-610b2eca.entry.js → p-4b422d40.entry.js} +1 -1
  137. package/dist/looma/{p-15e619fd.entry.js → p-5ba9d496.entry.js} +1 -1
  138. package/dist/looma/p-5d4713a6.entry.js +1 -0
  139. package/dist/looma/{p-96de71ad.entry.js → p-624ba086.entry.js} +1 -1
  140. package/dist/looma/{p-01425a37.entry.js → p-65c25c94.entry.js} +1 -1
  141. package/dist/looma/{p-66a203a1.entry.js → p-7e94d90d.entry.js} +1 -1
  142. package/dist/looma/p-8c09c724.entry.js +1 -0
  143. package/dist/looma/{p-4c54d489.entry.js → p-8d5adb17.entry.js} +1 -1
  144. package/dist/looma/p-95340a13.entry.js +1 -0
  145. package/dist/looma/{p-07167650.entry.js → p-95cd639d.entry.js} +1 -1
  146. package/dist/looma/{p-03f0594b.entry.js → p-96f73d07.entry.js} +1 -1
  147. package/dist/looma/p-a33522a2.entry.js +1 -0
  148. package/dist/looma/{p-ee31c7b4.entry.js → p-a5127c7d.entry.js} +1 -1
  149. package/dist/looma/{p-dfcb2cca.entry.js → p-a9f46811.entry.js} +1 -1
  150. package/dist/looma/{p-93ce1c62.entry.js → p-b7aa4488.entry.js} +1 -1
  151. package/dist/looma/{p-5df568d8.entry.js → p-c6721aba.entry.js} +1 -1
  152. package/dist/looma/{p-3ecd7120.entry.js → p-d273b857.entry.js} +1 -1
  153. package/dist/looma/{p-24d7aa5b.entry.js → p-ed5abf6d.entry.js} +1 -1
  154. package/dist/types/components/ui-affordance-scope/ui-affordance-scope.d.ts +11 -0
  155. package/dist/types/components/ui-icon-button/ui-icon-button.d.ts +2 -0
  156. package/dist/types/components.d.ts +37 -0
  157. package/dist/types/overlay/positioning.d.ts +40 -0
  158. package/dist/ui-affordance-scope.entry-ZKUJ5AT4.js +144 -0
  159. package/dist/{ui-avatar-group.entry-S6DFXYB7.js → ui-avatar-group.entry-I4XM44BI.js} +2 -2
  160. package/dist/{ui-avatar.entry-MDRGXLWQ.js → ui-avatar.entry-ZZAMZAVF.js} +2 -2
  161. package/dist/{ui-badge.entry-RLL4YKPD.js → ui-badge.entry-DQXYMC3E.js} +2 -2
  162. package/dist/{ui-button.entry-IYMYLBFY.js → ui-button.entry-DM7BUZLI.js} +2 -2
  163. package/dist/{ui-checkbox.entry-K5FGWDG2.js → ui-checkbox.entry-X3PPWKIJ.js} +2 -2
  164. package/dist/{ui-context-menu.entry-KWXXJ3ZV.js → ui-context-menu.entry-KAW4NIFE.js} +2 -2
  165. package/dist/{ui-dialog.entry-RKHLQLQM.js → ui-dialog.entry-D23SNXWB.js} +2 -2
  166. package/dist/{ui-disclosure.entry-FRZKGEJP.js → ui-disclosure.entry-DOG6JZU7.js} +2 -2
  167. package/dist/{ui-floating-action-button.entry-BH4FDSTL.js → ui-floating-action-button.entry-VPQ7VBFS.js} +2 -2
  168. package/dist/{ui-form-field.entry-3CR2KSUH.js → ui-form-field.entry-SYZ6XSCG.js} +2 -2
  169. package/dist/ui-icon-button.entry-2SZBOIH5.js +26 -0
  170. package/dist/{ui-input.entry-5PQR37HS.js → ui-input.entry-PALICYLZ.js} +2 -2
  171. package/dist/{ui-menu-item.entry-2T3QWHLK.js → ui-menu-item.entry-W6TEFP5Y.js} +2 -2
  172. package/dist/{ui-menu.entry-Q5Z5YO5P.js → ui-menu.entry-7NARDV6S.js} +2 -2
  173. package/dist/{ui-popover.entry-4P2NWWAY.js → ui-popover.entry-ZXYHLDTP.js} +2 -2
  174. package/dist/{ui-radio-group.entry-QKPRNV26.js → ui-radio-group.entry-XEUKMD6J.js} +2 -2
  175. package/dist/{ui-radio.entry-O4DOMFNU.js → ui-radio.entry-4ABBHDLN.js} +2 -2
  176. package/dist/{ui-search-result-row.entry-BR5O3UCH.js → ui-search-result-row.entry-3HHM7OV4.js} +2 -2
  177. package/dist/{ui-search-shell.entry-2ZBP7SA3.js → ui-search-shell.entry-PJTFOBPT.js} +2 -2
  178. package/dist/{ui-select.entry-L75HQY72.js → ui-select.entry-A3RI5XCG.js} +2 -2
  179. package/dist/{ui-switch.entry-L5QWD3BT.js → ui-switch.entry-JNRS2YTN.js} +3 -3
  180. package/dist/{ui-tabs.entry-KWRD6Y7J.js → ui-tabs.entry-MQ4V5XCP.js} +2 -2
  181. package/dist/{ui-textarea.entry-JC3HPEBS.js → ui-textarea.entry-JJXJQZQR.js} +2 -2
  182. package/dist/{ui-toast-region.entry-C6KK4OM4.js → ui-toast-region.entry-STHVESL5.js} +2 -2
  183. package/dist/{ui-tooltip.entry-G5EOCWP4.js → ui-tooltip.entry-4W7CRIKI.js} +2 -2
  184. package/dist/{ui-top-bar.entry-YLKVAQFH.js → ui-top-bar.entry-WM3SS2HR.js} +2 -2
  185. package/editor/{chunk-OK5NARJI.js → chunk-4VGVEHU2.js} +244 -70
  186. package/editor/{chunk-NJ2KAMS2.js → chunk-F4AYF33M.js} +74 -34
  187. package/editor/extensions/index.d.ts +2 -2
  188. package/editor/extensions/index.js +1 -1
  189. package/editor/index.d.ts +1 -1
  190. package/editor/index.js +7 -2
  191. package/editor/table-overlay-jjvdARTJ.d.ts +95 -0
  192. package/editor/ui.d.ts +1 -1
  193. package/editor/ui.js +7 -2
  194. package/editor.css +232 -73
  195. package/layout/index.cjs +5 -0
  196. package/layout/index.css +22 -3
  197. package/layout/index.js +5 -0
  198. package/layout.css +24 -3
  199. package/package.json +1 -1
  200. package/tokens.css +9 -0
  201. package/vue/{chunk-5ELJ4UPG.js → chunk-YN4IUYVY.js} +14 -2
  202. package/vue/editor/index.js +94 -37
  203. package/vue/index.d.ts +5 -1
  204. package/vue/index.js +3 -1
  205. package/dist/looma/p-754cfff3.entry.js +0 -1
  206. package/dist/looma/p-940a931a.entry.js +0 -1
  207. package/dist/looma/p-941221ad.entry.js +0 -1
  208. package/dist/looma/p-955fb814.entry.js +0 -1
  209. package/dist/ui-icon-button.entry-LB54U25M.js +0 -24
  210. package/editor/table-overlay-Bq0F5xPg.d.ts +0 -64
package/dist/index.cjs CHANGED
@@ -24,6 +24,151 @@ var __copyProps = (to, from, except, desc) => {
24
24
  };
25
25
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
26
26
 
27
+ // dist/esm/ui-affordance-scope.entry.js
28
+ var ui_affordance_scope_entry_exports = {};
29
+ __export(ui_affordance_scope_entry_exports, {
30
+ ui_affordance_scope: () => UIAffordanceScope
31
+ });
32
+ function distanceFromPointToRect(point, rect) {
33
+ const dx = Math.max(rect.left - point.x, 0, point.x - rect.right);
34
+ const dy = Math.max(rect.top - point.y, 0, point.y - rect.bottom);
35
+ return Math.hypot(dx, dy);
36
+ }
37
+ function createProximityCoordinator(scope, options = {}) {
38
+ const owner = scope.ownerDocument.defaultView ?? window;
39
+ const pointerTarget = options.pointerTarget ?? scope;
40
+ const anchorSelector = options.anchorSelector ?? "[data-ui-affordance]";
41
+ const configuredRadius = options.nearRadius ?? 32;
42
+ const nearRadius = Number.isFinite(configuredRadius) ? Math.max(0, configuredRadius) : 32;
43
+ const abort = new AbortController();
44
+ let anchors = [];
45
+ let frame = null;
46
+ let point = null;
47
+ let geometryDirty = false;
48
+ const clear = () => {
49
+ for (const { element } of anchors) {
50
+ if (element.hasAttribute("data-ui-proximity")) {
51
+ element.removeAttribute("data-ui-proximity");
52
+ }
53
+ }
54
+ if (scope.hasAttribute("data-ui-interaction")) {
55
+ scope.removeAttribute("data-ui-interaction");
56
+ }
57
+ };
58
+ const measure = () => {
59
+ anchors = Array.from(scope.querySelectorAll(anchorSelector)).filter((element) => !element.hasAttribute("disabled") && element.getAttribute("aria-disabled") !== "true").map((element) => ({ element, rect: element.getBoundingClientRect() }));
60
+ geometryDirty = false;
61
+ };
62
+ const update = () => {
63
+ frame = null;
64
+ if (geometryDirty)
65
+ measure();
66
+ if (!point) {
67
+ clear();
68
+ return;
69
+ }
70
+ let engaged = false;
71
+ for (const anchor of anchors) {
72
+ const near = distanceFromPointToRect(point, anchor.rect) <= nearRadius;
73
+ if (near && anchor.element.getAttribute("data-ui-proximity") !== "near") {
74
+ anchor.element.setAttribute("data-ui-proximity", "near");
75
+ } else if (!near && anchor.element.hasAttribute("data-ui-proximity")) {
76
+ anchor.element.removeAttribute("data-ui-proximity");
77
+ }
78
+ engaged ||= near;
79
+ }
80
+ if (engaged && scope.getAttribute("data-ui-interaction") !== "engaged") {
81
+ scope.setAttribute("data-ui-interaction", "engaged");
82
+ } else if (!engaged && scope.hasAttribute("data-ui-interaction")) {
83
+ scope.removeAttribute("data-ui-interaction");
84
+ }
85
+ };
86
+ const schedule = () => {
87
+ if (frame !== null)
88
+ return;
89
+ frame = owner.requestAnimationFrame(update);
90
+ };
91
+ const onPointerMove = (event) => {
92
+ const pointer = event;
93
+ if (pointer.pointerType === "touch") {
94
+ point = null;
95
+ } else {
96
+ point = { x: pointer.clientX, y: pointer.clientY };
97
+ }
98
+ schedule();
99
+ };
100
+ const invalidate = () => {
101
+ geometryDirty = true;
102
+ schedule();
103
+ };
104
+ pointerTarget.addEventListener("pointermove", onPointerMove, {
105
+ passive: true,
106
+ signal: abort.signal
107
+ });
108
+ owner.addEventListener("resize", invalidate, { passive: true, signal: abort.signal });
109
+ owner.addEventListener("scroll", invalidate, { passive: true, capture: true, signal: abort.signal });
110
+ owner.visualViewport?.addEventListener("resize", invalidate, { passive: true, signal: abort.signal });
111
+ owner.visualViewport?.addEventListener("scroll", invalidate, { passive: true, signal: abort.signal });
112
+ measure();
113
+ return {
114
+ refresh: invalidate,
115
+ destroy() {
116
+ abort.abort();
117
+ if (frame !== null)
118
+ owner.cancelAnimationFrame(frame);
119
+ frame = null;
120
+ point = null;
121
+ clear();
122
+ anchors = [];
123
+ }
124
+ };
125
+ }
126
+ var uiAffordanceScopeCss, UIAffordanceScope;
127
+ var init_ui_affordance_scope_entry = __esm({
128
+ "dist/esm/ui-affordance-scope.entry.js"() {
129
+ init_index_CEeiinfk();
130
+ uiAffordanceScopeCss = () => `:host{display:contents;--ui-affordance-scope-engaged:0}:host([data-ui-interaction='engaged']){--ui-affordance-scope-engaged:1}`;
131
+ UIAffordanceScope = class {
132
+ constructor(hostRef) {
133
+ registerInstance(this, hostRef);
134
+ }
135
+ get host() {
136
+ return getElement(this);
137
+ }
138
+ /** Distance outside each registered affordance that reveals its near state. */
139
+ nearRadius = 32;
140
+ coordinator = null;
141
+ componentDidLoad() {
142
+ this.connectCoordinator();
143
+ }
144
+ disconnectedCallback() {
145
+ this.coordinator?.destroy();
146
+ this.coordinator = null;
147
+ }
148
+ connectCoordinator() {
149
+ this.coordinator?.destroy();
150
+ this.coordinator = createProximityCoordinator(this.host, {
151
+ nearRadius: this.nearRadius
152
+ });
153
+ }
154
+ onSlotChange = () => {
155
+ this.coordinator?.refresh();
156
+ };
157
+ render() {
158
+ return h(Host, { key: "2bc861652826e6227deaba6d1030ecf43753f575" }, h("slot", { key: "5e0544939e6b20747f12023dbb45329eb3853715", onSlotchange: this.onSlotChange }));
159
+ }
160
+ static get watchers() {
161
+ return {
162
+ "nearRadius": [{
163
+ "connectCoordinator": 0
164
+ }]
165
+ };
166
+ }
167
+ };
168
+ UIAffordanceScope.style = uiAffordanceScopeCss();
169
+ }
170
+ });
171
+
27
172
  // dist/esm/ui-avatar-group.entry.js
28
173
  var ui_avatar_group_entry_exports = {};
29
174
  __export(ui_avatar_group_entry_exports, {
@@ -70,7 +215,7 @@ var init_ui_avatar_group_entry = __esm({
70
215
  this.overflowCount = overflowCount;
71
216
  }
72
217
  render() {
73
- return h(Host, { key: "9c8fbeb6e8c87ef4d86778a70a52f48b62717728", role: "list", "aria-label": this.label || void 0 }, h("slot", { key: "432877b335f2a75f6b17a14b4be768c68ba04bfa" }), this.overflowCount > 0 && h("span", { key: "ccf8007947e5d97edcdf42b7f4740db33560956b", class: "overflow", role: "listitem", "aria-label": `${this.overflowCount} more`, "data-ui-avatar-group-overflow": true }, "+", this.overflowCount));
218
+ return h(Host, { key: "bef6efd3c80d29e47742412a497893789ea8790b", role: "list", "aria-label": this.label || void 0 }, h("slot", { key: "21585b11dcde36868c3e3bc7fbd0c216be6f011b" }), this.overflowCount > 0 && h("span", { key: "ede3b71945d379fe78d522a3346aa29c02d74b15", class: "overflow", role: "listitem", "aria-label": `${this.overflowCount} more`, "data-ui-avatar-group-overflow": true }, "+", this.overflowCount));
74
219
  }
75
220
  static get watchers() {
76
221
  return {
@@ -123,7 +268,7 @@ var init_ui_avatar_entry = __esm({
123
268
  render() {
124
269
  const fallbackText = this.fallback || toInitials(this.name || this.alt);
125
270
  const label = this.alt || this.name || "Avatar";
126
- return h(Host, { key: "f61c3a4e5556be947b9f573591d4db0687fd01fd", role: "img", "aria-label": label, "data-has-image": this.hasImage ? "" : void 0 }, h("div", { key: "03d4a3d1c86bb1d1779ad007ba12407230478dac", class: "avatar" }, h("img", { key: "512015d68f9118bf8b8181b5b5118c133e783baf", src: this.src, alt: label, onLoad: this.onImageLoad, onError: this.onImageError, hidden: !this.hasImage, "aria-hidden": this.hasImage ? "false" : "true" }), h("span", { key: "48b0f1f81a6465c6021d4c867af67a559b9b8a67", class: "fallback", hidden: this.hasImage, "aria-hidden": this.hasImage ? "true" : "false" }, fallbackText)));
271
+ return h(Host, { key: "18214960ad2f1a0370907c0281102af924739de9", role: "img", "aria-label": label, "data-has-image": this.hasImage ? "" : void 0 }, h("div", { key: "c6d0a00de56b756f0e24fdc4b306d89cdae2a44f", class: "avatar" }, h("img", { key: "c5bfecb9d18797bc934ff087ce7ed8a4616ab347", src: this.src, alt: label, onLoad: this.onImageLoad, onError: this.onImageError, hidden: !this.hasImage, "aria-hidden": this.hasImage ? "false" : "true" }), h("span", { key: "1875a45a9c21de3e3a52924ef25b3f8429a788c4", class: "fallback", hidden: this.hasImage, "aria-hidden": this.hasImage ? "true" : "false" }, fallbackText)));
127
272
  }
128
273
  static get watchers() {
129
274
  return {
@@ -154,7 +299,7 @@ var init_ui_badge_entry = __esm({
154
299
  variant;
155
300
  tone;
156
301
  render() {
157
- return h(Host, { key: "53eba0640816bc09ae198de29f9a1ac97c1d5f1d", "data-variant": this.variant || void 0, "data-tone": this.tone || void 0 }, h("slot", { key: "abc8a9e09c2001f222f9aa8f164da76ff8343e01" }));
302
+ return h(Host, { key: "8766c0331ac7fbd6409b604578e159ae093c844b", "data-variant": this.variant || void 0, "data-tone": this.tone || void 0 }, h("slot", { key: "65016ab530b850c82261e2da718622ff72567634" }));
158
303
  }
159
304
  };
160
305
  UIBadge.style = uiBadgeCss();
@@ -230,7 +375,7 @@ var init_ui_button_entry = __esm({
230
375
  this.host.click();
231
376
  };
232
377
  render() {
233
- return h(Host, { key: "7840303538ca2e4724ea634809fd6c2ad451f9d1", "data-size": this.size || void 0, "data-disabled": this.disabled ? "" : void 0, onKeyDown: this.onKeydown }, h("slot", { key: "731348c7cbb5c5f196dbd565058e0f410836ace2", ref: (el) => this.slotRef = el }));
378
+ return h(Host, { key: "b5f9152db70a276334df047f5cf53d1b8efe2174", "data-size": this.size || void 0, "data-disabled": this.disabled ? "" : void 0, onKeyDown: this.onKeydown }, h("slot", { key: "b39657e832abc63a6ea6090fa061779c3ae654b5", ref: (el) => this.slotRef = el }));
234
379
  }
235
380
  static get watchers() {
236
381
  return {
@@ -324,7 +469,7 @@ var init_ui_checkbox_entry = __esm({
324
469
  });
325
470
  };
326
471
  render() {
327
- return h(Host, { key: "c125eb000960f63f48ae8a96e8f001c843f8baa7", role: "checkbox", "aria-checked": this.indeterminate ? "mixed" : String(this.internalChecked), "aria-disabled": String(this.disabled), "data-disabled": this.disabled ? "" : void 0 }, h("slot", { key: "8eade76069c56e00d160488c5d91dae7b46ccc99", ref: (el) => this.slotRef = el }));
472
+ return h(Host, { key: "66b6708ae71c9eca6c03c63891b590bd050c2506", role: "checkbox", "aria-checked": this.indeterminate ? "mixed" : String(this.internalChecked), "aria-disabled": String(this.disabled), "data-disabled": this.disabled ? "" : void 0 }, h("slot", { key: "b5e168a9ff0c6e5e747fff6c6264c59744f10a56", ref: (el) => this.slotRef = el }));
328
473
  }
329
474
  static get watchers() {
330
475
  return {
@@ -630,7 +775,7 @@ var init_ui_context_menu_entry = __esm({
630
775
  this.closeMenu("action", "pointer");
631
776
  };
632
777
  render() {
633
- return h(Host, { key: "c57c08724714d1de8c22a4a1e86e3a790f45fa20", "data-open": this.internalOpen ? "" : void 0, onKeyDown: this.onKeydown, onClick: this.onItemClick }, h("slot", { key: "4048abb040de1125b8eb02358480914c97ea6b06", name: "trigger" }), h("div", { key: "6ce80f67142319260093903d289456070d49bfcc", class: "menu", "data-open": this.internalOpen ? "" : void 0, style: { left: `${this.pointerX}px`, top: `${this.pointerY}px` } }, h("ui-menu", { key: "2a2c22f0a797ca3a70a1399de41de2b18257abf8", open: this.internalOpen }, h("slot", { key: "252cc6e973704cd561301b5bf96f98481c6c74ff" }))));
778
+ return h(Host, { key: "79fbca2c89f1d1fd1f4796ad88d2a599e811a3f9", "data-open": this.internalOpen ? "" : void 0, onKeyDown: this.onKeydown, onClick: this.onItemClick }, h("slot", { key: "9308cadfa155930e3e46dfb4a69a847ae388958b", name: "trigger" }), h("div", { key: "16cfba2b32444ac9e3cac1f040f81f17fd5db23c", class: "menu", "data-open": this.internalOpen ? "" : void 0, style: { left: `${this.pointerX}px`, top: `${this.pointerY}px` } }, h("ui-menu", { key: "59f18e0df3bb1fe85efa8eeca00b336bbde47c70", open: this.internalOpen }, h("slot", { key: "5bdbb7773c9c1ae43ec2e05fca9558482815e28a" }))));
634
779
  }
635
780
  static get watchers() {
636
781
  return {
@@ -736,7 +881,7 @@ var init_ui_dialog_entry = __esm({
736
881
  }
737
882
  };
738
883
  render() {
739
- return h(Host, { key: "75371b61143c8e5d0e53dbcac93d6f8bb89bd80c", "data-open": this.internalOpen ? "" : void 0, onKeyDown: this.onKeydown }, h("dialog", { key: "180104f45ac99661e3ee3c0cc305f9407930cbc1", ref: (el) => this.dialogRef = el, open: this.internalOpen, "aria-label": this.label }, h("slot", { key: "973bf4b444c66ab15391020f5885fbccec96c78c" })));
884
+ return h(Host, { key: "c10f9063a1c2677caff3b8d1f26b37bf25978a77", "data-open": this.internalOpen ? "" : void 0, onKeyDown: this.onKeydown }, h("dialog", { key: "a7111bd363cab94f394cca526bf34ea8081e5228", ref: (el) => this.dialogRef = el, open: this.internalOpen, "aria-label": this.label }, h("slot", { key: "b0a9699fe0be09e331cfea81b6bbeaec11d48956" })));
740
885
  }
741
886
  static get watchers() {
742
887
  return {
@@ -863,7 +1008,7 @@ var init_ui_disclosure_entry = __esm({
863
1008
  this.setOpen(!this.internalOpen, { reason: "action", trigger: "keyboard" });
864
1009
  };
865
1010
  render() {
866
- return h(Host, { key: "433d2a0f6efe939e1a1ae60e27464139571004db" }, h("slot", { key: "7533ae794a7ce8be044c2ff0b5d3d1b72c01575c" }));
1011
+ return h(Host, { key: "7fbc83614f8e988a43d1baac0379a6dc8826b1d5" }, h("slot", { key: "6ef33ca7bce5c4d83ab65642f52a9d17febb794d" }));
867
1012
  }
868
1013
  static get watchers() {
869
1014
  return {
@@ -898,7 +1043,7 @@ var init_ui_floating_action_button_entry = __esm({
898
1043
  mobileOnly = false;
899
1044
  label = "";
900
1045
  render() {
901
- return h(Host, { key: "4b5b5eb530e4ab424e1189cff83d697f28432d84", "data-disabled": this.disabled ? "" : void 0 }, h("button", { key: "f8a4b8ac90bf306434b2b905030b46c1fcbcb000", type: "button", "aria-label": this.label || void 0, disabled: this.disabled }, h("slot", { key: "500d0606ea7166669f104e42813591395fc81c3f" })));
1046
+ return h(Host, { key: "6f67f3967cf8883005f6c56747db515db5ebe1d0", "data-disabled": this.disabled ? "" : void 0 }, h("button", { key: "deebb9261221c144b30bc3e41790158fc339cd14", type: "button", "aria-label": this.label || void 0, disabled: this.disabled }, h("slot", { key: "3b045b69a4508c84dd5b7c8b3df0e6f3eded1c13" })));
902
1047
  }
903
1048
  };
904
1049
  UIFloatingActionButton.style = uiFloatingActionButtonCss();
@@ -964,7 +1109,7 @@ var init_ui_form_field_entry = __esm({
964
1109
  input.setAttribute("aria-invalid", this.invalid ? "true" : "false");
965
1110
  }
966
1111
  render() {
967
- return h(Host, { key: "f2eb3a7bf493c0630ef27ee21fca1ffee94be536", "data-invalid": this.invalid ? "" : void 0, "data-disabled": this.disabled ? "" : void 0, "data-required": this.required ? "" : void 0 }, h("slot", { key: "f5f30e388ed9473ee50103f12527a1dd9cfb0b0b" }));
1112
+ return h(Host, { key: "c0a01ac28a7dd0e0b285e4b9f9763ef536a83a2e", "data-invalid": this.invalid ? "" : void 0, "data-disabled": this.disabled ? "" : void 0, "data-required": this.required ? "" : void 0 }, h("slot", { key: "b09be4482299d866a0651393e269299dedb0cbf4" }));
968
1113
  }
969
1114
  };
970
1115
  UIFormField.style = uiFormFieldCss();
@@ -980,7 +1125,7 @@ var uiIconButtonCss, UIIconButton;
980
1125
  var init_ui_icon_button_entry = __esm({
981
1126
  "dist/esm/ui-icon-button.entry.js"() {
982
1127
  init_index_CEeiinfk();
983
- uiIconButtonCss = () => `:host{display:inline-flex;color:var(--ui-text-secondary)}button{appearance:none;inline-size:var(--ui-icon-button-size, 2.5rem);block-size:var(--ui-icon-button-size, 2.5rem);min-inline-size:var(--ui-icon-button-size, 2.5rem);min-block-size:var(--ui-icon-button-size, 2.5rem);padding:0;margin:0;border:1px solid transparent;border-radius:var(--ui-icon-button-radius, var(--ui-radius-2));background:var(--ui-icon-button-bg, transparent);color:inherit;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color var(--ui-motion-fast) var(--ui-motion-ease), border-color var(--ui-motion-fast) var(--ui-motion-ease), color var(--ui-motion-fast) var(--ui-motion-ease), box-shadow var(--ui-motion-fast) var(--ui-motion-ease), transform var(--ui-motion-fast) var(--ui-motion-ease)}:host([size='sm']) button{inline-size:var(--ui-icon-button-size-sm, 2rem);block-size:var(--ui-icon-button-size-sm, 2rem);min-inline-size:var(--ui-icon-button-size-sm, 2rem);min-block-size:var(--ui-icon-button-size-sm, 2rem)}:host([size='lg']) button{inline-size:var(--ui-icon-button-size-lg, 2.75rem);block-size:var(--ui-icon-button-size-lg, 2.75rem);min-inline-size:var(--ui-icon-button-size-lg, 2.75rem);min-block-size:var(--ui-icon-button-size-lg, 2.75rem)}:host([variant='outline']) button{border-color:var(--ui-icon-button-border, var(--ui-border-default));background:var(--ui-icon-button-outline-bg, var(--ui-surface-default));color:var(--ui-icon-button-outline-color, var(--ui-text-primary))}:host([variant='solid']) button{background:var(--ui-icon-button-solid-bg, var(--ui-accent-solid));color:var(--ui-icon-button-solid-color, var(--ui-text-on-accent));box-shadow:var( --ui-icon-button-solid-shadow, 0 1px 2px color-mix(in srgb, var(--ui-accent-solid) 18%, transparent) )}button:hover:enabled{background:var(--ui-icon-button-hover-bg, var(--ui-surface-muted));color:var(--ui-icon-button-hover-color, var(--ui-text-primary))}:host([variant='outline']) button:hover:enabled{border-color:var(--ui-icon-button-hover-border, var(--ui-border-strong))}:host([variant='solid']) button:hover:enabled{background:var(--ui-icon-button-solid-hover-bg, var(--ui-accent-hover))}button:active:enabled{transform:scale(var(--ui-icon-button-active-scale, 0.96))}button:focus-visible{outline:2px solid var(--ui-focus-ring);outline-offset:2px}button:disabled,:host([disabled]){opacity:0.6;cursor:not-allowed}::slotted(svg){inline-size:var(--ui-icon-button-icon-size, 1.125rem);block-size:var(--ui-icon-button-icon-size, 1.125rem);flex-shrink:0;stroke-width:var(--ui-icon-button-icon-stroke-width, 1.75)}`;
1128
+ uiIconButtonCss = () => `:host{display:inline-flex;color:var(--ui-text-secondary)}:host([anticipatory]){position:relative}:host([anticipatory])::before{content:'';position:absolute;inset:50% auto auto 50%;z-index:1;inline-size:var(--ui-affordance-guide-size, 0.25rem);block-size:var(--ui-affordance-guide-size, 0.25rem);border-radius:var(--ui-radius-round, 999px);background:var(--ui-affordance-guide-color, var(--ui-border-strong));opacity:var(--ui-affordance-guide-opacity, 0.42);transform:translate(-50%, -50%);transition:opacity var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease);pointer-events:none}:host([anticipatory]) button{opacity:0;transform:scale(0.72);pointer-events:none}:host([anticipatory][data-ui-proximity='near'])::before,:host([anticipatory]:focus-within)::before,:host([anticipatory]:hover)::before,:host([anticipatory][variant='solid'])::before{opacity:0}:host([anticipatory][data-ui-proximity='near']) button,:host([anticipatory]:focus-within) button,:host([anticipatory]:hover) button,:host([anticipatory][variant='solid']) button{opacity:1;transform:scale(1);pointer-events:auto}button{appearance:none;inline-size:var(--ui-icon-button-size, 2.5rem);block-size:var(--ui-icon-button-size, 2.5rem);min-inline-size:var(--ui-icon-button-size, 2.5rem);min-block-size:var(--ui-icon-button-size, 2.5rem);padding:0;margin:0;border:1px solid transparent;border-radius:var(--ui-icon-button-radius, var(--ui-radius-2));background:var(--ui-icon-button-bg, transparent);color:inherit;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color var(--ui-motion-fast) var(--ui-motion-ease), border-color var(--ui-motion-fast) var(--ui-motion-ease), color var(--ui-motion-fast) var(--ui-motion-ease), box-shadow var(--ui-motion-fast) var(--ui-motion-ease), transform var(--ui-motion-fast) var(--ui-motion-ease)}@media (hover: none), (pointer: coarse){:host([anticipatory])::before{opacity:0}:host([anticipatory]) button{opacity:1;transform:none;pointer-events:auto}}:host([size='sm']) button{inline-size:var(--ui-icon-button-size-sm, 2rem);block-size:var(--ui-icon-button-size-sm, 2rem);min-inline-size:var(--ui-icon-button-size-sm, 2rem);min-block-size:var(--ui-icon-button-size-sm, 2rem)}:host([size='lg']) button{inline-size:var(--ui-icon-button-size-lg, 2.75rem);block-size:var(--ui-icon-button-size-lg, 2.75rem);min-inline-size:var(--ui-icon-button-size-lg, 2.75rem);min-block-size:var(--ui-icon-button-size-lg, 2.75rem)}:host([variant='outline']) button{border-color:var(--ui-icon-button-border, var(--ui-border-default));background:var(--ui-icon-button-outline-bg, var(--ui-surface-default));color:var(--ui-icon-button-outline-color, var(--ui-text-primary))}:host([variant='solid']) button{background:var(--ui-icon-button-solid-bg, var(--ui-accent-solid));color:var(--ui-icon-button-solid-color, var(--ui-text-on-accent));box-shadow:var( --ui-icon-button-solid-shadow, 0 1px 2px color-mix(in srgb, var(--ui-accent-solid) 18%, transparent) )}button:hover:enabled{background:var(--ui-icon-button-hover-bg, var(--ui-surface-muted));color:var(--ui-icon-button-hover-color, var(--ui-text-primary))}:host([variant='outline']) button:hover:enabled{border-color:var(--ui-icon-button-hover-border, var(--ui-border-strong))}:host([variant='solid']) button:hover:enabled{background:var(--ui-icon-button-solid-hover-bg, var(--ui-accent-hover))}button:active:enabled{transform:scale(var(--ui-icon-button-active-scale, 0.96))}button:focus-visible{outline:2px solid var(--ui-focus-ring);outline-offset:2px}button:disabled,:host([disabled]){opacity:0.6;cursor:not-allowed}::slotted(svg){inline-size:var(--ui-icon-button-icon-size, 1.125rem);block-size:var(--ui-icon-button-icon-size, 1.125rem);flex-shrink:0;stroke-width:var(--ui-icon-button-icon-stroke-width, 1.75)}`;
984
1129
  UIIconButton = class {
985
1130
  constructor(hostRef) {
986
1131
  registerInstance(this, hostRef);
@@ -989,8 +1134,10 @@ var init_ui_icon_button_entry = __esm({
989
1134
  label = "";
990
1135
  size = "md";
991
1136
  variant = "ghost";
1137
+ /** Reveals this control through a surrounding ui-affordance-scope. */
1138
+ anticipatory = false;
992
1139
  render() {
993
- return h(Host, { key: "8f4c7271505fa061da954f1e989fc526dc980407", "data-disabled": this.disabled ? "" : void 0 }, h("button", { key: "c56009d4028a557cd6f7f19833b0af6412b90c1c", type: "button", "aria-label": this.label || void 0, disabled: this.disabled }, h("slot", { key: "ac2f201b0fbedb23106f72135ff8c3b6f25fca60" })));
1140
+ return h(Host, { key: "dd6149d96d534a641eedaf808df5348eef48f31f", "data-disabled": this.disabled ? "" : void 0, "data-ui-affordance": this.anticipatory ? "button" : void 0 }, h("button", { key: "3e1b83a3e01b724cb75ddb7243a1e85bd9eb3420", type: "button", "aria-label": this.label || void 0, disabled: this.disabled }, h("slot", { key: "d280293841471ad37f556c73d86de3223e1f98e6" })));
994
1141
  }
995
1142
  };
996
1143
  UIIconButton.style = uiIconButtonCss();
@@ -1078,7 +1225,7 @@ var init_ui_input_entry = __esm({
1078
1225
  });
1079
1226
  };
1080
1227
  render() {
1081
- return h(Host, { key: "73f518c7f12fa483d592041d185498bd91f9bb8b", "data-invalid": this.invalid ? "" : void 0 }, h("slot", { key: "7ef93ef7c5d36ccdfa66cfb4d14f08707e9ea790", ref: (el) => this.slotRef = el }));
1228
+ return h(Host, { key: "2b3b4f6862cf5c5e413aaefb349c53d4e66eb6d0", "data-invalid": this.invalid ? "" : void 0 }, h("slot", { key: "140dc656f13399b8ef05adb6cfa1d9a7e1373c2d", ref: (el) => this.slotRef = el }));
1082
1229
  }
1083
1230
  static get watchers() {
1084
1231
  return {
@@ -1124,7 +1271,7 @@ var init_ui_menu_item_entry = __esm({
1124
1271
  disabled = false;
1125
1272
  value = "";
1126
1273
  render() {
1127
- return h(Host, { key: "485ac24af80b72a751f6fc13a084847ba0f7605e", role: "menuitem", tabIndex: this.disabled ? -1 : 0, "aria-disabled": this.disabled ? "true" : void 0, "data-value": this.value || void 0 }, h("slot", { key: "b2bde48d9b819b0e55fbe00c2939ccd44f63bc15" }));
1274
+ return h(Host, { key: "c0024d4bb84224019121b98a6fec36bfdad00864", role: "menuitem", tabIndex: this.disabled ? -1 : 0, "aria-disabled": this.disabled ? "true" : void 0, "data-value": this.value || void 0 }, h("slot", { key: "00eee7c496dfaf71e8ec158606ebc6641e2ef0d8" }));
1128
1275
  }
1129
1276
  };
1130
1277
  UIMenuItem.style = uiMenuItemCss();
@@ -1213,7 +1360,7 @@ var init_ui_menu_entry = __esm({
1213
1360
  }
1214
1361
  };
1215
1362
  render() {
1216
- return h(Host, { key: "f06ad0f8c09060495757ced2da095817409720b7", role: "menu", "aria-orientation": "vertical", "data-open": this.internalOpen ? "" : void 0 }, h("slot", { key: "d504fd3c33894d0e464b957ce67c75fe8a24899c" }));
1363
+ return h(Host, { key: "5e463cbbce272c6b6132a839b818deef3e39a532", role: "menu", "aria-orientation": "vertical", "data-open": this.internalOpen ? "" : void 0 }, h("slot", { key: "feea6a21d41a7b27a6270814bcf0b3f3ded394a1" }));
1217
1364
  }
1218
1365
  static get watchers() {
1219
1366
  return {
@@ -1309,7 +1456,7 @@ var init_ui_popover_entry = __esm({
1309
1456
  }
1310
1457
  };
1311
1458
  render() {
1312
- return h(Host, { key: "121482cf2fe9ba972ae6b902568389790b9accaa", "data-open": this.internalOpen ? "" : void 0, onKeyDown: this.onKeydown }, h("slot", { key: "095ce0c147ed8c8411114563c9efcb5fe775fcae" }));
1459
+ return h(Host, { key: "67e7f52220db9d997fb11b686d6abcbdf9557a8d", "data-open": this.internalOpen ? "" : void 0, onKeyDown: this.onKeydown }, h("slot", { key: "d7c1fa2ab75994fe0a7dd63f8289754c7754c30f" }));
1313
1460
  }
1314
1461
  static get watchers() {
1315
1462
  return {
@@ -1440,7 +1587,7 @@ var init_ui_radio_group_entry = __esm({
1440
1587
  }
1441
1588
  };
1442
1589
  render() {
1443
- return h(Host, { key: "5182efff607bcf9add3f0981ce2af3a42bd356b8", role: "radiogroup", "aria-orientation": this.orientation, "data-orientation": this.orientation, "data-disabled": this.disabled ? "" : void 0 }, h("slot", { key: "2889bc2abecddf3e7cf81cd54053bdd608559dfc" }));
1590
+ return h(Host, { key: "5410f4adb5d4ca888287150f57de38ab59cc791d", role: "radiogroup", "aria-orientation": this.orientation, "data-orientation": this.orientation, "data-disabled": this.disabled ? "" : void 0 }, h("slot", { key: "d3988acaf5456e89f26d449ccaadaf237c223bbd" }));
1444
1591
  }
1445
1592
  static get watchers() {
1446
1593
  return {
@@ -1534,7 +1681,7 @@ var init_ui_radio_entry = __esm({
1534
1681
  });
1535
1682
  };
1536
1683
  render() {
1537
- return h(Host, { key: "85a3e7f7903c910f6ccbc324ab38bf94ebaf93e0", role: "radio", "aria-checked": String(this.checked), "aria-disabled": String(this.disabled), "data-disabled": this.disabled ? "" : void 0 }, h("slot", { key: "9117391004b9ed10cb4e819a629f66d32661d7d3", ref: (el) => this.slotRef = el }));
1684
+ return h(Host, { key: "e3025fa3ee89c684ab27e7780f11399e1e455eff", role: "radio", "aria-checked": String(this.checked), "aria-disabled": String(this.disabled), "data-disabled": this.disabled ? "" : void 0 }, h("slot", { key: "279fd849b1ea8f2f84e34043a01da710008aba51", ref: (el) => this.slotRef = el }));
1538
1685
  }
1539
1686
  static get watchers() {
1540
1687
  return {
@@ -1605,7 +1752,7 @@ var init_ui_search_result_row_entry = __esm({
1605
1752
  this.hasTrailing = slotHasContent(this.trailingSlot);
1606
1753
  };
1607
1754
  render() {
1608
- return h(Host, { key: "abd055ed3b7a9140f024181377fd6c0e9b270578" }, h("button", { key: "af6758ec890a63d11e11180f3cccfd94112b9804", class: "search-result-row", type: "button", disabled: this.disabled, part: "button" }, h("span", { key: "e7321d522ac45566e836382d525463825c855afc", class: "search-result-row__leading", part: "leading", hidden: !this.hasLeading }, h("slot", { key: "90f578306f8b9c321128f705369531b64d54cca2", name: "leading", ref: (el) => this.leadingSlot = el, onSlotchange: this.syncSlots })), h("span", { key: "37a8ab0b4b19215d1a4c79d92646b18e010be8a0", class: "search-result-row__content", part: "content" }, h("span", { key: "1728598d9e9578cf6f04f13c1691e333b7d5ca25", class: "search-result-row__title", part: "title" }, h("slot", { key: "556b9da285b7e64298527870a970ef8c02e71988", name: "title" })), h("span", { key: "ed47e52ad83968ca763e01ae7d9d3d66d444145a", class: "search-result-row__meta", part: "meta", hidden: !this.hasMeta }, h("slot", { key: "c374d6328951530227892eec688edd60514e7e04", name: "meta", ref: (el) => this.metaSlot = el, onSlotchange: this.syncSlots })), h("span", { key: "17965c7934d9256ce243a1d3a3e880716fcd42e1", class: "search-result-row__excerpt", part: "excerpt", hidden: !this.hasExcerpt }, h("slot", { key: "67cad2d2ea2310944cdf5a7685a1f4e3f537e683", name: "excerpt", ref: (el) => this.excerptSlot = el, onSlotchange: this.syncSlots }))), h("span", { key: "43cb13c90187851fc30cc0c29847658f9f4cb069", class: "search-result-row__trailing", part: "trailing", hidden: !this.hasTrailing }, h("slot", { key: "2b262ad21cb605daea5e4ade8c377a60820a1f11", name: "trailing", ref: (el) => this.trailingSlot = el, onSlotchange: this.syncSlots }))));
1755
+ return h(Host, { key: "4fb3b963d73890850b58d03f225f125066412350" }, h("button", { key: "55332d2d06d279e5c6d39d044cfb89256cffdf69", class: "search-result-row", type: "button", disabled: this.disabled, part: "button" }, h("span", { key: "1c9178595fb6f54ffc4e55b3a7cb5fe7dea94b40", class: "search-result-row__leading", part: "leading", hidden: !this.hasLeading }, h("slot", { key: "239d0a74e80e58f1b25d6b328293d9692a4483b6", name: "leading", ref: (el) => this.leadingSlot = el, onSlotchange: this.syncSlots })), h("span", { key: "f80e39d4002bfa1ae7665857e27d184004654c03", class: "search-result-row__content", part: "content" }, h("span", { key: "b1a1e7f378eee6db5a01949d8a299583556c79c1", class: "search-result-row__title", part: "title" }, h("slot", { key: "4d94ed22c472309e0ece5f7a2a744f400589c87e", name: "title" })), h("span", { key: "3dbc540f67e11cca515208597b7b6bb75e2772f5", class: "search-result-row__meta", part: "meta", hidden: !this.hasMeta }, h("slot", { key: "3ed5c8fd300a19801ac332d2e9516aadb19f664e", name: "meta", ref: (el) => this.metaSlot = el, onSlotchange: this.syncSlots })), h("span", { key: "8403a7e6adc3b1fae04d659bfbf7ff5676ac113a", class: "search-result-row__excerpt", part: "excerpt", hidden: !this.hasExcerpt }, h("slot", { key: "f0b0b07df739f780320394dae9b318f6676e9a94", name: "excerpt", ref: (el) => this.excerptSlot = el, onSlotchange: this.syncSlots }))), h("span", { key: "2ebdf8d2ed7fefd31118052495503659c957d317", class: "search-result-row__trailing", part: "trailing", hidden: !this.hasTrailing }, h("slot", { key: "60dfc20a47fff6aac28755bedb80e9a4b3fd93e0", name: "trailing", ref: (el) => this.trailingSlot = el, onSlotchange: this.syncSlots }))));
1609
1756
  }
1610
1757
  };
1611
1758
  UISearchResultRow.style = uiSearchResultRowCss();
@@ -1649,7 +1796,7 @@ var init_ui_search_shell_entry = __esm({
1649
1796
  this.hasFooter = slotHasContent2(this.footerSlot);
1650
1797
  };
1651
1798
  render() {
1652
- return h("div", { key: "3e8fb4f419a588c441abd5bd137093ba2f730b76", class: "search-shell", part: "base" }, h("slot", { key: "4772932f9e077b0e4f68c50657945f3ea30afb8d", name: "backdrop" }), h("div", { key: "c7877bb3ade588797d8419b3c7efc0680ac32b78", class: "search-shell__panel", part: "panel" }, h("div", { key: "d1e7c16a031896187550181be63a1ca14a04b127", class: "search-shell__search", part: "search" }, h("slot", { key: "b61475159d7e18a623246a2872d4897e1ff8388a", name: "search" })), h("div", { key: "877a9847bb453d026b5e6c117ffa8ad44562195a", class: "search-shell__status", part: "status", hidden: !this.hasStatus }, h("slot", { key: "6b46e668586fa97a30e2d02fc7d46d53483ecdb5", name: "status", ref: (el) => this.statusSlot = el, onSlotchange: this.syncSlots })), h("div", { key: "41622e5fe3b02d8c842a6d07b66119ac68f22bc0", class: "search-shell__body", part: "body" }, h("slot", { key: "f36dc433657d95bb7afa1191351bbbbeaed4f6ed", name: "body" })), h("div", { key: "bcbf35d5e37c0fe48b29dde935745ea792722646", class: "search-shell__footer", part: "footer", hidden: !this.hasFooter }, h("slot", { key: "02f99e3442476dbefc57b3a38dc5a4ad0f3e9f00", name: "footer", ref: (el) => this.footerSlot = el, onSlotchange: this.syncSlots }))));
1799
+ return h("div", { key: "946e3575a3b48f83315a5299d144a10647c31189", class: "search-shell", part: "base" }, h("slot", { key: "6146d441648a9cafca12b764e94373252b3940be", name: "backdrop" }), h("div", { key: "e4389c8f39994209e1f8dc4dbf913e3728295545", class: "search-shell__panel", part: "panel" }, h("div", { key: "8c660767d3ac12e1d94086bb80bb459e2f45d173", class: "search-shell__search", part: "search" }, h("slot", { key: "c870a4266f689654c76a1fc9e2bc23bf690a931c", name: "search" })), h("div", { key: "b5a68d509a92fec24603008514e938ba27655f4d", class: "search-shell__status", part: "status", hidden: !this.hasStatus }, h("slot", { key: "bc3233c23289cb56ca8d4217c9b3c37df9570abc", name: "status", ref: (el) => this.statusSlot = el, onSlotchange: this.syncSlots })), h("div", { key: "291b357ed1c7949001952813c950fbaab24cd0fc", class: "search-shell__body", part: "body" }, h("slot", { key: "72ecf55e7267cef21e612c1aff840fef67442fb5", name: "body" })), h("div", { key: "e393d0cc4bd0bbbf349a135d9f352ec08bd523cb", class: "search-shell__footer", part: "footer", hidden: !this.hasFooter }, h("slot", { key: "2468bdafc67f01094a4461a1a1e2fd474a88ffcf", name: "footer", ref: (el) => this.footerSlot = el, onSlotchange: this.syncSlots }))));
1653
1800
  }
1654
1801
  };
1655
1802
  UISearchShell.style = uiSearchShellCss();
@@ -1736,7 +1883,7 @@ var init_ui_select_entry = __esm({
1736
1883
  });
1737
1884
  };
1738
1885
  render() {
1739
- return h(Host, { key: "eebea3f7fafafba901e5bd33cbd711565feb251e", "data-invalid": this.invalid ? "" : void 0 }, h("slot", { key: "bbb49202d8298fac0912accb3848c8450cab00c9", ref: (el) => this.slotRef = el }));
1886
+ return h(Host, { key: "65420b700d6a80e3575efa25d72ccbf4b0398805", "data-invalid": this.invalid ? "" : void 0 }, h("slot", { key: "fa6b175770fcbf9ec904a528f0d41aa04f4e9c01", ref: (el) => this.slotRef = el }));
1740
1887
  }
1741
1888
  static get watchers() {
1742
1889
  return {
@@ -1818,14 +1965,14 @@ var init_ui_switch_entry = __esm({
1818
1965
  this.toggle("pointer");
1819
1966
  };
1820
1967
  render() {
1821
- return h(Host, { key: "d4e39c8865afa98414dbedcbbff5bdeeef7f4478", role: "switch", "aria-checked": String(this.internalChecked), "aria-disabled": String(this.disabled), "data-disabled": this.disabled ? "" : void 0, tabIndex: this.disabled ? -1 : 0, onKeyDown: this.onKeydown, onClick: this.onClick }, h("input", { key: "498774428224b9d09a8657924d4d8b6a2196fddf", type: "checkbox", checked: this.internalChecked, disabled: this.disabled, required: this.required, value: this.value, "aria-hidden": "true", tabIndex: -1, onChange: (e) => {
1968
+ return h(Host, { key: "7dccbc5d5b97f5659decd5feda31b37e42e6f83e", role: "switch", "aria-checked": String(this.internalChecked), "aria-disabled": String(this.disabled), "data-disabled": this.disabled ? "" : void 0, tabIndex: this.disabled ? -1 : 0, onKeyDown: this.onKeydown, onClick: this.onClick }, h("input", { key: "7841f4d20a50d1899c27ab232a9a34411a0c2d67", type: "checkbox", checked: this.internalChecked, disabled: this.disabled, required: this.required, value: this.value, "aria-hidden": "true", tabIndex: -1, onChange: (e) => {
1822
1969
  this.internalChecked = e.target.checked;
1823
1970
  dispatchDetail(this.host, "change", {
1824
1971
  checked: this.internalChecked,
1825
1972
  value: this.value,
1826
1973
  trigger: "pointer"
1827
1974
  });
1828
- } }), h("slot", { key: "b8f8c3947a9dd058e12270b9afdfe2a654164987" }));
1975
+ } }), h("slot", { key: "f3c2f5758e73f2a81f4a7ea4da734de0cb9a61c6" }));
1829
1976
  }
1830
1977
  static get watchers() {
1831
1978
  return {
@@ -1941,7 +2088,7 @@ var init_ui_tabs_entry = __esm({
1941
2088
  }
1942
2089
  };
1943
2090
  render() {
1944
- return h(Host, { key: "d73e97facf3ffa020f349642bc6c0136f39fc463", orientation: this.orientation, "data-orientation": this.orientation }, h("slot", { key: "a7bd47a4b48780ddf1f21a917fd1cb747376640b" }));
2091
+ return h(Host, { key: "99cd907204f73b1cbb1c8f2a182743c6554d5b0a", orientation: this.orientation, "data-orientation": this.orientation }, h("slot", { key: "a8158e593a3708e8819761d86356a58535a53e40" }));
1945
2092
  }
1946
2093
  static get watchers() {
1947
2094
  return {
@@ -2044,7 +2191,7 @@ var init_ui_textarea_entry = __esm({
2044
2191
  });
2045
2192
  };
2046
2193
  render() {
2047
- return h(Host, { key: "d52719875939fa9b2f757a35fb4cd1aa31a194c5", "data-invalid": this.invalid ? "" : void 0 }, h("slot", { key: "e40ba71b60cae07437219d6ab4b5879b26af1ac2", ref: (el) => this.slotRef = el }));
2194
+ return h(Host, { key: "697c98bf66c016b21b28c7805eee2223bb9d275a", "data-invalid": this.invalid ? "" : void 0 }, h("slot", { key: "bd95bd79b1fe4e4103510a3cb036419c55976611", ref: (el) => this.slotRef = el }));
2048
2195
  }
2049
2196
  static get watchers() {
2050
2197
  return {
@@ -2138,7 +2285,7 @@ var init_ui_toast_region_entry = __esm({
2138
2285
  }
2139
2286
  };
2140
2287
  render() {
2141
- return h(Host, { key: "8e99577d8770984b8d6d29e442931570c1f1bc4d", role: "region", "aria-label": "Notifications", "data-open": this.internalOpen ? "" : void 0 }, h("slot", { key: "06f2c6cf39c4795afc0937669aa2104821aef3d6" }));
2288
+ return h(Host, { key: "0edcce54864ba991b092d004d3b45cf697b9c3ac", role: "region", "aria-label": "Notifications", "data-open": this.internalOpen ? "" : void 0 }, h("slot", { key: "2e30794a05b018fb55c4313c8e17f7262ecee7da" }));
2142
2289
  }
2143
2290
  static get watchers() {
2144
2291
  return {
@@ -2275,7 +2422,7 @@ var init_ui_tooltip_entry = __esm({
2275
2422
  }
2276
2423
  };
2277
2424
  render() {
2278
- return h(Host, { key: "900ec6fc08ea7a7965195e8203fd779e70cfa6e6", role: "tooltip", hidden: !this.internalOpen, "data-open": this.internalOpen ? "" : void 0, onKeyDown: this.onKeydown }, h("slot", { key: "b384f779fa9a229cf635be5adb3476ca93270c24" }));
2425
+ return h(Host, { key: "64b5f4e7a56cbf5560edc6d7118022a49d5e2786", role: "tooltip", hidden: !this.internalOpen, "data-open": this.internalOpen ? "" : void 0, onKeyDown: this.onKeydown }, h("slot", { key: "cf6f96689021a42a01b782f0e1d0730b5a9aa1f8" }));
2279
2426
  }
2280
2427
  static get watchers() {
2281
2428
  return {
@@ -2335,7 +2482,7 @@ var init_ui_top_bar_entry = __esm({
2335
2482
  this.hasActions = slotHasContent3(this.actionsSlot);
2336
2483
  };
2337
2484
  render() {
2338
- return h(Host, { key: "23cbff2fdb06a40f0380dbf217d064cb1b9f7a9c" }, h("header", { key: "9472960f4445f8ed7d0800d71db3cbac020fca3f", class: "top-bar", part: "base" }, h("div", { key: "d408be025d90fdcf1416213b9e76f3b780f47d97", class: "top-bar__leading", hidden: !this.hasLeading }, h("slot", { key: "3dc4db316a040ff10a8b8b218b42799d3e1a7b97", name: "leading", ref: (el) => this.leadingSlot = el, onSlotchange: this.syncSlots })), h("div", { key: "1b362f19f9a738600afb266e9641c0ee5c8870c9", class: "top-bar__title" }, h("slot", { key: "bb93d34a3dea15c697dcd19dc0ecc3488ee390c8" })), h("div", { key: "3d61d781b654ee1d91a6ce5ba64db9732ee1f8ee", class: "top-bar__search", hidden: !this.hasSearch }, h("slot", { key: "5731817be644f10ed745fdc0868b85b66a9c06d4", name: "search", ref: (el) => this.searchSlot = el, onSlotchange: this.syncSlots })), h("div", { key: "2ee868b93f5195832830900382545b2131e78bb8", class: "top-bar__actions", hidden: !this.hasActions }, h("slot", { key: "1d410fa60f112904cfb866cff5a3f2fb18021c93", name: "actions", ref: (el) => this.actionsSlot = el, onSlotchange: this.syncSlots }))));
2485
+ return h(Host, { key: "15c840c082724df0ec39ab6ad4e55f99192df5be" }, h("header", { key: "790afaeecdb3e598b8365391f57ee1e2d8ca69a2", class: "top-bar", part: "base" }, h("div", { key: "fab822f5875c7e3b8e267be42c075597d79374fa", class: "top-bar__leading", hidden: !this.hasLeading }, h("slot", { key: "0723013c4b674964e4029442b715daa9eb0036db", name: "leading", ref: (el) => this.leadingSlot = el, onSlotchange: this.syncSlots })), h("div", { key: "77fc006257b7fa6a191191d9969ea66445b8bc3e", class: "top-bar__title" }, h("slot", { key: "e8a07f1f767c1c0fa1244abcf3bb0e697e36a4fe" })), h("div", { key: "bde5cdf797ae898f68eddeab362b8395f89bdf28", class: "top-bar__search", hidden: !this.hasSearch }, h("slot", { key: "8b059d6123e94f3b7e18c15c88828ee9c6436136", name: "search", ref: (el) => this.searchSlot = el, onSlotchange: this.syncSlots })), h("div", { key: "c262446cf29873903530ea3f840de4de9db3de82", class: "top-bar__actions", hidden: !this.hasActions }, h("slot", { key: "f417dbc8cc0115a455a72ce0feb5f32b323ce68f", name: "actions", ref: (el) => this.actionsSlot = el, onSlotchange: this.syncSlots }))));
2339
2486
  }
2340
2487
  };
2341
2488
  UITopBar.style = uiTopBarCss();
@@ -2347,6 +2494,7 @@ var globImport_entry_js;
2347
2494
  var init_ = __esm({
2348
2495
  'import("./**/*.entry.js") in dist/esm/index-CEeiinfk.js'() {
2349
2496
  globImport_entry_js = __glob({
2497
+ "./ui-affordance-scope.entry.js": () => Promise.resolve().then(() => (init_ui_affordance_scope_entry(), ui_affordance_scope_entry_exports)),
2350
2498
  "./ui-avatar-group.entry.js": () => Promise.resolve().then(() => (init_ui_avatar_group_entry(), ui_avatar_group_entry_exports)),
2351
2499
  "./ui-avatar.entry.js": () => Promise.resolve().then(() => (init_ui_avatar_entry(), ui_avatar_entry_exports)),
2352
2500
  "./ui-badge.entry.js": () => Promise.resolve().then(() => (init_ui_badge_entry(), ui_badge_entry_exports)),
@@ -3922,8 +4070,12 @@ var init_index_CEeiinfk = __esm({
3922
4070
  // index.ts
3923
4071
  var index_exports = {};
3924
4072
  __export(index_exports, {
4073
+ clampRectToViewport: () => clampRectToViewport,
3925
4074
  closeOverlay: () => closeOverlay2,
4075
+ createProximityCoordinator: () => createProximityCoordinator2,
4076
+ distanceFromPointToRect: () => distanceFromPointToRect2,
3926
4077
  getTopOverlay: () => getTopOverlay2,
4078
+ getVisualViewportRect: () => getVisualViewportRect,
3927
4079
  isTopOverlay: () => isTopOverlay,
3928
4080
  openOverlay: () => openOverlay2,
3929
4081
  requestTopOverlayClose: () => requestTopOverlayClose2
@@ -3942,7 +4094,7 @@ var globalScripts = () => {
3942
4094
  var defineCustomElements = async (win2, options) => {
3943
4095
  if (typeof window === "undefined") return void 0;
3944
4096
  await globalScripts();
3945
- return bootstrapLazy([["ui-context-menu", [[769, "ui-context-menu", { "open": [4], "defaultOpen": [4, "default-open"], "for": [1], "internalOpen": [32] }, null, { "open": [{ "syncFromProp": 0 }], "for": [{ "syncTarget": 0 }], "internalOpen": [{ "syncOverlay": 0 }] }]]], ["ui-avatar", [[513, "ui-avatar", { "src": [1], "alt": [1], "name": [1], "fallback": [1], "hasImage": [32] }, null, { "src": [{ "watchSrc": 0 }] }]]], ["ui-avatar-group", [[769, "ui-avatar-group", { "max": [2], "label": [1], "overflowCount": [32] }, null, { "max": [{ "syncOverflow": 0 }] }]]], ["ui-badge", [[769, "ui-badge", { "variant": [1], "tone": [1] }]]], ["ui-button", [[769, "ui-button", { "variant": [1], "size": [1], "disabled": [4] }, null, { "variant": [{ "syncToButton": 0 }], "size": [{ "syncToButton": 0 }], "disabled": [{ "syncToButton": 0 }] }]]], ["ui-checkbox", [[769, "ui-checkbox", { "checked": [4], "defaultChecked": [4, "default-checked"], "disabled": [4], "indeterminate": [4], "required": [4], "value": [1], "internalChecked": [32] }, null, { "checked": [{ "syncFromProp": 0 }], "internalChecked": [{ "syncToInput": 0 }], "indeterminate": [{ "syncToInput": 0 }], "disabled": [{ "syncToInput": 0 }], "required": [{ "syncToInput": 0 }] }]]], ["ui-dialog", [[769, "ui-dialog", { "open": [4], "defaultOpen": [4, "default-open"], "modal": [4], "dismissible": [4], "label": [1], "internalOpen": [32] }, null, { "open": [{ "syncFromProp": 0 }], "internalOpen": [{ "syncOpen": 0 }] }]]], ["ui-disclosure", [[769, "ui-disclosure", { "open": [4], "defaultOpen": [4, "default-open"], "disabled": [4], "internalOpen": [32], "contentId": [32] }, null, { "open": [{ "syncFromProp": 0 }], "internalOpen": [{ "syncState": 0 }] }]]], ["ui-floating-action-button", [[769, "ui-floating-action-button", { "disabled": [516], "mobileOnly": [516, "mobile-only"], "label": [1] }]]], ["ui-form-field", [[769, "ui-form-field", { "invalid": [4], "disabled": [4], "required": [4] }]]], ["ui-icon-button", [[769, "ui-icon-button", { "disabled": [516], "label": [1], "size": [513], "variant": [513] }]]], ["ui-input", [[769, "ui-input", { "value": [1], "defaultValue": [1, "default-value"], "disabled": [4], "invalid": [4], "readOnly": [4, "readonly"], "internalValue": [32] }, null, { "value": [{ "syncFromProp": 0 }], "internalValue": [{ "syncToInput": 0 }], "defaultValue": [{ "syncToInput": 0 }], "disabled": [{ "syncToInput": 0 }], "invalid": [{ "syncToInput": 0 }], "readOnly": [{ "syncToInput": 0 }] }]]], ["ui-menu-item", [[769, "ui-menu-item", { "disabled": [516], "value": [1] }]]], ["ui-popover", [[769, "ui-popover", { "open": [4], "defaultOpen": [4, "default-open"], "internalOpen": [32] }, null, { "open": [{ "syncFromProp": 0 }], "internalOpen": [{ "onOpenChange": 0 }] }]]], ["ui-radio", [[769, "ui-radio", { "checked": [4], "defaultChecked": [4, "default-checked"], "disabled": [4], "name": [1], "required": [4], "value": [1] }, null, { "checked": [{ "syncToInput": 0 }], "disabled": [{ "syncToInput": 0 }], "name": [{ "syncToInput": 0 }], "required": [{ "syncToInput": 0 }], "value": [{ "syncToInput": 0 }] }]]], ["ui-radio-group", [[769, "ui-radio-group", { "value": [1], "name": [1], "orientation": [1], "disabled": [4], "required": [4], "internalValue": [32] }, null, { "value": [{ "syncFromProp": 0 }], "internalValue": [{ "syncToRadios": 0 }], "name": [{ "syncToRadios": 0 }], "orientation": [{ "syncToRadios": 0 }], "disabled": [{ "syncToRadios": 0 }] }]]], ["ui-search-result-row", [[769, "ui-search-result-row", { "disabled": [516], "selected": [516], "hasLeading": [32], "hasMeta": [32], "hasExcerpt": [32], "hasTrailing": [32] }]]], ["ui-search-shell", [[769, "ui-search-shell", { "hasStatus": [32], "hasFooter": [32] }]]], ["ui-select", [[769, "ui-select", { "value": [1], "defaultValue": [1, "default-value"], "disabled": [4], "invalid": [4], "required": [4], "internalValue": [32] }, null, { "value": [{ "syncFromProp": 0 }], "internalValue": [{ "syncToSelect": 0 }], "defaultValue": [{ "syncToSelect": 0 }], "disabled": [{ "syncToSelect": 0 }], "invalid": [{ "syncToSelect": 0 }], "required": [{ "syncToSelect": 0 }] }]]], ["ui-switch", [[769, "ui-switch", { "checked": [4], "defaultChecked": [4, "default-checked"], "disabled": [4], "required": [4], "value": [1], "internalChecked": [32] }, null, { "checked": [{ "syncFromProp": 0 }] }]]], ["ui-tabs", [[769, "ui-tabs", { "value": [1], "defaultValue": [1, "default-value"], "orientation": [1], "internalValue": [32] }, null, { "value": [{ "syncFromProp": 0 }], "internalValue": [{ "syncState": 0 }], "orientation": [{ "syncState": 0 }] }]]], ["ui-textarea", [[769, "ui-textarea", { "value": [1], "defaultValue": [1, "default-value"], "disabled": [4], "invalid": [4], "readOnly": [4, "readonly"], "rows": [2], "internalValue": [32] }, null, { "value": [{ "syncFromProp": 0 }], "internalValue": [{ "syncToTextarea": 0 }], "defaultValue": [{ "syncToTextarea": 0 }], "disabled": [{ "syncToTextarea": 0 }], "invalid": [{ "syncToTextarea": 0 }], "readOnly": [{ "syncToTextarea": 0 }], "rows": [{ "syncToTextarea": 0 }] }]]], ["ui-toast-region", [[769, "ui-toast-region", { "open": [4], "internalOpen": [32] }, null, { "open": [{ "syncFromProp": 0 }] }]]], ["ui-tooltip", [[769, "ui-tooltip", { "for": [1], "open": [4], "defaultOpen": [4, "default-open"], "internalOpen": [32] }, null, { "open": [{ "syncFromProp": 0 }], "internalOpen": [{ "syncOverlay": 0 }] }]]], ["ui-top-bar", [[769, "ui-top-bar", { "hasLeading": [32], "hasSearch": [32], "hasActions": [32] }]]], ["ui-menu", [[769, "ui-menu", { "open": [4], "defaultOpen": [4, "default-open"], "internalOpen": [32] }, null, { "open": [{ "syncFromProp": 0 }] }]]]], options);
4097
+ return bootstrapLazy([["ui-context-menu", [[769, "ui-context-menu", { "open": [4], "defaultOpen": [4, "default-open"], "for": [1], "internalOpen": [32] }, null, { "open": [{ "syncFromProp": 0 }], "for": [{ "syncTarget": 0 }], "internalOpen": [{ "syncOverlay": 0 }] }]]], ["ui-affordance-scope", [[769, "ui-affordance-scope", { "nearRadius": [514, "near-radius"] }, null, { "nearRadius": [{ "connectCoordinator": 0 }] }]]], ["ui-avatar", [[513, "ui-avatar", { "src": [1], "alt": [1], "name": [1], "fallback": [1], "hasImage": [32] }, null, { "src": [{ "watchSrc": 0 }] }]]], ["ui-avatar-group", [[769, "ui-avatar-group", { "max": [2], "label": [1], "overflowCount": [32] }, null, { "max": [{ "syncOverflow": 0 }] }]]], ["ui-badge", [[769, "ui-badge", { "variant": [1], "tone": [1] }]]], ["ui-button", [[769, "ui-button", { "variant": [1], "size": [1], "disabled": [4] }, null, { "variant": [{ "syncToButton": 0 }], "size": [{ "syncToButton": 0 }], "disabled": [{ "syncToButton": 0 }] }]]], ["ui-checkbox", [[769, "ui-checkbox", { "checked": [4], "defaultChecked": [4, "default-checked"], "disabled": [4], "indeterminate": [4], "required": [4], "value": [1], "internalChecked": [32] }, null, { "checked": [{ "syncFromProp": 0 }], "internalChecked": [{ "syncToInput": 0 }], "indeterminate": [{ "syncToInput": 0 }], "disabled": [{ "syncToInput": 0 }], "required": [{ "syncToInput": 0 }] }]]], ["ui-dialog", [[769, "ui-dialog", { "open": [4], "defaultOpen": [4, "default-open"], "modal": [4], "dismissible": [4], "label": [1], "internalOpen": [32] }, null, { "open": [{ "syncFromProp": 0 }], "internalOpen": [{ "syncOpen": 0 }] }]]], ["ui-disclosure", [[769, "ui-disclosure", { "open": [4], "defaultOpen": [4, "default-open"], "disabled": [4], "internalOpen": [32], "contentId": [32] }, null, { "open": [{ "syncFromProp": 0 }], "internalOpen": [{ "syncState": 0 }] }]]], ["ui-floating-action-button", [[769, "ui-floating-action-button", { "disabled": [516], "mobileOnly": [516, "mobile-only"], "label": [1] }]]], ["ui-form-field", [[769, "ui-form-field", { "invalid": [4], "disabled": [4], "required": [4] }]]], ["ui-icon-button", [[769, "ui-icon-button", { "disabled": [516], "label": [1], "size": [513], "variant": [513], "anticipatory": [516] }]]], ["ui-input", [[769, "ui-input", { "value": [1], "defaultValue": [1, "default-value"], "disabled": [4], "invalid": [4], "readOnly": [4, "readonly"], "internalValue": [32] }, null, { "value": [{ "syncFromProp": 0 }], "internalValue": [{ "syncToInput": 0 }], "defaultValue": [{ "syncToInput": 0 }], "disabled": [{ "syncToInput": 0 }], "invalid": [{ "syncToInput": 0 }], "readOnly": [{ "syncToInput": 0 }] }]]], ["ui-menu-item", [[769, "ui-menu-item", { "disabled": [516], "value": [1] }]]], ["ui-popover", [[769, "ui-popover", { "open": [4], "defaultOpen": [4, "default-open"], "internalOpen": [32] }, null, { "open": [{ "syncFromProp": 0 }], "internalOpen": [{ "onOpenChange": 0 }] }]]], ["ui-radio", [[769, "ui-radio", { "checked": [4], "defaultChecked": [4, "default-checked"], "disabled": [4], "name": [1], "required": [4], "value": [1] }, null, { "checked": [{ "syncToInput": 0 }], "disabled": [{ "syncToInput": 0 }], "name": [{ "syncToInput": 0 }], "required": [{ "syncToInput": 0 }], "value": [{ "syncToInput": 0 }] }]]], ["ui-radio-group", [[769, "ui-radio-group", { "value": [1], "name": [1], "orientation": [1], "disabled": [4], "required": [4], "internalValue": [32] }, null, { "value": [{ "syncFromProp": 0 }], "internalValue": [{ "syncToRadios": 0 }], "name": [{ "syncToRadios": 0 }], "orientation": [{ "syncToRadios": 0 }], "disabled": [{ "syncToRadios": 0 }] }]]], ["ui-search-result-row", [[769, "ui-search-result-row", { "disabled": [516], "selected": [516], "hasLeading": [32], "hasMeta": [32], "hasExcerpt": [32], "hasTrailing": [32] }]]], ["ui-search-shell", [[769, "ui-search-shell", { "hasStatus": [32], "hasFooter": [32] }]]], ["ui-select", [[769, "ui-select", { "value": [1], "defaultValue": [1, "default-value"], "disabled": [4], "invalid": [4], "required": [4], "internalValue": [32] }, null, { "value": [{ "syncFromProp": 0 }], "internalValue": [{ "syncToSelect": 0 }], "defaultValue": [{ "syncToSelect": 0 }], "disabled": [{ "syncToSelect": 0 }], "invalid": [{ "syncToSelect": 0 }], "required": [{ "syncToSelect": 0 }] }]]], ["ui-switch", [[769, "ui-switch", { "checked": [4], "defaultChecked": [4, "default-checked"], "disabled": [4], "required": [4], "value": [1], "internalChecked": [32] }, null, { "checked": [{ "syncFromProp": 0 }] }]]], ["ui-tabs", [[769, "ui-tabs", { "value": [1], "defaultValue": [1, "default-value"], "orientation": [1], "internalValue": [32] }, null, { "value": [{ "syncFromProp": 0 }], "internalValue": [{ "syncState": 0 }], "orientation": [{ "syncState": 0 }] }]]], ["ui-textarea", [[769, "ui-textarea", { "value": [1], "defaultValue": [1, "default-value"], "disabled": [4], "invalid": [4], "readOnly": [4, "readonly"], "rows": [2], "internalValue": [32] }, null, { "value": [{ "syncFromProp": 0 }], "internalValue": [{ "syncToTextarea": 0 }], "defaultValue": [{ "syncToTextarea": 0 }], "disabled": [{ "syncToTextarea": 0 }], "invalid": [{ "syncToTextarea": 0 }], "readOnly": [{ "syncToTextarea": 0 }], "rows": [{ "syncToTextarea": 0 }] }]]], ["ui-toast-region", [[769, "ui-toast-region", { "open": [4], "internalOpen": [32] }, null, { "open": [{ "syncFromProp": 0 }] }]]], ["ui-tooltip", [[769, "ui-tooltip", { "for": [1], "open": [4], "defaultOpen": [4, "default-open"], "internalOpen": [32] }, null, { "open": [{ "syncFromProp": 0 }], "internalOpen": [{ "syncOverlay": 0 }] }]]], ["ui-top-bar", [[769, "ui-top-bar", { "hasLeading": [32], "hasSearch": [32], "hasActions": [32] }]]], ["ui-menu", [[769, "ui-menu", { "open": [4], "defaultOpen": [4, "default-open"], "internalOpen": [32] }, null, { "open": [{ "syncFromProp": 0 }] }]]]], options);
3946
4098
  };
3947
4099
 
3948
4100
  // loader/index.js
@@ -4050,12 +4202,137 @@ function requestTopOverlayClose2(reason, trigger) {
4050
4202
  return true;
4051
4203
  }
4052
4204
 
4205
+ // src/overlay/positioning.ts
4206
+ function getVisualViewportRect(owner = window) {
4207
+ const viewport = owner.visualViewport;
4208
+ const left = viewport?.offsetLeft ?? 0;
4209
+ const top = viewport?.offsetTop ?? 0;
4210
+ const width = viewport?.width ?? owner.innerWidth;
4211
+ const height = viewport?.height ?? owner.innerHeight;
4212
+ return {
4213
+ left,
4214
+ top,
4215
+ right: left + width,
4216
+ bottom: top + height,
4217
+ width,
4218
+ height
4219
+ };
4220
+ }
4221
+ function clampRectToViewport(rect, viewport = getVisualViewportRect(), gutter = 0) {
4222
+ const availableWidth = Math.max(0, viewport.width - gutter * 2);
4223
+ const availableHeight = Math.max(0, viewport.height - gutter * 2);
4224
+ const targetLeft = rect.width > availableWidth ? viewport.left + gutter : Math.min(
4225
+ Math.max(rect.left, viewport.left + gutter),
4226
+ viewport.right - gutter - rect.width
4227
+ );
4228
+ const targetTop = rect.height > availableHeight ? viewport.top + gutter : Math.min(
4229
+ Math.max(rect.top, viewport.top + gutter),
4230
+ viewport.bottom - gutter - rect.height
4231
+ );
4232
+ return { x: targetLeft - rect.left, y: targetTop - rect.top };
4233
+ }
4234
+ function distanceFromPointToRect2(point, rect) {
4235
+ const dx = Math.max(rect.left - point.x, 0, point.x - rect.right);
4236
+ const dy = Math.max(rect.top - point.y, 0, point.y - rect.bottom);
4237
+ return Math.hypot(dx, dy);
4238
+ }
4239
+ function createProximityCoordinator2(scope, options = {}) {
4240
+ const owner = scope.ownerDocument.defaultView ?? window;
4241
+ const pointerTarget = options.pointerTarget ?? scope;
4242
+ const anchorSelector = options.anchorSelector ?? "[data-ui-affordance]";
4243
+ const configuredRadius = options.nearRadius ?? 32;
4244
+ const nearRadius = Number.isFinite(configuredRadius) ? Math.max(0, configuredRadius) : 32;
4245
+ const abort = new AbortController();
4246
+ let anchors = [];
4247
+ let frame = null;
4248
+ let point = null;
4249
+ let geometryDirty = false;
4250
+ const clear = () => {
4251
+ for (const { element } of anchors) {
4252
+ if (element.hasAttribute("data-ui-proximity")) {
4253
+ element.removeAttribute("data-ui-proximity");
4254
+ }
4255
+ }
4256
+ if (scope.hasAttribute("data-ui-interaction")) {
4257
+ scope.removeAttribute("data-ui-interaction");
4258
+ }
4259
+ };
4260
+ const measure = () => {
4261
+ anchors = Array.from(scope.querySelectorAll(anchorSelector)).filter((element) => !element.hasAttribute("disabled") && element.getAttribute("aria-disabled") !== "true").map((element) => ({ element, rect: element.getBoundingClientRect() }));
4262
+ geometryDirty = false;
4263
+ };
4264
+ const update = () => {
4265
+ frame = null;
4266
+ if (geometryDirty) measure();
4267
+ if (!point) {
4268
+ clear();
4269
+ return;
4270
+ }
4271
+ let engaged = false;
4272
+ for (const anchor of anchors) {
4273
+ const near = distanceFromPointToRect2(point, anchor.rect) <= nearRadius;
4274
+ if (near && anchor.element.getAttribute("data-ui-proximity") !== "near") {
4275
+ anchor.element.setAttribute("data-ui-proximity", "near");
4276
+ } else if (!near && anchor.element.hasAttribute("data-ui-proximity")) {
4277
+ anchor.element.removeAttribute("data-ui-proximity");
4278
+ }
4279
+ engaged ||= near;
4280
+ }
4281
+ if (engaged && scope.getAttribute("data-ui-interaction") !== "engaged") {
4282
+ scope.setAttribute("data-ui-interaction", "engaged");
4283
+ } else if (!engaged && scope.hasAttribute("data-ui-interaction")) {
4284
+ scope.removeAttribute("data-ui-interaction");
4285
+ }
4286
+ };
4287
+ const schedule = () => {
4288
+ if (frame !== null) return;
4289
+ frame = owner.requestAnimationFrame(update);
4290
+ };
4291
+ const onPointerMove = (event) => {
4292
+ const pointer = event;
4293
+ if (pointer.pointerType === "touch") {
4294
+ point = null;
4295
+ } else {
4296
+ point = { x: pointer.clientX, y: pointer.clientY };
4297
+ }
4298
+ schedule();
4299
+ };
4300
+ const invalidate = () => {
4301
+ geometryDirty = true;
4302
+ schedule();
4303
+ };
4304
+ pointerTarget.addEventListener("pointermove", onPointerMove, {
4305
+ passive: true,
4306
+ signal: abort.signal
4307
+ });
4308
+ owner.addEventListener("resize", invalidate, { passive: true, signal: abort.signal });
4309
+ owner.addEventListener("scroll", invalidate, { passive: true, capture: true, signal: abort.signal });
4310
+ owner.visualViewport?.addEventListener("resize", invalidate, { passive: true, signal: abort.signal });
4311
+ owner.visualViewport?.addEventListener("scroll", invalidate, { passive: true, signal: abort.signal });
4312
+ measure();
4313
+ return {
4314
+ refresh: invalidate,
4315
+ destroy() {
4316
+ abort.abort();
4317
+ if (frame !== null) owner.cancelAnimationFrame(frame);
4318
+ frame = null;
4319
+ point = null;
4320
+ clear();
4321
+ anchors = [];
4322
+ }
4323
+ };
4324
+ }
4325
+
4053
4326
  // index.ts
4054
4327
  defineCustomElements();
4055
4328
  // Annotate the CommonJS export names for ESM import in node:
4056
4329
  0 && (module.exports = {
4330
+ clampRectToViewport,
4057
4331
  closeOverlay,
4332
+ createProximityCoordinator,
4333
+ distanceFromPointToRect,
4058
4334
  getTopOverlay,
4335
+ getVisualViewportRect,
4059
4336
  isTopOverlay,
4060
4337
  openOverlay,
4061
4338
  requestTopOverlayClose