@weave-framework/ui 0.2.107

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 (384) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +17 -0
  3. package/dist/autocomplete/autocomplete.d.ts +86 -0
  4. package/dist/autocomplete/autocomplete.d.ts.map +1 -0
  5. package/dist/autocomplete/autocomplete.js +263 -0
  6. package/dist/autocomplete/autocomplete.js.map +1 -0
  7. package/dist/badge/badge.d.ts +39 -0
  8. package/dist/badge/badge.d.ts.map +1 -0
  9. package/dist/badge/badge.js +59 -0
  10. package/dist/badge/badge.js.map +1 -0
  11. package/dist/bottom-sheet/bottom-sheet.d.ts +21 -0
  12. package/dist/bottom-sheet/bottom-sheet.d.ts.map +1 -0
  13. package/dist/bottom-sheet/bottom-sheet.js +82 -0
  14. package/dist/bottom-sheet/bottom-sheet.js.map +1 -0
  15. package/dist/button/button.d.ts +47 -0
  16. package/dist/button/button.d.ts.map +1 -0
  17. package/dist/button/button.js +47 -0
  18. package/dist/button/button.js.map +1 -0
  19. package/dist/button-toggle/button-toggle.d.ts +65 -0
  20. package/dist/button-toggle/button-toggle.d.ts.map +1 -0
  21. package/dist/button-toggle/button-toggle.js +127 -0
  22. package/dist/button-toggle/button-toggle.js.map +1 -0
  23. package/dist/card/card.d.ts +30 -0
  24. package/dist/card/card.d.ts.map +1 -0
  25. package/dist/card/card.js +32 -0
  26. package/dist/card/card.js.map +1 -0
  27. package/dist/cdk/bidi.d.ts +19 -0
  28. package/dist/cdk/bidi.d.ts.map +1 -0
  29. package/dist/cdk/bidi.js +32 -0
  30. package/dist/cdk/bidi.js.map +1 -0
  31. package/dist/cdk/breakpoints.d.ts +21 -0
  32. package/dist/cdk/breakpoints.d.ts.map +1 -0
  33. package/dist/cdk/breakpoints.js +39 -0
  34. package/dist/cdk/breakpoints.js.map +1 -0
  35. package/dist/cdk/clipboard.d.ts +8 -0
  36. package/dist/cdk/clipboard.d.ts.map +1 -0
  37. package/dist/cdk/clipboard.js +38 -0
  38. package/dist/cdk/clipboard.js.map +1 -0
  39. package/dist/cdk/data-source.d.ts +41 -0
  40. package/dist/cdk/data-source.d.ts.map +1 -0
  41. package/dist/cdk/data-source.js +36 -0
  42. package/dist/cdk/data-source.js.map +1 -0
  43. package/dist/cdk/date-adapter.d.ts +63 -0
  44. package/dist/cdk/date-adapter.d.ts.map +1 -0
  45. package/dist/cdk/date-adapter.js +155 -0
  46. package/dist/cdk/date-adapter.js.map +1 -0
  47. package/dist/cdk/drag-drop.d.ts +77 -0
  48. package/dist/cdk/drag-drop.d.ts.map +1 -0
  49. package/dist/cdk/drag-drop.js +268 -0
  50. package/dist/cdk/drag-drop.js.map +1 -0
  51. package/dist/cdk/focus-monitor.d.ts +27 -0
  52. package/dist/cdk/focus-monitor.d.ts.map +1 -0
  53. package/dist/cdk/focus-monitor.js +66 -0
  54. package/dist/cdk/focus-monitor.js.map +1 -0
  55. package/dist/cdk/focus-trap.d.ts +39 -0
  56. package/dist/cdk/focus-trap.d.ts.map +1 -0
  57. package/dist/cdk/focus-trap.js +127 -0
  58. package/dist/cdk/focus-trap.js.map +1 -0
  59. package/dist/cdk/index.d.ts +29 -0
  60. package/dist/cdk/index.d.ts.map +1 -0
  61. package/dist/cdk/index.js +29 -0
  62. package/dist/cdk/index.js.map +1 -0
  63. package/dist/cdk/interactivity.d.ts +19 -0
  64. package/dist/cdk/interactivity.d.ts.map +1 -0
  65. package/dist/cdk/interactivity.js +70 -0
  66. package/dist/cdk/interactivity.js.map +1 -0
  67. package/dist/cdk/key-manager.d.ts +41 -0
  68. package/dist/cdk/key-manager.d.ts.map +1 -0
  69. package/dist/cdk/key-manager.js +126 -0
  70. package/dist/cdk/key-manager.js.map +1 -0
  71. package/dist/cdk/live-announcer.d.ts +19 -0
  72. package/dist/cdk/live-announcer.d.ts.map +1 -0
  73. package/dist/cdk/live-announcer.js +48 -0
  74. package/dist/cdk/live-announcer.js.map +1 -0
  75. package/dist/cdk/observers.d.ts +17 -0
  76. package/dist/cdk/observers.d.ts.map +1 -0
  77. package/dist/cdk/observers.js +35 -0
  78. package/dist/cdk/observers.js.map +1 -0
  79. package/dist/cdk/overlay.d.ts +73 -0
  80. package/dist/cdk/overlay.d.ts.map +1 -0
  81. package/dist/cdk/overlay.js +154 -0
  82. package/dist/cdk/overlay.js.map +1 -0
  83. package/dist/cdk/platform.d.ts +22 -0
  84. package/dist/cdk/platform.d.ts.map +1 -0
  85. package/dist/cdk/platform.js +55 -0
  86. package/dist/cdk/platform.js.map +1 -0
  87. package/dist/cdk/portal.d.ts +31 -0
  88. package/dist/cdk/portal.d.ts.map +1 -0
  89. package/dist/cdk/portal.js +55 -0
  90. package/dist/cdk/portal.js.map +1 -0
  91. package/dist/cdk/positioning.d.ts +53 -0
  92. package/dist/cdk/positioning.d.ts.map +1 -0
  93. package/dist/cdk/positioning.js +140 -0
  94. package/dist/cdk/positioning.js.map +1 -0
  95. package/dist/cdk/scroll.d.ts +43 -0
  96. package/dist/cdk/scroll.d.ts.map +1 -0
  97. package/dist/cdk/scroll.js +97 -0
  98. package/dist/cdk/scroll.js.map +1 -0
  99. package/dist/cdk/selection-model.d.ts +50 -0
  100. package/dist/cdk/selection-model.d.ts.map +1 -0
  101. package/dist/cdk/selection-model.js +77 -0
  102. package/dist/cdk/selection-model.js.map +1 -0
  103. package/dist/cdk/virtual-scroll.d.ts +50 -0
  104. package/dist/cdk/virtual-scroll.d.ts.map +1 -0
  105. package/dist/cdk/virtual-scroll.js +92 -0
  106. package/dist/cdk/virtual-scroll.js.map +1 -0
  107. package/dist/checkbox/checkbox.d.ts +65 -0
  108. package/dist/checkbox/checkbox.d.ts.map +1 -0
  109. package/dist/checkbox/checkbox.js +82 -0
  110. package/dist/checkbox/checkbox.js.map +1 -0
  111. package/dist/chips/chips.d.ts +65 -0
  112. package/dist/chips/chips.d.ts.map +1 -0
  113. package/dist/chips/chips.js +119 -0
  114. package/dist/chips/chips.js.map +1 -0
  115. package/dist/context-menu/context-menu.d.ts +32 -0
  116. package/dist/context-menu/context-menu.d.ts.map +1 -0
  117. package/dist/context-menu/context-menu.js +63 -0
  118. package/dist/context-menu/context-menu.js.map +1 -0
  119. package/dist/datepicker/datepicker.d.ts +100 -0
  120. package/dist/datepicker/datepicker.d.ts.map +1 -0
  121. package/dist/datepicker/datepicker.js +440 -0
  122. package/dist/datepicker/datepicker.js.map +1 -0
  123. package/dist/dialog/dialog.d.ts +27 -0
  124. package/dist/dialog/dialog.d.ts.map +1 -0
  125. package/dist/dialog/dialog.js +47 -0
  126. package/dist/dialog/dialog.js.map +1 -0
  127. package/dist/dialog/modal-core.d.ts +42 -0
  128. package/dist/dialog/modal-core.d.ts.map +1 -0
  129. package/dist/dialog/modal-core.js +103 -0
  130. package/dist/dialog/modal-core.js.map +1 -0
  131. package/dist/expansion/expansion.d.ts +71 -0
  132. package/dist/expansion/expansion.d.ts.map +1 -0
  133. package/dist/expansion/expansion.js +127 -0
  134. package/dist/expansion/expansion.js.map +1 -0
  135. package/dist/form-field/form-field.d.ts +48 -0
  136. package/dist/form-field/form-field.d.ts.map +1 -0
  137. package/dist/form-field/form-field.js +89 -0
  138. package/dist/form-field/form-field.js.map +1 -0
  139. package/dist/grid-list/grid-list.d.ts +25 -0
  140. package/dist/grid-list/grid-list.d.ts.map +1 -0
  141. package/dist/grid-list/grid-list.js +22 -0
  142. package/dist/grid-list/grid-list.js.map +1 -0
  143. package/dist/icon/icon.d.ts +40 -0
  144. package/dist/icon/icon.d.ts.map +1 -0
  145. package/dist/icon/icon.js +99 -0
  146. package/dist/icon/icon.js.map +1 -0
  147. package/dist/icon/icons.d.ts +60 -0
  148. package/dist/icon/icons.d.ts.map +1 -0
  149. package/dist/icon/icons.js +126 -0
  150. package/dist/icon/icons.js.map +1 -0
  151. package/dist/icon/lucide-icons.d.ts +11 -0
  152. package/dist/icon/lucide-icons.d.ts.map +1 -0
  153. package/dist/icon/lucide-icons.js +65 -0
  154. package/dist/icon/lucide-icons.js.map +1 -0
  155. package/dist/index.d.ts +12 -0
  156. package/dist/index.d.ts.map +1 -0
  157. package/dist/index.js +2 -0
  158. package/dist/index.js.map +1 -0
  159. package/dist/input/input.d.ts +90 -0
  160. package/dist/input/input.d.ts.map +1 -0
  161. package/dist/input/input.js +138 -0
  162. package/dist/input/input.js.map +1 -0
  163. package/dist/internal/compose.d.ts +26 -0
  164. package/dist/internal/compose.d.ts.map +1 -0
  165. package/dist/internal/compose.js +32 -0
  166. package/dist/internal/compose.js.map +1 -0
  167. package/dist/list/list.d.ts +70 -0
  168. package/dist/list/list.d.ts.map +1 -0
  169. package/dist/list/list.js +144 -0
  170. package/dist/list/list.js.map +1 -0
  171. package/dist/menu/menu-core.d.ts +56 -0
  172. package/dist/menu/menu-core.d.ts.map +1 -0
  173. package/dist/menu/menu-core.js +122 -0
  174. package/dist/menu/menu-core.js.map +1 -0
  175. package/dist/menu/menu.d.ts +31 -0
  176. package/dist/menu/menu.d.ts.map +1 -0
  177. package/dist/menu/menu.js +68 -0
  178. package/dist/menu/menu.js.map +1 -0
  179. package/dist/menubar/menubar.d.ts +49 -0
  180. package/dist/menubar/menubar.d.ts.map +1 -0
  181. package/dist/menubar/menubar.js +162 -0
  182. package/dist/menubar/menubar.js.map +1 -0
  183. package/dist/paginator/paginator.d.ts +89 -0
  184. package/dist/paginator/paginator.d.ts.map +1 -0
  185. package/dist/paginator/paginator.js +159 -0
  186. package/dist/paginator/paginator.js.map +1 -0
  187. package/dist/popover-edit/popover-edit.d.ts +33 -0
  188. package/dist/popover-edit/popover-edit.d.ts.map +1 -0
  189. package/dist/popover-edit/popover-edit.js +107 -0
  190. package/dist/popover-edit/popover-edit.js.map +1 -0
  191. package/dist/progress-bar/progress-bar.d.ts +32 -0
  192. package/dist/progress-bar/progress-bar.d.ts.map +1 -0
  193. package/dist/progress-bar/progress-bar.js +42 -0
  194. package/dist/progress-bar/progress-bar.js.map +1 -0
  195. package/dist/progress-spinner/progress-spinner.d.ts +25 -0
  196. package/dist/progress-spinner/progress-spinner.d.ts.map +1 -0
  197. package/dist/progress-spinner/progress-spinner.js +25 -0
  198. package/dist/progress-spinner/progress-spinner.js.map +1 -0
  199. package/dist/radio/radio.d.ts +68 -0
  200. package/dist/radio/radio.d.ts.map +1 -0
  201. package/dist/radio/radio.js +81 -0
  202. package/dist/radio/radio.js.map +1 -0
  203. package/dist/ripple/ripple.d.ts +20 -0
  204. package/dist/ripple/ripple.d.ts.map +1 -0
  205. package/dist/ripple/ripple.js +41 -0
  206. package/dist/ripple/ripple.js.map +1 -0
  207. package/dist/select/select.d.ts +83 -0
  208. package/dist/select/select.d.ts.map +1 -0
  209. package/dist/select/select.js +320 -0
  210. package/dist/select/select.js.map +1 -0
  211. package/dist/shared/options.d.ts +44 -0
  212. package/dist/shared/options.d.ts.map +1 -0
  213. package/dist/shared/options.js +59 -0
  214. package/dist/shared/options.js.map +1 -0
  215. package/dist/shared/positions.d.ts +20 -0
  216. package/dist/shared/positions.d.ts.map +1 -0
  217. package/dist/shared/positions.js +27 -0
  218. package/dist/shared/positions.js.map +1 -0
  219. package/dist/sidenav/sidenav.d.ts +65 -0
  220. package/dist/sidenav/sidenav.d.ts.map +1 -0
  221. package/dist/sidenav/sidenav.js +120 -0
  222. package/dist/sidenav/sidenav.js.map +1 -0
  223. package/dist/slide-toggle/slide-toggle.d.ts +56 -0
  224. package/dist/slide-toggle/slide-toggle.d.ts.map +1 -0
  225. package/dist/slide-toggle/slide-toggle.js +62 -0
  226. package/dist/slide-toggle/slide-toggle.js.map +1 -0
  227. package/dist/slider/slider.d.ts +69 -0
  228. package/dist/slider/slider.d.ts.map +1 -0
  229. package/dist/slider/slider.js +184 -0
  230. package/dist/slider/slider.js.map +1 -0
  231. package/dist/snackbar/snackbar.d.ts +25 -0
  232. package/dist/snackbar/snackbar.d.ts.map +1 -0
  233. package/dist/snackbar/snackbar.js +135 -0
  234. package/dist/snackbar/snackbar.js.map +1 -0
  235. package/dist/stepper/stepper.d.ts +87 -0
  236. package/dist/stepper/stepper.d.ts.map +1 -0
  237. package/dist/stepper/stepper.js +142 -0
  238. package/dist/stepper/stepper.js.map +1 -0
  239. package/dist/table/table.d.ts +140 -0
  240. package/dist/table/table.d.ts.map +1 -0
  241. package/dist/table/table.js +312 -0
  242. package/dist/table/table.js.map +1 -0
  243. package/dist/tabs/tabs.d.ts +64 -0
  244. package/dist/tabs/tabs.d.ts.map +1 -0
  245. package/dist/tabs/tabs.js +126 -0
  246. package/dist/tabs/tabs.js.map +1 -0
  247. package/dist/timepicker/timepicker.d.ts +83 -0
  248. package/dist/timepicker/timepicker.d.ts.map +1 -0
  249. package/dist/timepicker/timepicker.js +303 -0
  250. package/dist/timepicker/timepicker.js.map +1 -0
  251. package/dist/toolbar/toolbar.d.ts +34 -0
  252. package/dist/toolbar/toolbar.d.ts.map +1 -0
  253. package/dist/toolbar/toolbar.js +35 -0
  254. package/dist/toolbar/toolbar.js.map +1 -0
  255. package/dist/tooltip/tooltip.d.ts +30 -0
  256. package/dist/tooltip/tooltip.d.ts.map +1 -0
  257. package/dist/tooltip/tooltip.js +109 -0
  258. package/dist/tooltip/tooltip.js.map +1 -0
  259. package/dist/tree/tree.d.ts +100 -0
  260. package/dist/tree/tree.d.ts.map +1 -0
  261. package/dist/tree/tree.js +288 -0
  262. package/dist/tree/tree.js.map +1 -0
  263. package/package.json +230 -0
  264. package/src/styles/_api.scss +384 -0
  265. package/src/styles/_helpers.scss +101 -0
  266. package/src/styles/_index.scss +12 -0
  267. package/src/styles/_ref.scss +20 -0
  268. package/src/styles/_sass-utils.scss +14 -0
  269. package/src/styles/_token-utils.scss +24 -0
  270. package/src/styles/components/autocomplete/_index.scss +10 -0
  271. package/src/styles/components/autocomplete/_styles.scss +46 -0
  272. package/src/styles/components/autocomplete/_tokens.scss +28 -0
  273. package/src/styles/components/badge/_index.scss +12 -0
  274. package/src/styles/components/badge/_styles.scss +72 -0
  275. package/src/styles/components/badge/_tokens.scss +27 -0
  276. package/src/styles/components/bottom-sheet/_index.scss +9 -0
  277. package/src/styles/components/bottom-sheet/_styles.scss +77 -0
  278. package/src/styles/components/bottom-sheet/_tokens.scss +33 -0
  279. package/src/styles/components/button/_index.scss +12 -0
  280. package/src/styles/components/button/_styles.scss +106 -0
  281. package/src/styles/components/button/_tokens.scss +36 -0
  282. package/src/styles/components/button-toggle/_index.scss +12 -0
  283. package/src/styles/components/button-toggle/_styles.scss +57 -0
  284. package/src/styles/components/button-toggle/_tokens.scss +25 -0
  285. package/src/styles/components/card/_index.scss +15 -0
  286. package/src/styles/components/card/_styles.scss +68 -0
  287. package/src/styles/components/card/_tokens.scss +26 -0
  288. package/src/styles/components/checkbox/_index.scss +13 -0
  289. package/src/styles/components/checkbox/_styles.scss +108 -0
  290. package/src/styles/components/checkbox/_tokens.scss +25 -0
  291. package/src/styles/components/chips/_index.scss +12 -0
  292. package/src/styles/components/chips/_styles.scss +83 -0
  293. package/src/styles/components/chips/_tokens.scss +28 -0
  294. package/src/styles/components/datepicker/_index.scss +10 -0
  295. package/src/styles/components/datepicker/_styles.scss +203 -0
  296. package/src/styles/components/datepicker/_tokens.scss +50 -0
  297. package/src/styles/components/dialog/_index.scss +9 -0
  298. package/src/styles/components/dialog/_styles.scss +54 -0
  299. package/src/styles/components/dialog/_tokens.scss +29 -0
  300. package/src/styles/components/divider/_index.scss +8 -0
  301. package/src/styles/components/divider/_styles.scss +18 -0
  302. package/src/styles/components/divider/_tokens.scss +12 -0
  303. package/src/styles/components/expansion/_index.scss +14 -0
  304. package/src/styles/components/expansion/_styles.scss +128 -0
  305. package/src/styles/components/expansion/_tokens.scss +32 -0
  306. package/src/styles/components/form-field/_index.scss +13 -0
  307. package/src/styles/components/form-field/_styles.scss +39 -0
  308. package/src/styles/components/form-field/_tokens.scss +19 -0
  309. package/src/styles/components/grid-list/_index.scss +12 -0
  310. package/src/styles/components/grid-list/_styles.scss +31 -0
  311. package/src/styles/components/grid-list/_tokens.scss +18 -0
  312. package/src/styles/components/icon/_index.scss +8 -0
  313. package/src/styles/components/icon/_styles.scss +18 -0
  314. package/src/styles/components/icon/_tokens.scss +8 -0
  315. package/src/styles/components/input/_index.scss +13 -0
  316. package/src/styles/components/input/_styles.scss +111 -0
  317. package/src/styles/components/input/_tokens.scss +21 -0
  318. package/src/styles/components/list/_index.scss +12 -0
  319. package/src/styles/components/list/_styles.scss +87 -0
  320. package/src/styles/components/list/_tokens.scss +31 -0
  321. package/src/styles/components/menu/_index.scss +9 -0
  322. package/src/styles/components/menu/_styles.scss +60 -0
  323. package/src/styles/components/menu/_tokens.scss +33 -0
  324. package/src/styles/components/menubar/_index.scss +9 -0
  325. package/src/styles/components/menubar/_styles.scss +41 -0
  326. package/src/styles/components/menubar/_tokens.scss +25 -0
  327. package/src/styles/components/overlay/_index.scss +8 -0
  328. package/src/styles/components/overlay/_styles.scss +25 -0
  329. package/src/styles/components/overlay/_tokens.scss +21 -0
  330. package/src/styles/components/paginator/_index.scss +14 -0
  331. package/src/styles/components/paginator/_styles.scss +77 -0
  332. package/src/styles/components/paginator/_tokens.scss +28 -0
  333. package/src/styles/components/popover-edit/_index.scss +9 -0
  334. package/src/styles/components/popover-edit/_styles.scss +31 -0
  335. package/src/styles/components/popover-edit/_tokens.scss +21 -0
  336. package/src/styles/components/progress-bar/_index.scss +11 -0
  337. package/src/styles/components/progress-bar/_styles.scss +39 -0
  338. package/src/styles/components/progress-bar/_tokens.scss +17 -0
  339. package/src/styles/components/progress-spinner/_index.scss +11 -0
  340. package/src/styles/components/progress-spinner/_styles.scss +26 -0
  341. package/src/styles/components/progress-spinner/_tokens.scss +15 -0
  342. package/src/styles/components/radio/_index.scss +14 -0
  343. package/src/styles/components/radio/_styles.scss +92 -0
  344. package/src/styles/components/radio/_tokens.scss +24 -0
  345. package/src/styles/components/ripple/_index.scss +8 -0
  346. package/src/styles/components/ripple/_styles.scss +20 -0
  347. package/src/styles/components/ripple/_tokens.scss +12 -0
  348. package/src/styles/components/select/_index.scss +9 -0
  349. package/src/styles/components/select/_styles.scss +120 -0
  350. package/src/styles/components/select/_tokens.scss +35 -0
  351. package/src/styles/components/sidenav/_index.scss +14 -0
  352. package/src/styles/components/sidenav/_styles.scss +105 -0
  353. package/src/styles/components/sidenav/_tokens.scss +24 -0
  354. package/src/styles/components/slide-toggle/_index.scss +13 -0
  355. package/src/styles/components/slide-toggle/_styles.scss +86 -0
  356. package/src/styles/components/slide-toggle/_tokens.scss +24 -0
  357. package/src/styles/components/slider/_index.scss +13 -0
  358. package/src/styles/components/slider/_styles.scss +77 -0
  359. package/src/styles/components/slider/_tokens.scss +21 -0
  360. package/src/styles/components/snackbar/_index.scss +8 -0
  361. package/src/styles/components/snackbar/_styles.scss +59 -0
  362. package/src/styles/components/snackbar/_tokens.scss +28 -0
  363. package/src/styles/components/stepper/_index.scss +14 -0
  364. package/src/styles/components/stepper/_styles.scss +129 -0
  365. package/src/styles/components/stepper/_tokens.scss +44 -0
  366. package/src/styles/components/table/_index.scss +14 -0
  367. package/src/styles/components/table/_styles.scss +202 -0
  368. package/src/styles/components/table/_tokens.scss +47 -0
  369. package/src/styles/components/tabs/_index.scss +13 -0
  370. package/src/styles/components/tabs/_styles.scss +76 -0
  371. package/src/styles/components/tabs/_tokens.scss +28 -0
  372. package/src/styles/components/timepicker/_index.scss +9 -0
  373. package/src/styles/components/timepicker/_styles.scss +136 -0
  374. package/src/styles/components/timepicker/_tokens.scss +46 -0
  375. package/src/styles/components/toolbar/_index.scss +12 -0
  376. package/src/styles/components/toolbar/_styles.scss +41 -0
  377. package/src/styles/components/toolbar/_tokens.scss +17 -0
  378. package/src/styles/components/tooltip/_index.scss +8 -0
  379. package/src/styles/components/tooltip/_styles.scss +29 -0
  380. package/src/styles/components/tooltip/_tokens.scss +22 -0
  381. package/src/styles/components/tree/_index.scss +13 -0
  382. package/src/styles/components/tree/_styles.scss +99 -0
  383. package/src/styles/components/tree/_tokens.scss +38 -0
  384. package/src/styles/theme/_defaults.scss +50 -0
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Live announcer — push messages to assistive technology via an `aria-live` region
3
+ * (e.g. "3 results", "Copied", "Row selected"). One shared visually-hidden region per
4
+ * politeness level, created lazily and appended to `<body>`. Zero-dep.
5
+ *
6
+ * Identical consecutive messages are re-announced by clearing the region first (SRs
7
+ * ignore a no-op text set). `off` is a no-op.
8
+ */
9
+ export type AriaLivePoliteness = 'off' | 'polite' | 'assertive';
10
+ /**
11
+ * Announce `message` to screen readers. `polite` waits for a pause (default),
12
+ * `assertive` interrupts. Returns immediately.
13
+ */
14
+ export declare function announce(message: string, politeness?: AriaLivePoliteness): void;
15
+ /** Clear all live regions. */
16
+ export declare function clearAnnouncer(): void;
17
+ /** The live region element for a politeness level (creating it if needed). Mostly for tests. */
18
+ export declare function liveAnnouncerElement(politeness?: 'polite' | 'assertive'): HTMLElement;
19
+ //# sourceMappingURL=live-announcer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-announcer.d.ts","sourceRoot":"","sources":["../../src/cdk/live-announcer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAC;AAoBhE;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,GAAE,kBAA6B,GAAG,IAAI,CAKzF;AAED,8BAA8B;AAC9B,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED,gGAAgG;AAChG,wBAAgB,oBAAoB,CAAC,UAAU,GAAE,QAAQ,GAAG,WAAsB,GAAG,WAAW,CAE/F"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Live announcer — push messages to assistive technology via an `aria-live` region
3
+ * (e.g. "3 results", "Copied", "Row selected"). One shared visually-hidden region per
4
+ * politeness level, created lazily and appended to `<body>`. Zero-dep.
5
+ *
6
+ * Identical consecutive messages are re-announced by clearing the region first (SRs
7
+ * ignore a no-op text set). `off` is a no-op.
8
+ */
9
+ import { isBrowser } from './platform.js';
10
+ const regions = {};
11
+ function region(politeness) {
12
+ let el = regions[politeness];
13
+ if (el && el.isConnected)
14
+ return el;
15
+ el = document.createElement('div');
16
+ el.className = 'weave-live-announcer';
17
+ el.setAttribute('aria-live', politeness);
18
+ el.setAttribute('aria-atomic', 'true');
19
+ el.setAttribute('role', politeness === 'assertive' ? 'alert' : 'status');
20
+ // Visually hidden but present to the accessibility tree (the standard sr-only recipe).
21
+ el.style.cssText =
22
+ 'position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;';
23
+ document.body.appendChild(el);
24
+ regions[politeness] = el;
25
+ return el;
26
+ }
27
+ /**
28
+ * Announce `message` to screen readers. `polite` waits for a pause (default),
29
+ * `assertive` interrupts. Returns immediately.
30
+ */
31
+ export function announce(message, politeness = 'polite') {
32
+ if (!isBrowser || politeness === 'off')
33
+ return;
34
+ const el = region(politeness);
35
+ el.textContent = ''; // force a change so identical consecutive messages re-fire
36
+ el.textContent = message;
37
+ }
38
+ /** Clear all live regions. */
39
+ export function clearAnnouncer() {
40
+ for (const el of Object.values(regions))
41
+ if (el)
42
+ el.textContent = '';
43
+ }
44
+ /** The live region element for a politeness level (creating it if needed). Mostly for tests. */
45
+ export function liveAnnouncerElement(politeness = 'polite') {
46
+ return region(politeness);
47
+ }
48
+ //# sourceMappingURL=live-announcer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-announcer.js","sourceRoot":"","sources":["../../src/cdk/live-announcer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAI1C,MAAM,OAAO,GAAyD,EAAE,CAAC;AAEzE,SAAS,MAAM,CAAC,UAAkC;IAChD,IAAI,EAAE,GAA4B,OAAO,CAAC,UAAU,CAAC,CAAC;IACtD,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW;QAAE,OAAO,EAAE,CAAC;IACpC,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACnC,EAAE,CAAC,SAAS,GAAG,sBAAsB,CAAC;IACtC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACzC,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACvC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACzE,uFAAuF;IACvF,EAAE,CAAC,KAAK,CAAC,OAAO;QACd,mJAAmJ,CAAC;IACtJ,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC9B,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,aAAiC,QAAQ;IACjF,IAAI,CAAC,SAAS,IAAI,UAAU,KAAK,KAAK;QAAE,OAAO;IAC/C,MAAM,EAAE,GAAgB,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3C,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,2DAA2D;IAChF,EAAE,CAAC,WAAW,GAAG,OAAO,CAAC;AAC3B,CAAC;AAED,8BAA8B;AAC9B,MAAM,UAAU,cAAc;IAC5B,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAAE,IAAI,EAAE;YAAE,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC;AACvE,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,oBAAoB,CAAC,aAAqC,QAAQ;IAChF,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Observers — native `ResizeObserver` / `MutationObserver` wrapped as signals, so DOM
3
+ * geometry and structure become part of the reactive graph (no polling, no zones).
4
+ * Each observer auto-disconnects when the surrounding owner scope disposes.
5
+ */
6
+ export interface Size {
7
+ width: number;
8
+ height: number;
9
+ }
10
+ /** A signal of `el`'s content-box size, updated via `ResizeObserver`. */
11
+ export declare function resizeSignal(el: Element): () => Size;
12
+ /**
13
+ * A signal that increments on every DOM mutation of `target` (a change counter — read
14
+ * it in an `effect`/`computed` to re-run on structure/attribute/text changes).
15
+ */
16
+ export declare function mutationSignal(target: Node, options?: MutationObserverInit): () => number;
17
+ //# sourceMappingURL=observers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observers.d.ts","sourceRoot":"","sources":["../../src/cdk/observers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,IAAI,CAYpD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,IAAI,EACZ,OAAO,GAAE,oBAAgG,GACxG,MAAM,MAAM,CAQd"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Observers — native `ResizeObserver` / `MutationObserver` wrapped as signals, so DOM
3
+ * geometry and structure become part of the reactive graph (no polling, no zones).
4
+ * Each observer auto-disconnects when the surrounding owner scope disposes.
5
+ */
6
+ import { signal, onDispose } from '@weave-framework/runtime';
7
+ import { isBrowser } from './platform.js';
8
+ /** A signal of `el`'s content-box size, updated via `ResizeObserver`. */
9
+ export function resizeSignal(el) {
10
+ const rect = el.getBoundingClientRect();
11
+ const size = signal({ width: rect.width, height: rect.height });
12
+ if (isBrowser && typeof ResizeObserver !== 'undefined') {
13
+ const ro = new ResizeObserver((entries) => {
14
+ const box = entries[entries.length - 1].contentRect;
15
+ size.set({ width: box.width, height: box.height });
16
+ });
17
+ ro.observe(el);
18
+ onDispose(() => ro.disconnect());
19
+ }
20
+ return () => size();
21
+ }
22
+ /**
23
+ * A signal that increments on every DOM mutation of `target` (a change counter — read
24
+ * it in an `effect`/`computed` to re-run on structure/attribute/text changes).
25
+ */
26
+ export function mutationSignal(target, options = { childList: true, subtree: true, attributes: true, characterData: true }) {
27
+ const tick = signal(0);
28
+ if (isBrowser && typeof MutationObserver !== 'undefined') {
29
+ const mo = new MutationObserver(() => tick.set(tick() + 1));
30
+ mo.observe(target, options);
31
+ onDispose(() => mo.disconnect());
32
+ }
33
+ return () => tick();
34
+ }
35
+ //# sourceMappingURL=observers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observers.js","sourceRoot":"","sources":["../../src/cdk/observers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,SAAS,EAAe,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAO1C,yEAAyE;AACzE,MAAM,UAAU,YAAY,CAAC,EAAW;IACtC,MAAM,IAAI,GAAY,EAAE,CAAC,qBAAqB,EAAE,CAAC;IACjD,MAAM,IAAI,GAAiB,MAAM,CAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACpF,IAAI,SAAS,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE,CAAC;QACvD,MAAM,EAAE,GAAmB,IAAI,cAAc,CAAC,CAAC,OAAO,EAAE,EAAE;YACxD,MAAM,GAAG,GAAoB,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC;YACrE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACf,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAY,EACZ,UAAgC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IAEzG,MAAM,IAAI,GAAmB,MAAM,CAAS,CAAC,CAAC,CAAC;IAC/C,IAAI,SAAS,IAAI,OAAO,gBAAgB,KAAK,WAAW,EAAE,CAAC;QACzD,MAAM,EAAE,GAAqB,IAAI,gBAAgB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9E,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5B,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Overlay — the controller every floating surface sits on (menu, tooltip, dialog,
3
+ * select panel, snackbar). Headless: it owns a panel host in a top-level container,
4
+ * an optional backdrop, z-index stacking, and disposal — the consumer supplies the
5
+ * content and (via a position strategy) where it goes. Built on {@link portal}.
6
+ *
7
+ * Stacking is a **managed container + monotonic z-index** (deterministic + testable);
8
+ * the public API here is independent of that choice, so a future switch to the native
9
+ * top-layer / Popover API is internal. Functional layout is applied as inline styles
10
+ * (position/inset/pointer-events/z-index) so the CDK ships **no stylesheet** — theming
11
+ * is the styled component's job, not the overlay's.
12
+ *
13
+ * Zero-dep, signal-native. RTL-aware once a connected position strategy consumes bidi.
14
+ */
15
+ import type { ScrollStrategyFactory } from './scroll.js';
16
+ /** A strategy that positions the panel element. The connected (flip/shift) strategy lands in `positioning.ts`. */
17
+ export interface PositionStrategy {
18
+ /** Position `overlayElement` (already attached). Called on attach + `updatePosition()`. */
19
+ apply(overlayElement: HTMLElement): void;
20
+ /** Optional teardown (detach observers/listeners). */
21
+ dispose?(): void;
22
+ }
23
+ export interface GlobalPositionConfig {
24
+ top?: string;
25
+ left?: string;
26
+ right?: string;
27
+ bottom?: string;
28
+ /** Center horizontally in the viewport (overrides left/right). Default true. */
29
+ centerHorizontally?: boolean;
30
+ /** Center vertically in the viewport (overrides top/bottom). Default true. */
31
+ centerVertically?: boolean;
32
+ }
33
+ /**
34
+ * A viewport-relative position strategy (centered by default) — the analogue of
35
+ * Material's `GlobalPositionStrategy`. For anchored dropdowns, use the connected
36
+ * strategy from `positioning.ts` instead.
37
+ */
38
+ export declare function globalPosition(config?: GlobalPositionConfig): PositionStrategy;
39
+ export interface OverlayConfig {
40
+ /** Render a dimming/click-catching backdrop behind the panel. Default false. */
41
+ hasBackdrop?: boolean;
42
+ /** Class(es) added to the backdrop element. */
43
+ backdropClass?: string | string[];
44
+ /** Class(es) added to the panel (overlay) element. */
45
+ panelClass?: string | string[];
46
+ /** How to position the panel. Default: centered {@link globalPosition}. */
47
+ positionStrategy?: PositionStrategy;
48
+ /** How the overlay reacts to scroll (reposition/close/block/noop). Default: noop. */
49
+ scrollStrategy?: ScrollStrategyFactory;
50
+ }
51
+ export interface OverlayRef {
52
+ /** The panel host — put your content here (attach does it for you). */
53
+ readonly overlayElement: HTMLElement;
54
+ /** The backdrop element, if `hasBackdrop`. */
55
+ readonly backdropElement: HTMLElement | null;
56
+ /** Attach content into the panel and insert it (+ backdrop) into the container. Returns the panel. */
57
+ attach(content: Node | (() => Node)): HTMLElement;
58
+ /** Remove the panel + backdrop from the DOM (reusable — you can `attach` again). */
59
+ detach(): void;
60
+ /** Detach permanently and release listeners/strategy. Further `attach` throws. */
61
+ dispose(): void;
62
+ /** Whether the overlay is currently attached. Reactive. */
63
+ attached(): boolean;
64
+ /** Subscribe to backdrop clicks. Returns an unsubscribe. No-op without a backdrop. */
65
+ onBackdropClick(handler: (event: MouseEvent) => void): () => void;
66
+ /** Re-run the position strategy (after content/size/scroll changes). */
67
+ updatePosition(): void;
68
+ }
69
+ /** The shared, lazily-created overlay container appended to `<body>` (one per document). */
70
+ export declare function overlayContainer(): HTMLElement;
71
+ /** Create an overlay controller. Call {@link OverlayRef.attach} to show content. */
72
+ export declare function createOverlay(config?: OverlayConfig): OverlayRef;
73
+ //# sourceMappingURL=overlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/cdk/overlay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAkB,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAMzE,kHAAkH;AAClH,MAAM,WAAW,gBAAgB;IAC/B,2FAA2F;IAC3F,KAAK,CAAC,cAAc,EAAE,WAAW,GAAG,IAAI,CAAC;IACzC,sDAAsD;IACtD,OAAO,CAAC,IAAI,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,GAAE,oBAAyB,GAAG,gBAAgB,CAwBlF;AAED,MAAM,WAAW,aAAa;IAC5B,gFAAgF;IAChF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+CAA+C;IAC/C,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAClC,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC/B,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,qFAAqF;IACrF,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED,MAAM,WAAW,UAAU;IACzB,uEAAuE;IACvE,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IACrC,8CAA8C;IAC9C,QAAQ,CAAC,eAAe,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7C,sGAAsG;IACtG,MAAM,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,WAAW,CAAC;IAClD,oFAAoF;IACpF,MAAM,IAAI,IAAI,CAAC;IACf,kFAAkF;IAClF,OAAO,IAAI,IAAI,CAAC;IAChB,2DAA2D;IAC3D,QAAQ,IAAI,OAAO,CAAC;IACpB,sFAAsF;IACtF,eAAe,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAClE,wEAAwE;IACxE,cAAc,IAAI,IAAI,CAAC;CACxB;AAID,4FAA4F;AAC5F,wBAAgB,gBAAgB,IAAI,WAAW,CAS9C;AAOD,oFAAoF;AACpF,wBAAgB,aAAa,CAAC,MAAM,GAAE,aAAkB,GAAG,UAAU,CAuFpE"}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Overlay — the controller every floating surface sits on (menu, tooltip, dialog,
3
+ * select panel, snackbar). Headless: it owns a panel host in a top-level container,
4
+ * an optional backdrop, z-index stacking, and disposal — the consumer supplies the
5
+ * content and (via a position strategy) where it goes. Built on {@link portal}.
6
+ *
7
+ * Stacking is a **managed container + monotonic z-index** (deterministic + testable);
8
+ * the public API here is independent of that choice, so a future switch to the native
9
+ * top-layer / Popover API is internal. Functional layout is applied as inline styles
10
+ * (position/inset/pointer-events/z-index) so the CDK ships **no stylesheet** — theming
11
+ * is the styled component's job, not the overlay's.
12
+ *
13
+ * Zero-dep, signal-native. RTL-aware once a connected position strategy consumes bidi.
14
+ */
15
+ import { signal, onDispose } from '@weave-framework/runtime';
16
+ import { portal } from './portal.js';
17
+ /** Base z-index for the overlay layer; each attach takes the next two slots (backdrop, panel). */
18
+ const Z_BASE = 1000;
19
+ let zCounter = 0;
20
+ /**
21
+ * A viewport-relative position strategy (centered by default) — the analogue of
22
+ * Material's `GlobalPositionStrategy`. For anchored dropdowns, use the connected
23
+ * strategy from `positioning.ts` instead.
24
+ */
25
+ export function globalPosition(config = {}) {
26
+ const cfg = { centerHorizontally: true, centerVertically: true, ...config };
27
+ return {
28
+ apply(el) {
29
+ el.style.position = 'absolute';
30
+ const tx = cfg.centerHorizontally ? '-50%' : '0';
31
+ const ty = cfg.centerVertically ? '-50%' : '0';
32
+ el.style.transform = cfg.centerHorizontally || cfg.centerVertically ? `translate(${tx}, ${ty})` : '';
33
+ if (cfg.centerHorizontally) {
34
+ el.style.left = '50%';
35
+ el.style.right = '';
36
+ }
37
+ else {
38
+ el.style.left = cfg.left ?? '';
39
+ el.style.right = cfg.right ?? '';
40
+ }
41
+ if (cfg.centerVertically) {
42
+ el.style.top = '50%';
43
+ el.style.bottom = '';
44
+ }
45
+ else {
46
+ el.style.top = cfg.top ?? '';
47
+ el.style.bottom = cfg.bottom ?? '';
48
+ }
49
+ },
50
+ };
51
+ }
52
+ let _container = null;
53
+ /** The shared, lazily-created overlay container appended to `<body>` (one per document). */
54
+ export function overlayContainer() {
55
+ if (_container && _container.isConnected)
56
+ return _container;
57
+ const el = document.createElement('div');
58
+ el.className = 'weave-overlay-container';
59
+ // Functional layout: cover the viewport but let page clicks through; panels opt back in.
60
+ el.style.cssText = 'position:fixed;inset:0;z-index:' + Z_BASE + ';pointer-events:none;';
61
+ document.body.appendChild(el);
62
+ _container = el;
63
+ return el;
64
+ }
65
+ function addClasses(el, classes) {
66
+ if (!classes)
67
+ return;
68
+ for (const c of Array.isArray(classes) ? classes : [classes])
69
+ if (c)
70
+ el.classList.add(c);
71
+ }
72
+ /** Create an overlay controller. Call {@link OverlayRef.attach} to show content. */
73
+ export function createOverlay(config = {}) {
74
+ const strategy = config.positionStrategy ?? globalPosition();
75
+ const overlayElement = document.createElement('div');
76
+ overlayElement.className = 'weave-overlay';
77
+ overlayElement.style.cssText = 'position:absolute;pointer-events:auto;';
78
+ addClasses(overlayElement, config.panelClass);
79
+ let backdropElement = null;
80
+ const backdropHandlers = new Set();
81
+ if (config.hasBackdrop) {
82
+ backdropElement = document.createElement('div');
83
+ backdropElement.className = 'weave-overlay-backdrop';
84
+ backdropElement.style.cssText = 'position:fixed;inset:0;pointer-events:auto;';
85
+ addClasses(backdropElement, config.backdropClass);
86
+ backdropElement.addEventListener('click', (e) => {
87
+ for (const h of [...backdropHandlers])
88
+ h(e);
89
+ });
90
+ }
91
+ const _attached = signal(false);
92
+ let panelPortal = null;
93
+ let backdropPortal = null;
94
+ let scroll = null;
95
+ let disposed = false;
96
+ function attach(content) {
97
+ if (disposed)
98
+ throw new Error('weave cdk overlay: cannot attach a disposed overlay');
99
+ if (_attached())
100
+ detach();
101
+ const container = overlayContainer();
102
+ // Backdrop first (below), then the panel — each takes the next z-index slot.
103
+ if (backdropElement) {
104
+ backdropElement.style.zIndex = String(Z_BASE + ++zCounter);
105
+ backdropPortal = portal(backdropElement, { container });
106
+ }
107
+ overlayElement.style.zIndex = String(Z_BASE + ++zCounter);
108
+ overlayElement.textContent = '';
109
+ overlayElement.append(typeof content === 'function' ? content() : content);
110
+ panelPortal = portal(overlayElement, { container });
111
+ strategy.apply(overlayElement);
112
+ _attached.set(true);
113
+ scroll?.enable();
114
+ return overlayElement;
115
+ }
116
+ function detach() {
117
+ scroll?.disable();
118
+ panelPortal?.detach();
119
+ backdropPortal?.detach();
120
+ panelPortal = backdropPortal = null;
121
+ overlayElement.textContent = '';
122
+ _attached.set(false);
123
+ }
124
+ function dispose() {
125
+ if (disposed)
126
+ return;
127
+ detach();
128
+ strategy.dispose?.();
129
+ backdropHandlers.clear();
130
+ disposed = true;
131
+ }
132
+ // Tie disposal to the surrounding owner scope (no-op outside one).
133
+ onDispose(dispose);
134
+ const ref = {
135
+ overlayElement,
136
+ backdropElement,
137
+ attach,
138
+ detach,
139
+ dispose,
140
+ attached: () => _attached(),
141
+ onBackdropClick(handler) {
142
+ backdropHandlers.add(handler);
143
+ return () => backdropHandlers.delete(handler);
144
+ },
145
+ updatePosition() {
146
+ if (_attached())
147
+ strategy.apply(overlayElement);
148
+ },
149
+ };
150
+ // The scroll strategy needs the ref; build it now, before any attach happens.
151
+ scroll = config.scrollStrategy ? config.scrollStrategy(ref) : null;
152
+ return ref;
153
+ }
154
+ //# sourceMappingURL=overlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlay.js","sourceRoot":"","sources":["../../src/cdk/overlay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Platform — small, SSR-safe environment queries for the CDK. Zero-dep; only native
3
+ * DOM / `matchMedia`. Capabilities are feature-detected once and memoized; the live
4
+ * reads (`rtl`) reflect the document at call time. Reactive media lives in
5
+ * `breakpoints.ts`; the reactive text direction lives in `bidi.ts` — this module is
6
+ * the static, always-available baseline both build on.
7
+ */
8
+ /** True when running in a browser (a `document` exists). The SSR-safe guard. */
9
+ export declare const isBrowser: boolean;
10
+ /** Whether the browser supports passive event listeners (feature-detected once). */
11
+ export declare function supportsPassive(): boolean;
12
+ /** Current document text direction is RTL (`<html dir="rtl">`). Non-reactive snapshot — see `bidi.ts`. */
13
+ export declare function rtl(): boolean;
14
+ /** A fine pointer (mouse / stylus) is available. */
15
+ export declare function hasFinePointer(): boolean;
16
+ /** A hover-capable pointer is available. */
17
+ export declare function hasHover(): boolean;
18
+ /** The user prefers reduced motion. */
19
+ export declare function prefersReducedMotion(): boolean;
20
+ /** Native Popover API / top-layer support (used by the overlay engine when available). */
21
+ export declare const supportsPopover: boolean;
22
+ //# sourceMappingURL=platform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/cdk/platform.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,gFAAgF;AAChF,eAAO,MAAM,SAAS,EAAE,OAAyC,CAAC;AAIlE,oFAAoF;AACpF,wBAAgB,eAAe,IAAI,OAAO,CAkBzC;AAED,0GAA0G;AAC1G,wBAAgB,GAAG,IAAI,OAAO,CAE7B;AAMD,oDAAoD;AACpD,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED,4CAA4C;AAC5C,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED,uCAAuC;AACvC,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED,0FAA0F;AAC1F,eAAO,MAAM,eAAe,EAAE,OACyD,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Platform — small, SSR-safe environment queries for the CDK. Zero-dep; only native
3
+ * DOM / `matchMedia`. Capabilities are feature-detected once and memoized; the live
4
+ * reads (`rtl`) reflect the document at call time. Reactive media lives in
5
+ * `breakpoints.ts`; the reactive text direction lives in `bidi.ts` — this module is
6
+ * the static, always-available baseline both build on.
7
+ */
8
+ /** True when running in a browser (a `document` exists). The SSR-safe guard. */
9
+ export const isBrowser = typeof document !== 'undefined';
10
+ let _passive;
11
+ /** Whether the browser supports passive event listeners (feature-detected once). */
12
+ export function supportsPassive() {
13
+ if (_passive !== undefined)
14
+ return _passive;
15
+ _passive = false;
16
+ if (!isBrowser)
17
+ return _passive;
18
+ try {
19
+ const opts = Object.defineProperty({}, 'passive', {
20
+ get() {
21
+ _passive = true;
22
+ return true;
23
+ },
24
+ });
25
+ const noop = () => { };
26
+ window.addEventListener('weave-passive-probe', noop, opts);
27
+ window.removeEventListener('weave-passive-probe', noop, opts);
28
+ }
29
+ catch {
30
+ _passive = false;
31
+ }
32
+ return _passive;
33
+ }
34
+ /** Current document text direction is RTL (`<html dir="rtl">`). Non-reactive snapshot — see `bidi.ts`. */
35
+ export function rtl() {
36
+ return isBrowser && document.documentElement.dir === 'rtl';
37
+ }
38
+ function mq(query) {
39
+ return isBrowser && typeof matchMedia === 'function' && matchMedia(query).matches;
40
+ }
41
+ /** A fine pointer (mouse / stylus) is available. */
42
+ export function hasFinePointer() {
43
+ return mq('(pointer: fine)');
44
+ }
45
+ /** A hover-capable pointer is available. */
46
+ export function hasHover() {
47
+ return mq('(hover: hover)');
48
+ }
49
+ /** The user prefers reduced motion. */
50
+ export function prefersReducedMotion() {
51
+ return mq('(prefers-reduced-motion: reduce)');
52
+ }
53
+ /** Native Popover API / top-layer support (used by the overlay engine when available). */
54
+ export const supportsPopover = isBrowser && typeof HTMLElement !== 'undefined' && 'popover' in HTMLElement.prototype;
55
+ //# sourceMappingURL=platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/cdk/platform.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,gFAAgF;AAChF,MAAM,CAAC,MAAM,SAAS,GAAY,OAAO,QAAQ,KAAK,WAAW,CAAC;AAElE,IAAI,QAA6B,CAAC;AAElC,oFAAoF;AACpF,MAAM,UAAU,eAAe;IAC7B,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,QAAQ,GAAG,KAAK,CAAC;IACjB,IAAI,CAAC,SAAS;QAAE,OAAO,QAAQ,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,IAAI,GAAW,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE;YACxD,GAAG;gBACD,QAAQ,GAAG,IAAI,CAAC;gBAChB,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,GAAS,EAAE,GAAE,CAAC,CAAC;QAC5B,MAAM,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAA+B,CAAC,CAAC;QACtF,MAAM,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAA+B,CAAC,CAAC;IAC3F,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,GAAG,KAAK,CAAC;IACnB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,0GAA0G;AAC1G,MAAM,UAAU,GAAG;IACjB,OAAO,SAAS,IAAI,QAAQ,CAAC,eAAe,CAAC,GAAG,KAAK,KAAK,CAAC;AAC7D,CAAC;AAED,SAAS,EAAE,CAAC,KAAa;IACvB,OAAO,SAAS,IAAI,OAAO,UAAU,KAAK,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AACpF,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,cAAc;IAC5B,OAAO,EAAE,CAAC,iBAAiB,CAAC,CAAC;AAC/B,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,QAAQ;IACtB,OAAO,EAAE,CAAC,gBAAgB,CAAC,CAAC;AAC9B,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,oBAAoB;IAClC,OAAO,EAAE,CAAC,kCAAkC,CAAC,CAAC;AAChD,CAAC;AAED,0FAA0F;AAC1F,MAAM,CAAC,MAAM,eAAe,GAC1B,SAAS,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,SAAS,IAAI,WAAW,CAAC,SAAS,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Portal — imperatively render a node into a container elsewhere in the DOM (by
3
+ * default `<body>`), with owner-scoped teardown. This is the basis of the overlay
4
+ * engine: dropdowns, dialogs, and tooltips render at the top of the document so
5
+ * they escape `overflow`/`z-index`/`transform` traps, yet stay tied to the logic
6
+ * that created them.
7
+ *
8
+ * Unlike the runtime's `mount` (which *replaces* a container's contents), a portal
9
+ * **appends** and removes only its own nodes — the container's other children are
10
+ * untouched. Zero-dep; append/remove + a reactive `attached` signal.
11
+ */
12
+ export interface PortalOptions {
13
+ /** Target container — an `Element` or a CSS selector. Defaults to `document.body`. */
14
+ container?: Element | string;
15
+ }
16
+ export interface PortalHandle {
17
+ /** The container the content was attached into. */
18
+ readonly container: Element;
19
+ /** Whether the portal is currently attached. Reactive — read it to subscribe. */
20
+ attached(): boolean;
21
+ /** Remove the portalled content and mark detached. Idempotent. */
22
+ detach(): void;
23
+ }
24
+ /**
25
+ * Attach `content` (a `Node` or a factory returning one) into `options.container`
26
+ * (default `<body>`). Returns a {@link PortalHandle}. If called inside an owner
27
+ * scope (a component `setup`, an effect), the portal auto-detaches when that scope
28
+ * disposes, so overlays never leak.
29
+ */
30
+ export declare function portal(content: Node | (() => Node), options?: PortalOptions): PortalHandle;
31
+ //# sourceMappingURL=portal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal.d.ts","sourceRoot":"","sources":["../../src/cdk/portal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,MAAM,WAAW,aAAa;IAC5B,sFAAsF;IACtF,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,iFAAiF;IACjF,QAAQ,IAAI,OAAO,CAAC;IACpB,kEAAkE;IAClE,MAAM,IAAI,IAAI,CAAC;CAChB;AAYD;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,OAAO,GAAE,aAAkB,GAAG,YAAY,CA6B9F"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Portal — imperatively render a node into a container elsewhere in the DOM (by
3
+ * default `<body>`), with owner-scoped teardown. This is the basis of the overlay
4
+ * engine: dropdowns, dialogs, and tooltips render at the top of the document so
5
+ * they escape `overflow`/`z-index`/`transform` traps, yet stay tied to the logic
6
+ * that created them.
7
+ *
8
+ * Unlike the runtime's `mount` (which *replaces* a container's contents), a portal
9
+ * **appends** and removes only its own nodes — the container's other children are
10
+ * untouched. Zero-dep; append/remove + a reactive `attached` signal.
11
+ */
12
+ import { signal, onDispose } from '@weave-framework/runtime';
13
+ function resolveContainer(target) {
14
+ if (typeof target !== 'string')
15
+ return target;
16
+ if (typeof document === 'undefined') {
17
+ throw new Error('weave cdk portal: no document (portals are browser-only)');
18
+ }
19
+ const el = document.querySelector(target);
20
+ if (!el)
21
+ throw new Error(`weave cdk portal: container "${target}" matched no element`);
22
+ return el;
23
+ }
24
+ /**
25
+ * Attach `content` (a `Node` or a factory returning one) into `options.container`
26
+ * (default `<body>`). Returns a {@link PortalHandle}. If called inside an owner
27
+ * scope (a component `setup`, an effect), the portal auto-detaches when that scope
28
+ * disposes, so overlays never leak.
29
+ */
30
+ export function portal(content, options = {}) {
31
+ const container = resolveContainer(options.container ?? (typeof document !== 'undefined' ? document.body : undefined));
32
+ const node = typeof content === 'function' ? content() : content;
33
+ // A fragment empties into the container on append — capture its children first so
34
+ // detach() can remove exactly what we added.
35
+ const nodes = node instanceof DocumentFragment ? [...node.childNodes] : [node];
36
+ container.append(node);
37
+ const _attached = signal(true);
38
+ let done = false;
39
+ const detach = () => {
40
+ if (done)
41
+ return;
42
+ done = true;
43
+ for (const n of nodes)
44
+ n.remove();
45
+ _attached.set(false);
46
+ };
47
+ // Owner-scoped safety net: tear down with the surrounding scope (no-op outside one).
48
+ onDispose(detach);
49
+ return {
50
+ container,
51
+ attached: () => _attached(),
52
+ detach,
53
+ };
54
+ }
55
+ //# sourceMappingURL=portal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal.js","sourceRoot":"","sources":["../../src/cdk/portal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAE,SAAS,EAAe,MAAM,0BAA0B,CAAC;AAgB1E,SAAS,gBAAgB,CAAC,MAAwB;IAChD,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,EAAE,GAAmB,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1D,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,sBAAsB,CAAC,CAAC;IACvF,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,OAA4B,EAAE,UAAyB,EAAE;IAC9E,MAAM,SAAS,GAAY,gBAAgB,CACzC,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAE,SAAgC,CAAC,CAC3G,CAAC;IACF,MAAM,IAAI,GAAS,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IACvE,kFAAkF;IAClF,6CAA6C;IAC7C,MAAM,KAAK,GACT,IAAI,YAAY,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAI,IAAI,CAAC,UAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAiB,CAAC,CAAC;IAC3G,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEvB,MAAM,SAAS,GAAoB,MAAM,CAAU,IAAI,CAAC,CAAC;IACzD,IAAI,IAAI,GAAY,KAAK,CAAC;IAE1B,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,IAAI,IAAI;YAAE,OAAO;QACjB,IAAI,GAAG,IAAI,CAAC;QACZ,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,CAAC,CAAC,MAAM,EAAE,CAAC;QAClC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF,qFAAqF;IACrF,SAAS,CAAC,MAAM,CAAC,CAAC;IAElB,OAAO;QACL,SAAS;QACT,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE;QAC3B,MAAM;KACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Connected positioning — the in-house "floating" engine (our @floating-ui / Material
3
+ * `FlexibleConnectedPositionStrategy`, zero-dep). Anchors an overlay panel to an origin
4
+ * element via a list of preferred connected positions, then:
5
+ * • picks the first preferred position that fully fits the viewport,
6
+ * • **flips** to a fallback when the preferred one overflows,
7
+ * • **shifts** (clamps) along the axes to keep the panel on-screen if none fit,
8
+ * • reports the position it actually applied (for arrow placement / transform-origin),
9
+ * • repositions on scroll/resize while attached.
10
+ *
11
+ * Pure geometry against `getBoundingClientRect` + the viewport. RTL-aware: `start`/`end`
12
+ * resolve through `activeDirection()`. Plugs into the overlay as a `PositionStrategy`.
13
+ */
14
+ import type { PositionStrategy } from './overlay.js';
15
+ type H = 'start' | 'center' | 'end';
16
+ type V = 'top' | 'center' | 'bottom';
17
+ /** A named preset. `-start`/`-end` follow text direction (RTL-aware). */
18
+ export type PositionName = 'top' | 'bottom' | 'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'left-start' | 'left-end' | 'right-start' | 'right-end';
19
+ /** An explicit origin↔overlay anchor pairing (the escape hatch under the presets). */
20
+ export interface ConnectedPosition {
21
+ originX: H;
22
+ originY: V;
23
+ overlayX: H;
24
+ overlayY: V;
25
+ offsetX?: number;
26
+ offsetY?: number;
27
+ }
28
+ /** Anything with a viewport rect — an `Element` or a virtual anchor. */
29
+ export interface PositionOrigin {
30
+ getBoundingClientRect(): DOMRect;
31
+ }
32
+ export interface ConnectedPositionOptions {
33
+ /** Preferred positions in fallback (flip) order. Default `['bottom-start','top-start']`. */
34
+ positions?: (PositionName | ConnectedPosition)[];
35
+ /** Gap (px) between origin and overlay along the connection axis (applied to presets). */
36
+ offset?: number;
37
+ /** Minimum gap (px) to keep from each viewport edge. Default 8. */
38
+ viewportMargin?: number;
39
+ /** Reposition on scroll/resize while attached. Default true. */
40
+ autoUpdate?: boolean;
41
+ }
42
+ export interface ConnectedPositionStrategy extends PositionStrategy {
43
+ /** The position actually applied after flip/shift. Reactive; null before first apply. */
44
+ appliedPosition(): ConnectedPosition | null;
45
+ }
46
+ /**
47
+ * Create a connected position strategy anchoring the overlay to `origin`. Pass it as
48
+ * `createOverlay({ positionStrategy })`, or call `apply(el)` directly on an attached
49
+ * element.
50
+ */
51
+ export declare function connectedPosition(origin: PositionOrigin, options?: ConnectedPositionOptions): ConnectedPositionStrategy;
52
+ export {};
53
+ //# sourceMappingURL=positioning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"positioning.d.ts","sourceRoot":"","sources":["../../src/cdk/positioning.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,KAAK,CAAC,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AACpC,KAAK,CAAC,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAErC,yEAAyE;AACzE,MAAM,MAAM,YAAY,GACpB,KAAK,GACL,QAAQ,GACR,MAAM,GACN,OAAO,GACP,WAAW,GACX,SAAS,GACT,cAAc,GACd,YAAY,GACZ,YAAY,GACZ,UAAU,GACV,aAAa,GACb,WAAW,CAAC;AAEhB,sFAAsF;AACtF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,CAAC,CAAC;IACZ,QAAQ,EAAE,CAAC,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,qBAAqB,IAAI,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,wBAAwB;IACvC,4FAA4F;IAC5F,SAAS,CAAC,EAAE,CAAC,YAAY,GAAG,iBAAiB,CAAC,EAAE,CAAC;IACjD,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,yBAA0B,SAAQ,gBAAgB;IACjE,yFAAyF;IACzF,eAAe,IAAI,iBAAiB,GAAG,IAAI,CAAC;CAC7C;AAuDD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,wBAA6B,GACrC,yBAAyB,CAkF3B"}