@mhmo91/schmancy 0.9.4 → 0.9.6

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 (1037) hide show
  1. package/.claude-plugin/plugin.json +13 -0
  2. package/README.md +14 -4
  3. package/custom-elements.json +493 -718
  4. package/dist/.claude-plugin/plugin.json +13 -0
  5. package/dist/animation-Bcwh107v.cjs.map +1 -0
  6. package/dist/animation-CXKSuUoE.js.map +1 -0
  7. package/dist/area-BARjKpE9.js +590 -0
  8. package/dist/area-BARjKpE9.js.map +1 -0
  9. package/dist/area-D9b9dHQr.cjs +12 -0
  10. package/dist/area-D9b9dHQr.cjs.map +1 -0
  11. package/dist/area.cjs +1 -1
  12. package/dist/area.js +1 -1
  13. package/dist/audio-C7TzWI8M.js +335 -0
  14. package/dist/audio-C7TzWI8M.js.map +1 -0
  15. package/dist/audio-DUVz7Ars.cjs +1 -0
  16. package/dist/audio-DUVz7Ars.cjs.map +1 -0
  17. package/dist/audio.cjs +1 -1
  18. package/dist/audio.js +2 -2
  19. package/dist/autocomplete-AI2CCJmK.cjs +115 -0
  20. package/dist/autocomplete-AI2CCJmK.cjs.map +1 -0
  21. package/dist/autocomplete-DOimwVMP.js +404 -0
  22. package/dist/autocomplete-DOimwVMP.js.map +1 -0
  23. package/dist/autocomplete.cjs +1 -1
  24. package/dist/autocomplete.js +1 -1
  25. package/dist/badge.cjs +1 -1
  26. package/dist/badge.js +1 -1
  27. package/dist/boat-Bk4u-LzT.cjs +80 -0
  28. package/dist/boat-Bk4u-LzT.cjs.map +1 -0
  29. package/dist/boat-DrghVeWK.js +347 -0
  30. package/dist/boat-DrghVeWK.js.map +1 -0
  31. package/dist/boat.cjs +1 -1
  32. package/dist/boat.js +1 -1
  33. package/dist/breadcrumb.cjs +34 -0
  34. package/dist/breadcrumb.cjs.map +1 -0
  35. package/dist/breadcrumb.js +73 -0
  36. package/dist/breadcrumb.js.map +1 -0
  37. package/dist/busy-BmFfwyz_.js +168 -0
  38. package/dist/busy-BmFfwyz_.js.map +1 -0
  39. package/dist/busy-c_q_F8O0.cjs +134 -0
  40. package/dist/busy-c_q_F8O0.cjs.map +1 -0
  41. package/dist/busy.cjs +1 -1
  42. package/dist/busy.js +1 -1
  43. package/dist/button.cjs +4 -4
  44. package/dist/button.cjs.map +1 -1
  45. package/dist/button.js +25 -6
  46. package/dist/button.js.map +1 -1
  47. package/dist/card-BADJHUMA.js +285 -0
  48. package/dist/card-BADJHUMA.js.map +1 -0
  49. package/dist/card-C_E944_Z.cjs +177 -0
  50. package/dist/card-C_E944_Z.cjs.map +1 -0
  51. package/dist/card.cjs +1 -1
  52. package/dist/card.js +1 -1
  53. package/dist/charts.cjs +3 -3
  54. package/dist/charts.cjs.map +1 -1
  55. package/dist/charts.js +2 -2
  56. package/dist/checkbox-D7rvCrGk.js +629 -0
  57. package/dist/checkbox-D7rvCrGk.js.map +1 -0
  58. package/dist/checkbox-ZqDoCagB.cjs +39 -0
  59. package/dist/checkbox-ZqDoCagB.cjs.map +1 -0
  60. package/dist/checkbox.cjs +1 -1
  61. package/dist/checkbox.js +1 -1
  62. package/dist/chips-Cux635Qs.cjs +253 -0
  63. package/dist/chips-Cux635Qs.cjs.map +1 -0
  64. package/dist/chips-vdzIsesI.js +655 -0
  65. package/dist/chips-vdzIsesI.js.map +1 -0
  66. package/dist/chips.cjs +1 -1
  67. package/dist/chips.js +2 -2
  68. package/dist/code-highlight-C9lKek2p.cjs +190 -0
  69. package/dist/code-highlight-C9lKek2p.cjs.map +1 -0
  70. package/dist/code-highlight-D6yruol6.js +291 -0
  71. package/dist/code-highlight-D6yruol6.js.map +1 -0
  72. package/dist/code-highlight.cjs +1 -1
  73. package/dist/code-highlight.js +1 -1
  74. package/dist/components-ByRyEzz5.cjs +73 -0
  75. package/dist/components-ByRyEzz5.cjs.map +1 -0
  76. package/dist/components-DSvPKR9Q.js +730 -0
  77. package/dist/components-DSvPKR9Q.js.map +1 -0
  78. package/dist/components.cjs +1 -1
  79. package/dist/components.js +1 -1
  80. package/dist/connectivity.cjs +7 -7
  81. package/dist/connectivity.cjs.map +1 -1
  82. package/dist/connectivity.js +5 -4
  83. package/dist/connectivity.js.map +1 -1
  84. package/dist/content-drawer.cjs +1 -1
  85. package/dist/content-drawer.js +1 -1
  86. package/dist/cursor-glow-82y5h3E4.cjs +1 -0
  87. package/dist/cursor-glow-82y5h3E4.cjs.map +1 -0
  88. package/dist/cursor-glow-C2YRrB8Z.js +46 -0
  89. package/dist/cursor-glow-C2YRrB8Z.js.map +1 -0
  90. package/dist/date-range-DJsavigf.cjs +131 -0
  91. package/dist/date-range-DJsavigf.cjs.map +1 -0
  92. package/dist/date-range-inline-B87TDYI6.js +267 -0
  93. package/dist/date-range-inline-B87TDYI6.js.map +1 -0
  94. package/dist/date-range-inline-De-M0VmL.cjs +43 -0
  95. package/dist/date-range-inline-De-M0VmL.cjs.map +1 -0
  96. package/dist/date-range-inline.cjs +1 -1
  97. package/dist/date-range-inline.js +1 -1
  98. package/dist/date-range-tEX2Jx2j.js +946 -0
  99. package/dist/date-range-tEX2Jx2j.js.map +1 -0
  100. package/dist/date-range.cjs +1 -1
  101. package/dist/date-range.js +1 -1
  102. package/dist/delay-BvVdfhAR.cjs +9 -0
  103. package/dist/delay-BvVdfhAR.cjs.map +1 -0
  104. package/dist/delay-CZw37zps.js +347 -0
  105. package/dist/delay-CZw37zps.js.map +1 -0
  106. package/dist/delay.cjs +1 -1
  107. package/dist/delay.js +1 -1
  108. package/dist/details-Bhz8_whd.cjs +168 -0
  109. package/dist/details-Bhz8_whd.cjs.map +1 -0
  110. package/dist/details-D7VTnLOh.js +294 -0
  111. package/dist/details-D7VTnLOh.js.map +1 -0
  112. package/dist/details.cjs +1 -1
  113. package/dist/details.js +1 -1
  114. package/dist/dialog-service-ClFrOWf4.js +193 -0
  115. package/dist/dialog-service-ClFrOWf4.js.map +1 -0
  116. package/dist/dialog-service-DcuAavp2.cjs +1 -0
  117. package/dist/dialog-service-DcuAavp2.cjs.map +1 -0
  118. package/dist/dialog.cjs +18 -11
  119. package/dist/dialog.cjs.map +1 -1
  120. package/dist/dialog.js +66 -43
  121. package/dist/dialog.js.map +1 -1
  122. package/dist/directives.cjs +1 -1
  123. package/dist/directives.js +5 -5
  124. package/dist/divider-S0bHwCCS.cjs +57 -0
  125. package/dist/divider-S0bHwCCS.cjs.map +1 -0
  126. package/dist/divider-zS232JDr.js +87 -0
  127. package/dist/divider-zS232JDr.js.map +1 -0
  128. package/dist/divider.cjs +1 -1
  129. package/dist/divider.js +1 -1
  130. package/dist/dropdown.cjs +4 -4
  131. package/dist/dropdown.cjs.map +1 -1
  132. package/dist/dropdown.js +8 -7
  133. package/dist/dropdown.js.map +1 -1
  134. package/dist/expand-BXt9SqAF.js +337 -0
  135. package/dist/expand-BXt9SqAF.js.map +1 -0
  136. package/dist/expand-Dr7TFXpl.cjs +141 -0
  137. package/dist/expand-Dr7TFXpl.cjs.map +1 -0
  138. package/dist/expand.cjs +1 -1
  139. package/dist/expand.js +1 -1
  140. package/dist/extra-BmZTXAp0.cjs +31 -0
  141. package/dist/extra-BmZTXAp0.cjs.map +1 -0
  142. package/dist/extra-COYhsOyZ.js +3435 -0
  143. package/dist/extra-COYhsOyZ.js.map +1 -0
  144. package/dist/extra.cjs +1 -1
  145. package/dist/extra.js +1 -1
  146. package/dist/float-CSRW-Rrd.cjs +1 -0
  147. package/dist/float-CSRW-Rrd.cjs.map +1 -0
  148. package/dist/float-DCXafWh6.js +5 -0
  149. package/dist/float-DCXafWh6.js.map +1 -0
  150. package/dist/float.cjs +1 -1
  151. package/dist/float.js +1 -1
  152. package/dist/flow-CqgDEIqK.js.map +1 -0
  153. package/dist/flow-DSu4PLt1.cjs.map +1 -0
  154. package/dist/form-CAY9GSCd.cjs +1 -0
  155. package/dist/form-CAY9GSCd.cjs.map +1 -0
  156. package/dist/form-D2cJ58TB.js +68 -0
  157. package/dist/form-D2cJ58TB.js.map +1 -0
  158. package/dist/form.cjs +1 -1
  159. package/dist/form.js +2 -1
  160. package/dist/hashContent-kKvXKFa9.cjs.map +1 -0
  161. package/dist/hashContent-nD2uWwi2.js.map +1 -0
  162. package/dist/icons-BbaI9Zf-.js +162 -0
  163. package/dist/icons-BbaI9Zf-.js.map +1 -0
  164. package/dist/icons-DPUeLS_Y.cjs +52 -0
  165. package/dist/icons-DPUeLS_Y.cjs.map +1 -0
  166. package/dist/icons.cjs +1 -1
  167. package/dist/icons.js +1 -1
  168. package/dist/iframe-CEDOvkql.js +45 -0
  169. package/dist/iframe-CEDOvkql.js.map +1 -0
  170. package/dist/iframe-Ct50FYXq.cjs +24 -0
  171. package/dist/iframe-Ct50FYXq.cjs.map +1 -0
  172. package/dist/iframe.cjs +1 -1
  173. package/dist/iframe.js +1 -1
  174. package/dist/index.cjs +1 -1
  175. package/dist/index.js +65 -59
  176. package/dist/input-DMjpf6V8.cjs +51 -0
  177. package/dist/input-DMjpf6V8.cjs.map +1 -0
  178. package/dist/input-Ri72dn5t.js +364 -0
  179. package/dist/input-Ri72dn5t.js.map +1 -0
  180. package/dist/input-chip-BhjGVpc3.cjs +146 -0
  181. package/dist/input-chip-BhjGVpc3.cjs.map +1 -0
  182. package/dist/input-chip-CI4__N8w.js +305 -0
  183. package/dist/input-chip-CI4__N8w.js.map +1 -0
  184. package/dist/input.cjs +1 -1
  185. package/dist/input.js +1 -1
  186. package/dist/intersection-D1v1UCVv.cjs.map +1 -0
  187. package/dist/intersection-LfEsy29T.js.map +1 -0
  188. package/dist/json.cjs +3 -3
  189. package/dist/json.cjs.map +1 -1
  190. package/dist/json.js +5 -4
  191. package/dist/json.js.map +1 -1
  192. package/dist/kbd.cjs +28 -0
  193. package/dist/kbd.cjs.map +1 -0
  194. package/dist/kbd.js +45 -0
  195. package/dist/kbd.js.map +1 -0
  196. package/dist/layout-BE2ld1IY.js +94 -0
  197. package/dist/layout-BE2ld1IY.js.map +1 -0
  198. package/dist/layout-D7xOqMkJ.cjs +17 -0
  199. package/dist/layout-D7xOqMkJ.cjs.map +1 -0
  200. package/dist/layout-PZCF3kwl.cjs +1 -0
  201. package/dist/layout-PZCF3kwl.cjs.map +1 -0
  202. package/dist/layout-uAQpJN31.js +268 -0
  203. package/dist/layout-uAQpJN31.js.map +1 -0
  204. package/dist/layout.cjs +1 -1
  205. package/dist/layout.js +2 -2
  206. package/dist/lightbox-C0OEHns9.js +679 -0
  207. package/dist/lightbox-C0OEHns9.js.map +1 -0
  208. package/dist/lightbox-cXRnvHMN.cjs +202 -0
  209. package/dist/lightbox-cXRnvHMN.cjs.map +1 -0
  210. package/dist/lightbox.cjs +1 -1
  211. package/dist/lightbox.js +1 -1
  212. package/dist/list-CmJ5h35b.cjs +40 -0
  213. package/dist/list-CmJ5h35b.cjs.map +1 -0
  214. package/dist/list-d1mHar5p.js +106 -0
  215. package/dist/list-d1mHar5p.js.map +1 -0
  216. package/dist/list.cjs +1 -1
  217. package/dist/list.js +1 -1
  218. package/dist/litElement.mixin-Bj2q1yPw.cjs +1 -0
  219. package/dist/litElement.mixin-Bj2q1yPw.cjs.map +1 -0
  220. package/dist/litElement.mixin-CncaUoxz.js +12 -0
  221. package/dist/litElement.mixin-CncaUoxz.js.map +1 -0
  222. package/dist/magnetic-Dj52WplI.js +47 -0
  223. package/dist/magnetic-Dj52WplI.js.map +1 -0
  224. package/dist/magnetic-aBBnj_vk.cjs +1 -0
  225. package/dist/magnetic-aBBnj_vk.cjs.map +1 -0
  226. package/dist/mailbox-BmChskZc.cjs +1142 -0
  227. package/dist/mailbox-BmChskZc.cjs.map +1 -0
  228. package/dist/mailbox-C4-E93be.js +1585 -0
  229. package/dist/mailbox-C4-E93be.js.map +1 -0
  230. package/dist/mailbox.cjs +1 -1
  231. package/dist/mailbox.js +1 -1
  232. package/dist/map-DHyYLhvy.js +206 -0
  233. package/dist/map-DHyYLhvy.js.map +1 -0
  234. package/dist/map-DYEvlNl0.cjs +80 -0
  235. package/dist/map-DYEvlNl0.cjs.map +1 -0
  236. package/dist/map.cjs +1 -1
  237. package/dist/map.js +1 -1
  238. package/dist/menu-BlPTI6H9.cjs +23 -0
  239. package/dist/menu-BlPTI6H9.cjs.map +1 -0
  240. package/dist/menu-DFDBADp4.js +51 -0
  241. package/dist/menu-DFDBADp4.js.map +1 -0
  242. package/dist/menu.cjs +1 -1
  243. package/dist/menu.js +1 -1
  244. package/dist/mixins.cjs +1 -1
  245. package/dist/mixins.cjs.map +1 -1
  246. package/dist/mixins.js +43 -15
  247. package/dist/mixins.js.map +1 -1
  248. package/dist/nav-drawer.cjs +1 -1
  249. package/dist/nav-drawer.js +1 -1
  250. package/dist/navigation-bar.cjs +1 -1
  251. package/dist/navigation-bar.js +1 -1
  252. package/dist/navigation-rail.cjs +3 -3
  253. package/dist/navigation-rail.cjs.map +1 -1
  254. package/dist/navigation-rail.js +2 -2
  255. package/dist/notification-DGpv8g2H.js +304 -0
  256. package/dist/notification-DGpv8g2H.js.map +1 -0
  257. package/dist/notification-DKVWYhqs.cjs +23 -0
  258. package/dist/notification-DKVWYhqs.cjs.map +1 -0
  259. package/dist/notification.cjs +1 -1
  260. package/dist/notification.js +1 -1
  261. package/dist/option-BD2eh458.js +98 -0
  262. package/dist/option-BD2eh458.js.map +1 -0
  263. package/dist/option-LtSDy2xf.cjs +43 -0
  264. package/dist/option-LtSDy2xf.cjs.map +1 -0
  265. package/dist/option.cjs +1 -1
  266. package/dist/option.js +1 -1
  267. package/dist/overlay-stack-CEYGD9T1.cjs.map +1 -0
  268. package/dist/overlay-stack-Ca4EK2Mu.js.map +1 -0
  269. package/dist/page.cjs +2 -2
  270. package/dist/page.cjs.map +1 -1
  271. package/dist/page.js +5 -5
  272. package/dist/progress-B5ChDPbB.cjs +51 -0
  273. package/dist/progress-B5ChDPbB.cjs.map +1 -0
  274. package/dist/progress-CE1Pk2hi.js +128 -0
  275. package/dist/progress-CE1Pk2hi.js.map +1 -0
  276. package/dist/progress.cjs +1 -1
  277. package/dist/progress.js +1 -1
  278. package/dist/provide-BZ9lq_Be.cjs +1 -0
  279. package/dist/provide-BZ9lq_Be.cjs.map +1 -0
  280. package/dist/provide-jn1Fj1vv.js +107 -0
  281. package/dist/provide-jn1Fj1vv.js.map +1 -0
  282. package/dist/qr-scanner.cjs +2 -2
  283. package/dist/qr-scanner.cjs.map +1 -1
  284. package/dist/qr-scanner.js +2 -2
  285. package/dist/radio-group-Cd9pZ2MR.cjs +40 -0
  286. package/dist/radio-group-Cd9pZ2MR.cjs.map +1 -0
  287. package/dist/radio-group-CyRHgIF3.js +106 -0
  288. package/dist/radio-group-CyRHgIF3.js.map +1 -0
  289. package/dist/radio-group.cjs +1 -1
  290. package/dist/radio-group.js +1 -1
  291. package/dist/range.cjs +4 -4
  292. package/dist/range.cjs.map +1 -1
  293. package/dist/range.js +4 -3
  294. package/dist/range.js.map +1 -1
  295. package/dist/reduced-motion-B83yZbcO.js.map +1 -0
  296. package/dist/reduced-motion-DR32yKEO.cjs.map +1 -0
  297. package/dist/rxjs-utils-Bldch1RO.js.map +1 -0
  298. package/dist/rxjs-utils-hAgKC7vk.cjs.map +1 -0
  299. package/dist/rxjs-utils.cjs +1 -1
  300. package/dist/rxjs-utils.js +1 -1
  301. package/dist/scroll-C_iNOi7E.cjs +26 -0
  302. package/dist/scroll-C_iNOi7E.cjs.map +1 -0
  303. package/dist/scroll-DoliwpRu.js +113 -0
  304. package/dist/scroll-DoliwpRu.js.map +1 -0
  305. package/dist/search-BlGJ6uJv.js.map +1 -0
  306. package/dist/search-C8eAOzBm.cjs.map +1 -0
  307. package/dist/select-CWWuZ2iJ.cjs +56 -0
  308. package/dist/select-CWWuZ2iJ.cjs.map +1 -0
  309. package/dist/select-_vHPXi30.js +305 -0
  310. package/dist/select-_vHPXi30.js.map +1 -0
  311. package/dist/select.cjs +1 -1
  312. package/dist/select.js +1 -1
  313. package/dist/sheet-i1KtxGIj.js +168 -0
  314. package/dist/sheet-i1KtxGIj.js.map +1 -0
  315. package/dist/sheet-r0oEYIdi.cjs +35 -0
  316. package/dist/sheet-r0oEYIdi.cjs.map +1 -0
  317. package/dist/sheet.cjs +1 -1
  318. package/dist/sheet.js +2 -2
  319. package/dist/sheet.service-Cr13Oo6G.cjs +1 -0
  320. package/dist/sheet.service-Cr13Oo6G.cjs.map +1 -0
  321. package/dist/sheet.service-DUO5_kmI.js +86 -0
  322. package/dist/sheet.service-DUO5_kmI.js.map +1 -0
  323. package/dist/skeleton.cjs +33 -0
  324. package/dist/skeleton.cjs.map +1 -0
  325. package/dist/skeleton.js +58 -0
  326. package/dist/skeleton.js.map +1 -0
  327. package/dist/skills/INDEX.md +73 -0
  328. package/dist/skills/SKILL.md +120 -0
  329. package/dist/skills/breadcrumb.md +53 -0
  330. package/dist/skills/kbd.md +40 -0
  331. package/dist/skills/schmancy/INDEX.md +73 -0
  332. package/dist/skills/schmancy/SKILL.md +120 -0
  333. package/dist/skills/schmancy/breadcrumb.md +53 -0
  334. package/dist/skills/schmancy/kbd.md +40 -0
  335. package/dist/skills/schmancy/skeleton.md +40 -0
  336. package/dist/skills/schmancy/splash-screen.md +60 -0
  337. package/dist/skills/schmancy/switch.md +58 -0
  338. package/dist/skills/schmancy/tooltip.md +38 -0
  339. package/dist/skills/schmancy/visually-hidden.md +41 -0
  340. package/dist/skills/skeleton.md +40 -0
  341. package/dist/skills/splash-screen.md +60 -0
  342. package/dist/skills/switch.md +58 -0
  343. package/dist/skills/tooltip.md +38 -0
  344. package/dist/skills/visually-hidden.md +41 -0
  345. package/dist/slider.cjs +3 -3
  346. package/dist/slider.cjs.map +1 -1
  347. package/dist/slider.js +2 -2
  348. package/dist/sound.service-BjSoGjmT.cjs +1 -0
  349. package/dist/sound.service-BjSoGjmT.cjs.map +1 -0
  350. package/dist/sound.service-cdkw3Wkv.js +2353 -0
  351. package/dist/sound.service-cdkw3Wkv.js.map +1 -0
  352. package/dist/splash-screen-CquyPP1C.cjs +41 -0
  353. package/dist/splash-screen-CquyPP1C.cjs.map +1 -0
  354. package/dist/splash-screen-CvucPkpD.js +83 -0
  355. package/dist/splash-screen-CvucPkpD.js.map +1 -0
  356. package/dist/splash-screen.cjs +1 -0
  357. package/dist/splash-screen.js +1 -0
  358. package/dist/src-Bemk2C2P.cjs +269 -0
  359. package/dist/src-Bemk2C2P.cjs.map +1 -0
  360. package/dist/src-f5a3W9Mj.js +1251 -0
  361. package/dist/src-f5a3W9Mj.js.map +1 -0
  362. package/dist/steps.cjs +10 -10
  363. package/dist/steps.cjs.map +1 -1
  364. package/dist/steps.js +10 -9
  365. package/dist/steps.js.map +1 -1
  366. package/dist/store-Bmj6rvZY.js.map +1 -0
  367. package/dist/store-CO4nJyGj.cjs.map +1 -0
  368. package/dist/store.cjs +1 -1
  369. package/dist/store.js +1 -1
  370. package/dist/surface-CDufon40.cjs +7 -0
  371. package/dist/surface-CDufon40.cjs.map +1 -0
  372. package/dist/surface-CkEYJCae.js +22 -0
  373. package/dist/surface-CkEYJCae.js.map +1 -0
  374. package/dist/surface.cjs +1 -1
  375. package/dist/surface.js +1 -1
  376. package/dist/surface.mixin-CSKqQH-0.cjs +297 -0
  377. package/dist/surface.mixin-CSKqQH-0.cjs.map +1 -0
  378. package/dist/surface.mixin-DqMwoddO.js +320 -0
  379. package/dist/surface.mixin-DqMwoddO.js.map +1 -0
  380. package/dist/switch.cjs +69 -0
  381. package/dist/switch.cjs.map +1 -0
  382. package/dist/switch.js +132 -0
  383. package/dist/switch.js.map +1 -0
  384. package/dist/table-DWc1mkpj.cjs +63 -0
  385. package/dist/table-DWc1mkpj.cjs.map +1 -0
  386. package/dist/table-P6VGG7NK.js +631 -0
  387. package/dist/table-P6VGG7NK.js.map +1 -0
  388. package/dist/table.cjs +1 -1
  389. package/dist/table.js +1 -1
  390. package/dist/tabs-CjGjGrqY.js +126 -0
  391. package/dist/tabs-CjGjGrqY.js.map +1 -0
  392. package/dist/tabs-DGJEKuhC.cjs +31 -0
  393. package/dist/tabs-DGJEKuhC.cjs.map +1 -0
  394. package/dist/tabs.cjs +1 -1
  395. package/dist/tabs.js +1 -1
  396. package/dist/tailwind.mixin-Cpa-VnnX.cjs +2 -0
  397. package/dist/tailwind.mixin-Cpa-VnnX.cjs.map +1 -0
  398. package/dist/tailwind.mixin-DufHBjmb.js +219 -0
  399. package/dist/tailwind.mixin-DufHBjmb.js.map +1 -0
  400. package/dist/teleport.cjs +1 -1
  401. package/dist/teleport.js +1 -1
  402. package/dist/textarea-DZT_Ofp5.js +209 -0
  403. package/dist/textarea-DZT_Ofp5.js.map +1 -0
  404. package/dist/textarea-jmTOXrzl.cjs +39 -0
  405. package/dist/textarea-jmTOXrzl.cjs.map +1 -0
  406. package/dist/textarea.cjs +1 -1
  407. package/dist/textarea.js +1 -1
  408. package/dist/theme-CCKqaksQ.cjs +181 -0
  409. package/dist/theme-CCKqaksQ.cjs.map +1 -0
  410. package/dist/theme-CEc32pAv.js +4122 -0
  411. package/dist/theme-CEc32pAv.js.map +1 -0
  412. package/dist/theme-button-BsJcv-Zv.cjs +8 -0
  413. package/dist/theme-button-BsJcv-Zv.cjs.map +1 -0
  414. package/dist/theme-button-dOiAvdKU.js +20 -0
  415. package/dist/theme-button-dOiAvdKU.js.map +1 -0
  416. package/dist/theme-button.cjs +1 -1
  417. package/dist/theme-button.js +1 -1
  418. package/dist/theme.cjs +1 -1
  419. package/dist/theme.events-Bw3mYjUA.js.map +1 -0
  420. package/dist/theme.events-EznKK2Y0.cjs.map +1 -0
  421. package/dist/theme.interface-CM26m9te.cjs.map +1 -0
  422. package/dist/theme.interface-FAUIgbIq.js.map +1 -0
  423. package/dist/theme.js +5 -5
  424. package/dist/theme.service-ETiKUwVy.cjs +1 -0
  425. package/dist/theme.service-ETiKUwVy.cjs.map +1 -0
  426. package/dist/theme.service-_qP5WvB9.js +108 -0
  427. package/dist/theme.service-_qP5WvB9.js.map +1 -0
  428. package/dist/tooltip.cjs +1 -6
  429. package/dist/tooltip.cjs.map +1 -1
  430. package/dist/tooltip.js +51 -135
  431. package/dist/tooltip.js.map +1 -1
  432. package/dist/tree.cjs +14 -5
  433. package/dist/tree.cjs.map +1 -1
  434. package/dist/tree.js +28 -6
  435. package/dist/tree.js.map +1 -1
  436. package/dist/tslib.es6-Bd-92OW3.cjs +1 -0
  437. package/dist/tslib.es6-Bd-92OW3.cjs.map +1 -0
  438. package/dist/tslib.es6-CI1onEZb.js +7 -0
  439. package/dist/tslib.es6-CI1onEZb.js.map +1 -0
  440. package/dist/typewriter-ByIL2Mh-.cjs +123 -0
  441. package/dist/typewriter-ByIL2Mh-.cjs.map +1 -0
  442. package/dist/typewriter-vOQ3bDLb.js +701 -0
  443. package/dist/typewriter-vOQ3bDLb.js.map +1 -0
  444. package/dist/typewriter.cjs +1 -1
  445. package/dist/typewriter.js +1 -1
  446. package/dist/typography.cjs +4 -4
  447. package/dist/typography.cjs.map +1 -1
  448. package/dist/typography.js +10 -9
  449. package/dist/typography.js.map +1 -1
  450. package/dist/utils-Cq0m3LYo.js +259 -0
  451. package/dist/utils-Cq0m3LYo.js.map +1 -0
  452. package/dist/utils-D2kE-6zc.cjs +1 -0
  453. package/dist/utils-D2kE-6zc.cjs.map +1 -0
  454. package/dist/utils.cjs +1 -1
  455. package/dist/utils.js +5 -5
  456. package/dist/visually-hidden.cjs +13 -0
  457. package/dist/visually-hidden.cjs.map +1 -0
  458. package/dist/visually-hidden.js +24 -0
  459. package/dist/visually-hidden.js.map +1 -0
  460. package/dist/window-BS7ZQjgH.cjs +59 -0
  461. package/dist/window-BS7ZQjgH.cjs.map +1 -0
  462. package/dist/window-WnAihpsA.js +548 -0
  463. package/dist/window-WnAihpsA.js.map +1 -0
  464. package/dist/window.cjs +1 -1
  465. package/dist/window.js +1 -1
  466. package/mixins/formField.mixin.ts +96 -69
  467. package/mixins/tailwind.css +11 -0
  468. package/package.json +19 -28
  469. package/skills/schmancy/INDEX.md +73 -0
  470. package/skills/schmancy/SKILL.md +120 -0
  471. package/skills/schmancy/animation.md +64 -0
  472. package/skills/schmancy/area.md +141 -0
  473. package/skills/schmancy/audio.md +69 -0
  474. package/skills/schmancy/autocomplete.md +53 -0
  475. package/skills/schmancy/avatar.md +47 -0
  476. package/skills/schmancy/badge.md +41 -0
  477. package/skills/schmancy/boat.md +47 -0
  478. package/skills/schmancy/breadcrumb.md +53 -0
  479. package/skills/schmancy/busy.md +36 -0
  480. package/skills/schmancy/button.md +59 -0
  481. package/skills/schmancy/card.md +53 -0
  482. package/skills/schmancy/charts.md +93 -0
  483. package/skills/schmancy/checkbox.md +36 -0
  484. package/skills/schmancy/chips.md +87 -0
  485. package/skills/schmancy/code-highlight.md +47 -0
  486. package/skills/schmancy/connectivity.md +36 -0
  487. package/skills/schmancy/content-drawer.md +65 -0
  488. package/skills/schmancy/date-range-inline.md +44 -0
  489. package/skills/schmancy/date-range.md +50 -0
  490. package/skills/schmancy/delay.md +50 -0
  491. package/skills/schmancy/details.md +66 -0
  492. package/skills/schmancy/dialog.md +69 -0
  493. package/skills/schmancy/directives.md +298 -0
  494. package/skills/schmancy/discovery.md +67 -0
  495. package/skills/schmancy/divider.md +31 -0
  496. package/skills/schmancy/dropdown.md +47 -0
  497. package/skills/schmancy/expand.md +63 -0
  498. package/skills/schmancy/extra.md +59 -0
  499. package/skills/schmancy/float.md +14 -0
  500. package/skills/schmancy/form.md +49 -0
  501. package/skills/schmancy/icons.md +44 -0
  502. package/skills/schmancy/iframe.md +44 -0
  503. package/skills/schmancy/input.md +56 -0
  504. package/skills/schmancy/json.md +33 -0
  505. package/skills/schmancy/kbd.md +40 -0
  506. package/skills/schmancy/layout.md +63 -0
  507. package/skills/schmancy/lightbox.md +36 -0
  508. package/skills/schmancy/list.md +67 -0
  509. package/skills/schmancy/mailbox.md +102 -0
  510. package/skills/schmancy/map.md +55 -0
  511. package/skills/schmancy/menu.md +39 -0
  512. package/skills/schmancy/mixins.md +99 -0
  513. package/skills/schmancy/nav-drawer.md +52 -0
  514. package/skills/schmancy/navigation-bar.md +48 -0
  515. package/skills/schmancy/navigation-rail.md +62 -0
  516. package/skills/schmancy/notification.md +60 -0
  517. package/skills/schmancy/option.md +43 -0
  518. package/skills/schmancy/page.md +42 -0
  519. package/skills/schmancy/progress.md +30 -0
  520. package/skills/schmancy/qr-scanner.md +51 -0
  521. package/skills/schmancy/radio-group.md +50 -0
  522. package/skills/schmancy/range.md +47 -0
  523. package/skills/schmancy/rxjs-utils.md +60 -0
  524. package/skills/schmancy/select.md +49 -0
  525. package/skills/schmancy/sheet.md +76 -0
  526. package/skills/schmancy/skeleton.md +40 -0
  527. package/skills/schmancy/slider.md +43 -0
  528. package/skills/schmancy/splash-screen.md +60 -0
  529. package/skills/schmancy/steps.md +53 -0
  530. package/skills/schmancy/store.md +126 -0
  531. package/skills/schmancy/surface.md +86 -0
  532. package/skills/schmancy/switch.md +58 -0
  533. package/skills/schmancy/table.md +60 -0
  534. package/skills/schmancy/tabs.md +49 -0
  535. package/skills/schmancy/teleport.md +55 -0
  536. package/skills/schmancy/textarea.md +48 -0
  537. package/skills/schmancy/theme-button.md +26 -0
  538. package/skills/schmancy/theme.md +58 -0
  539. package/skills/schmancy/tooltip.md +38 -0
  540. package/skills/schmancy/tree.md +53 -0
  541. package/skills/schmancy/typewriter.md +46 -0
  542. package/skills/schmancy/typography.md +53 -0
  543. package/skills/schmancy/utils.md +95 -0
  544. package/skills/schmancy/visually-hidden.md +41 -0
  545. package/skills/schmancy/window.md +67 -0
  546. package/src/audio/emotional-sounds.ts +2 -4
  547. package/src/autocomplete/autocomplete.ts +52 -2
  548. package/src/breadcrumb/breadcrumb.ts +109 -0
  549. package/src/breadcrumb/index.ts +1 -0
  550. package/src/button/button.ts +40 -0
  551. package/src/button/icon-button.ts +2 -1
  552. package/src/checkbox/checkbox.test.ts +113 -0
  553. package/src/checkbox/checkbox.ts +41 -1
  554. package/src/chips/filter-chip.ts +15 -0
  555. package/src/chips/input-chip.ts +7 -0
  556. package/src/date-range/date-range-helpers.ts +0 -71
  557. package/src/dialog/dialog-base.mixin.ts +11 -0
  558. package/src/dialog/dialog.component.ts +28 -8
  559. package/src/dropdown/dropdown-content.ts +3 -1
  560. package/src/form/form.test.ts +137 -0
  561. package/src/form/form.ts +142 -158
  562. package/src/form/index.ts +2 -2
  563. package/src/icons/icon.ts +1 -0
  564. package/src/index.ts +6 -0
  565. package/src/kbd/index.ts +1 -0
  566. package/src/kbd/kbd.ts +59 -0
  567. package/src/skeleton/index.ts +1 -0
  568. package/src/skeleton/skeleton.ts +78 -0
  569. package/src/splash-screen/index.ts +1 -0
  570. package/src/splash-screen/splash-screen.ts +154 -0
  571. package/src/switch/index.ts +1 -0
  572. package/src/switch/switch.test.ts +93 -0
  573. package/src/switch/switch.ts +180 -0
  574. package/src/test-utils/a11y.ts +35 -0
  575. package/src/textarea/textarea.ts +32 -2
  576. package/src/tooltip/index.ts +1 -2
  577. package/src/tree/tree.ts +27 -2
  578. package/src/visually-hidden/index.ts +1 -0
  579. package/src/visually-hidden/visually-hidden.ts +39 -0
  580. package/src/window/window-position.ts +1 -74
  581. package/types/mixins/formField.mixin.d.ts +15 -8
  582. package/types/src/audio/emotional-sounds.d.ts +0 -2
  583. package/types/src/autocomplete/autocomplete.d.ts +7 -0
  584. package/types/src/breadcrumb/breadcrumb.d.ts +38 -0
  585. package/types/src/breadcrumb/index.d.ts +1 -0
  586. package/types/src/button/button.d.ts +7 -0
  587. package/types/src/button/icon-button.d.ts +2 -1
  588. package/types/src/checkbox/checkbox.d.ts +6 -0
  589. package/types/src/checkbox/checkbox.test.d.ts +1 -0
  590. package/types/src/chips/filter-chip.d.ts +3 -0
  591. package/types/src/chips/input-chip.d.ts +1 -0
  592. package/types/src/date-range/date-range-helpers.d.ts +0 -12
  593. package/types/src/dialog/dialog.component.d.ts +6 -0
  594. package/types/src/dropdown/dropdown-content.d.ts +3 -1
  595. package/types/src/form/form-v2.d.ts +12 -63
  596. package/types/src/form/form.d.ts +58 -40
  597. package/types/src/form/form.test.d.ts +4 -0
  598. package/types/src/form/index.d.ts +1 -1
  599. package/types/src/icons/icon.d.ts +1 -0
  600. package/types/src/index.d.ts +6 -0
  601. package/types/src/kbd/index.d.ts +1 -0
  602. package/types/src/kbd/kbd.d.ts +25 -0
  603. package/types/src/skeleton/index.d.ts +1 -0
  604. package/types/src/skeleton/skeleton.d.ts +27 -0
  605. package/types/src/splash-screen/index.d.ts +1 -0
  606. package/types/src/splash-screen/splash-screen.d.ts +60 -0
  607. package/types/src/switch/index.d.ts +1 -0
  608. package/types/src/switch/switch.d.ts +54 -0
  609. package/types/src/switch/switch.test.d.ts +1 -0
  610. package/types/src/test-utils/a11y.d.ts +11 -0
  611. package/types/src/textarea/textarea.d.ts +5 -1
  612. package/types/src/tooltip/index.d.ts +0 -1
  613. package/types/src/tree/tree.d.ts +5 -0
  614. package/types/src/visually-hidden/index.d.ts +1 -0
  615. package/types/src/visually-hidden/visually-hidden.d.ts +21 -0
  616. package/types/src/window/window-position.d.ts +1 -35
  617. package/ai/INDEX.md +0 -72
  618. package/ai/tooltip.md +0 -38
  619. package/dist/ai/INDEX.md +0 -72
  620. package/dist/ai/tooltip.md +0 -38
  621. package/dist/animation-BK-8BwY8.js.map +0 -1
  622. package/dist/animation-CO_Csq84.cjs.map +0 -1
  623. package/dist/area-CRoGqD_u.js +0 -590
  624. package/dist/area-CRoGqD_u.js.map +0 -1
  625. package/dist/area-JPykB7A9.cjs +0 -12
  626. package/dist/area-JPykB7A9.cjs.map +0 -1
  627. package/dist/audio-DtYYgzYD.cjs +0 -1
  628. package/dist/audio-DtYYgzYD.cjs.map +0 -1
  629. package/dist/audio-kz8UgPTO.js +0 -335
  630. package/dist/audio-kz8UgPTO.js.map +0 -1
  631. package/dist/autocomplete-5rVhbieU.cjs +0 -111
  632. package/dist/autocomplete-5rVhbieU.cjs.map +0 -1
  633. package/dist/autocomplete-BllPQwr8.js +0 -378
  634. package/dist/autocomplete-BllPQwr8.js.map +0 -1
  635. package/dist/boat-BDTQ-du9.js +0 -347
  636. package/dist/boat-BDTQ-du9.js.map +0 -1
  637. package/dist/boat-DYEAZ8Qj.cjs +0 -80
  638. package/dist/boat-DYEAZ8Qj.cjs.map +0 -1
  639. package/dist/busy-ChDAeaKF.js +0 -167
  640. package/dist/busy-ChDAeaKF.js.map +0 -1
  641. package/dist/busy-Dj7Xn0Z0.cjs +0 -134
  642. package/dist/busy-Dj7Xn0Z0.cjs.map +0 -1
  643. package/dist/card-BvPWVEJX.cjs +0 -177
  644. package/dist/card-BvPWVEJX.cjs.map +0 -1
  645. package/dist/card-DZFPRPqs.js +0 -284
  646. package/dist/card-DZFPRPqs.js.map +0 -1
  647. package/dist/checkbox-BC_37rsG.cjs +0 -39
  648. package/dist/checkbox-BC_37rsG.cjs.map +0 -1
  649. package/dist/checkbox-GSSjqo6w.js +0 -610
  650. package/dist/checkbox-GSSjqo6w.js.map +0 -1
  651. package/dist/chips-B19XS8Xc.cjs +0 -253
  652. package/dist/chips-B19XS8Xc.cjs.map +0 -1
  653. package/dist/chips-B9oAEfE_.js +0 -645
  654. package/dist/chips-B9oAEfE_.js.map +0 -1
  655. package/dist/code-highlight-DCk5lJY-.js +0 -290
  656. package/dist/code-highlight-DCk5lJY-.js.map +0 -1
  657. package/dist/code-highlight-fSLrlgOb.cjs +0 -190
  658. package/dist/code-highlight-fSLrlgOb.cjs.map +0 -1
  659. package/dist/components-COsM6sJZ.js +0 -730
  660. package/dist/components-COsM6sJZ.js.map +0 -1
  661. package/dist/components-CyD6a7gQ.cjs +0 -73
  662. package/dist/components-CyD6a7gQ.cjs.map +0 -1
  663. package/dist/cursor-glow-Ah7VXSj7.js +0 -46
  664. package/dist/cursor-glow-Ah7VXSj7.js.map +0 -1
  665. package/dist/cursor-glow-DtSy_PJd.cjs +0 -1
  666. package/dist/cursor-glow-DtSy_PJd.cjs.map +0 -1
  667. package/dist/date-range-Sfyco9-n.js +0 -946
  668. package/dist/date-range-Sfyco9-n.js.map +0 -1
  669. package/dist/date-range-ZAaQB22I.cjs +0 -131
  670. package/dist/date-range-ZAaQB22I.cjs.map +0 -1
  671. package/dist/date-range-inline-Bl8qbiQF.js +0 -267
  672. package/dist/date-range-inline-Bl8qbiQF.js.map +0 -1
  673. package/dist/date-range-inline-m7nLjOMI.cjs +0 -43
  674. package/dist/date-range-inline-m7nLjOMI.cjs.map +0 -1
  675. package/dist/delay-7boauN6N.cjs +0 -9
  676. package/dist/delay-7boauN6N.cjs.map +0 -1
  677. package/dist/delay-CgX6m0HN.js +0 -346
  678. package/dist/delay-CgX6m0HN.js.map +0 -1
  679. package/dist/details-BHnk8l4q.cjs +0 -168
  680. package/dist/details-BHnk8l4q.cjs.map +0 -1
  681. package/dist/details-BPkUg8Cq.js +0 -293
  682. package/dist/details-BPkUg8Cq.js.map +0 -1
  683. package/dist/dialog-service-NZEvyEK-.js +0 -193
  684. package/dist/dialog-service-NZEvyEK-.js.map +0 -1
  685. package/dist/dialog-service-VnW4gkmE.cjs +0 -1
  686. package/dist/dialog-service-VnW4gkmE.cjs.map +0 -1
  687. package/dist/divider-CW9a7MMj.js +0 -87
  688. package/dist/divider-CW9a7MMj.js.map +0 -1
  689. package/dist/divider-_khrhrZo.cjs +0 -57
  690. package/dist/divider-_khrhrZo.cjs.map +0 -1
  691. package/dist/expand-Cp7-PH8b.cjs +0 -141
  692. package/dist/expand-Cp7-PH8b.cjs.map +0 -1
  693. package/dist/expand-iQ7EOMP7.js +0 -336
  694. package/dist/expand-iQ7EOMP7.js.map +0 -1
  695. package/dist/extra-IKAiJJhv.cjs +0 -31
  696. package/dist/extra-IKAiJJhv.cjs.map +0 -1
  697. package/dist/extra-wEpvEFbK.js +0 -3435
  698. package/dist/extra-wEpvEFbK.js.map +0 -1
  699. package/dist/float-BQ_urmMs.js +0 -5
  700. package/dist/float-BQ_urmMs.js.map +0 -1
  701. package/dist/float-D5rNC82i.cjs +0 -1
  702. package/dist/float-D5rNC82i.cjs.map +0 -1
  703. package/dist/flow-Bbwn6dRN.cjs.map +0 -1
  704. package/dist/flow-CUj0fDT_.js.map +0 -1
  705. package/dist/form-BqN1AGFj.cjs +0 -1
  706. package/dist/form-BqN1AGFj.cjs.map +0 -1
  707. package/dist/form-CajC5HnO.js +0 -270
  708. package/dist/form-CajC5HnO.js.map +0 -1
  709. package/dist/hashContent-DYM21p6t.js.map +0 -1
  710. package/dist/hashContent-DaeGmY-p.cjs.map +0 -1
  711. package/dist/icons-B57_93VV.cjs +0 -52
  712. package/dist/icons-B57_93VV.cjs.map +0 -1
  713. package/dist/icons-BDqiGXrO.js +0 -161
  714. package/dist/icons-BDqiGXrO.js.map +0 -1
  715. package/dist/iframe-DNHL3GIk.cjs +0 -24
  716. package/dist/iframe-DNHL3GIk.cjs.map +0 -1
  717. package/dist/iframe-WnWPIrBG.js +0 -44
  718. package/dist/iframe-WnWPIrBG.js.map +0 -1
  719. package/dist/input-BiSrTcrR.cjs +0 -51
  720. package/dist/input-BiSrTcrR.cjs.map +0 -1
  721. package/dist/input-VaXHFrRn.js +0 -364
  722. package/dist/input-VaXHFrRn.js.map +0 -1
  723. package/dist/input-chip-Dy-AiP55.cjs +0 -146
  724. package/dist/input-chip-Dy-AiP55.cjs.map +0 -1
  725. package/dist/input-chip-QejNcRnS.js +0 -301
  726. package/dist/input-chip-QejNcRnS.js.map +0 -1
  727. package/dist/intersection-BPLpqYEd.js.map +0 -1
  728. package/dist/intersection-CZpaIHeT.cjs.map +0 -1
  729. package/dist/layout-4C-6_cre.cjs +0 -1
  730. package/dist/layout-4C-6_cre.cjs.map +0 -1
  731. package/dist/layout-CnsXeCAy.js +0 -267
  732. package/dist/layout-CnsXeCAy.js.map +0 -1
  733. package/dist/layout-DNYG3phx.cjs +0 -17
  734. package/dist/layout-DNYG3phx.cjs.map +0 -1
  735. package/dist/layout-yxSlLybo.js +0 -94
  736. package/dist/layout-yxSlLybo.js.map +0 -1
  737. package/dist/lightbox-BrI1Z31s.js +0 -678
  738. package/dist/lightbox-BrI1Z31s.js.map +0 -1
  739. package/dist/lightbox-CmACf0t5.cjs +0 -202
  740. package/dist/lightbox-CmACf0t5.cjs.map +0 -1
  741. package/dist/list-Cm-jjXxM.js +0 -105
  742. package/dist/list-Cm-jjXxM.js.map +0 -1
  743. package/dist/list-swIL9VDv.cjs +0 -40
  744. package/dist/list-swIL9VDv.cjs.map +0 -1
  745. package/dist/litElement.mixin-3llHwB-8.cjs +0 -1
  746. package/dist/litElement.mixin-3llHwB-8.cjs.map +0 -1
  747. package/dist/litElement.mixin-6jJYHCrZ.js +0 -12
  748. package/dist/litElement.mixin-6jJYHCrZ.js.map +0 -1
  749. package/dist/magnetic-BZGFxAWG.js +0 -47
  750. package/dist/magnetic-BZGFxAWG.js.map +0 -1
  751. package/dist/magnetic-Dux4QwO4.cjs +0 -1
  752. package/dist/magnetic-Dux4QwO4.cjs.map +0 -1
  753. package/dist/mailbox-BuvsVaAQ.js +0 -1584
  754. package/dist/mailbox-BuvsVaAQ.js.map +0 -1
  755. package/dist/mailbox-D6LkQcN5.cjs +0 -1142
  756. package/dist/mailbox-D6LkQcN5.cjs.map +0 -1
  757. package/dist/map-CQiKAxC3.js +0 -205
  758. package/dist/map-CQiKAxC3.js.map +0 -1
  759. package/dist/map-D5NN4VET.cjs +0 -80
  760. package/dist/map-D5NN4VET.cjs.map +0 -1
  761. package/dist/menu-C1x04YZw.js +0 -51
  762. package/dist/menu-C1x04YZw.js.map +0 -1
  763. package/dist/menu-CkgMO9K5.cjs +0 -23
  764. package/dist/menu-CkgMO9K5.cjs.map +0 -1
  765. package/dist/notification-BnBgxjF-.js +0 -304
  766. package/dist/notification-BnBgxjF-.js.map +0 -1
  767. package/dist/notification-CZFEhWxc.cjs +0 -23
  768. package/dist/notification-CZFEhWxc.cjs.map +0 -1
  769. package/dist/option-BrxCVwSx.cjs +0 -43
  770. package/dist/option-BrxCVwSx.cjs.map +0 -1
  771. package/dist/option-DBO8xZwd.js +0 -97
  772. package/dist/option-DBO8xZwd.js.map +0 -1
  773. package/dist/overlay-stack-DQey9Qph.cjs.map +0 -1
  774. package/dist/overlay-stack-DT1SdaGW.js.map +0 -1
  775. package/dist/progress-Db2e4_Zd.cjs +0 -51
  776. package/dist/progress-Db2e4_Zd.cjs.map +0 -1
  777. package/dist/progress-DeiHxXo7.js +0 -128
  778. package/dist/progress-DeiHxXo7.js.map +0 -1
  779. package/dist/provide-C1aQhxYo.js +0 -107
  780. package/dist/provide-C1aQhxYo.js.map +0 -1
  781. package/dist/provide-DHnhQtCH.cjs +0 -1
  782. package/dist/provide-DHnhQtCH.cjs.map +0 -1
  783. package/dist/radio-group-Cspwd-Vw.cjs +0 -40
  784. package/dist/radio-group-Cspwd-Vw.cjs.map +0 -1
  785. package/dist/radio-group-zSO0AkJf.js +0 -105
  786. package/dist/radio-group-zSO0AkJf.js.map +0 -1
  787. package/dist/reduced-motion-D-L12p7G.js.map +0 -1
  788. package/dist/reduced-motion-Ds05GPyz.cjs.map +0 -1
  789. package/dist/rxjs-utils-BSjmI9-Q.js.map +0 -1
  790. package/dist/rxjs-utils-DCsfzeap.cjs.map +0 -1
  791. package/dist/scroll-QMCmbbDv.cjs +0 -26
  792. package/dist/scroll-QMCmbbDv.cjs.map +0 -1
  793. package/dist/scroll-cBDzye64.js +0 -112
  794. package/dist/scroll-cBDzye64.js.map +0 -1
  795. package/dist/search-C4dFHYbX.js.map +0 -1
  796. package/dist/search-Ds8tt7Et.cjs.map +0 -1
  797. package/dist/select-Ct37l3lg.cjs +0 -56
  798. package/dist/select-Ct37l3lg.cjs.map +0 -1
  799. package/dist/select-c6HbWvKP.js +0 -305
  800. package/dist/select-c6HbWvKP.js.map +0 -1
  801. package/dist/sheet-BMXcUiIm.js +0 -168
  802. package/dist/sheet-BMXcUiIm.js.map +0 -1
  803. package/dist/sheet-CQec-bCV.cjs +0 -35
  804. package/dist/sheet-CQec-bCV.cjs.map +0 -1
  805. package/dist/sheet.service-BcPV3Du4.js +0 -86
  806. package/dist/sheet.service-BcPV3Du4.js.map +0 -1
  807. package/dist/sheet.service-Dumvr1HT.cjs +0 -1
  808. package/dist/sheet.service-Dumvr1HT.cjs.map +0 -1
  809. package/dist/sound.service-Bu3EQLv2.cjs +0 -1
  810. package/dist/sound.service-Bu3EQLv2.cjs.map +0 -1
  811. package/dist/sound.service-m3BrSfuH.js +0 -2353
  812. package/dist/sound.service-m3BrSfuH.js.map +0 -1
  813. package/dist/src-BLngW2bl.js +0 -1244
  814. package/dist/src-BLngW2bl.js.map +0 -1
  815. package/dist/src-BtQVyqMy.cjs +0 -269
  816. package/dist/src-BtQVyqMy.cjs.map +0 -1
  817. package/dist/store-CorvD3bT.cjs.map +0 -1
  818. package/dist/store-DYqDLAvT.js.map +0 -1
  819. package/dist/surface-BjKZoJxK.cjs +0 -7
  820. package/dist/surface-BjKZoJxK.cjs.map +0 -1
  821. package/dist/surface-pK8hME5c.js +0 -21
  822. package/dist/surface-pK8hME5c.js.map +0 -1
  823. package/dist/surface.mixin-C5sDI1-_.cjs +0 -297
  824. package/dist/surface.mixin-C5sDI1-_.cjs.map +0 -1
  825. package/dist/surface.mixin-CBNRpJum.js +0 -320
  826. package/dist/surface.mixin-CBNRpJum.js.map +0 -1
  827. package/dist/table-BXIHX9h4.js +0 -631
  828. package/dist/table-BXIHX9h4.js.map +0 -1
  829. package/dist/table-CiqgZzSd.cjs +0 -63
  830. package/dist/table-CiqgZzSd.cjs.map +0 -1
  831. package/dist/tabs-CKa-W4qA.cjs +0 -31
  832. package/dist/tabs-CKa-W4qA.cjs.map +0 -1
  833. package/dist/tabs-nbV5eblZ.js +0 -125
  834. package/dist/tabs-nbV5eblZ.js.map +0 -1
  835. package/dist/tailwind.mixin-BCJOOX1_.js +0 -225
  836. package/dist/tailwind.mixin-BCJOOX1_.js.map +0 -1
  837. package/dist/tailwind.mixin-BF1Huas7.cjs +0 -2
  838. package/dist/tailwind.mixin-BF1Huas7.cjs.map +0 -1
  839. package/dist/textarea-Cp1ZE60O.cjs +0 -35
  840. package/dist/textarea-Cp1ZE60O.cjs.map +0 -1
  841. package/dist/textarea-D7q8exMg.js +0 -195
  842. package/dist/textarea-D7q8exMg.js.map +0 -1
  843. package/dist/theme-Da4SPq9X.cjs +0 -181
  844. package/dist/theme-Da4SPq9X.cjs.map +0 -1
  845. package/dist/theme-_VPV6Bxh.js +0 -4121
  846. package/dist/theme-_VPV6Bxh.js.map +0 -1
  847. package/dist/theme-button--sX8A-m1.js +0 -19
  848. package/dist/theme-button--sX8A-m1.js.map +0 -1
  849. package/dist/theme-button-Ci8VQ7KW.cjs +0 -8
  850. package/dist/theme-button-Ci8VQ7KW.cjs.map +0 -1
  851. package/dist/theme.events-Cv7N4Toe.js.map +0 -1
  852. package/dist/theme.events-DM4H5F2d.cjs.map +0 -1
  853. package/dist/theme.interface-CXloMUCw.js.map +0 -1
  854. package/dist/theme.interface-Da23QAYb.cjs.map +0 -1
  855. package/dist/theme.service-C_tjlqgy.cjs +0 -1
  856. package/dist/theme.service-C_tjlqgy.cjs.map +0 -1
  857. package/dist/theme.service-D9lEas89.js +0 -108
  858. package/dist/theme.service-D9lEas89.js.map +0 -1
  859. package/dist/tslib.es6-D7BIeDVB.cjs.map +0 -1
  860. package/dist/tslib.es6-ErZEp3OO.js.map +0 -1
  861. package/dist/typewriter-B2TnHPjw.cjs +0 -123
  862. package/dist/typewriter-B2TnHPjw.cjs.map +0 -1
  863. package/dist/typewriter-BrZNa8T-.js +0 -700
  864. package/dist/typewriter-BrZNa8T-.js.map +0 -1
  865. package/dist/utils-BcaKtQuA.cjs +0 -1
  866. package/dist/utils-BcaKtQuA.cjs.map +0 -1
  867. package/dist/utils-CoU7M2YS.js +0 -259
  868. package/dist/utils-CoU7M2YS.js.map +0 -1
  869. package/dist/window-CM1ycigo.js +0 -548
  870. package/dist/window-CM1ycigo.js.map +0 -1
  871. package/dist/window-Uii13x_r.cjs +0 -59
  872. package/dist/window-Uii13x_r.cjs.map +0 -1
  873. package/src/form/form-v2.ts +0 -268
  874. package/src/layout/v2/grid.ts +0 -93
  875. package/src/notification/outlet.ts +0 -16
  876. package/src/store/immer-integration.ts +0 -99
  877. package/src/tooltip/tooltip.ts +0 -216
  878. /package/dist/{animation-CO_Csq84.cjs → animation-Bcwh107v.cjs} +0 -0
  879. /package/dist/{animation-BK-8BwY8.js → animation-CXKSuUoE.js} +0 -0
  880. /package/dist/{tslib.es6-ErZEp3OO.js → decorate-D_utPUsC.js} +0 -0
  881. /package/dist/{tslib.es6-D7BIeDVB.cjs → decorate-F9CuyeHg.cjs} +0 -0
  882. /package/dist/{flow-CUj0fDT_.js → flow-CqgDEIqK.js} +0 -0
  883. /package/dist/{flow-Bbwn6dRN.cjs → flow-DSu4PLt1.cjs} +0 -0
  884. /package/dist/{hashContent-DaeGmY-p.cjs → hashContent-kKvXKFa9.cjs} +0 -0
  885. /package/dist/{hashContent-DYM21p6t.js → hashContent-nD2uWwi2.js} +0 -0
  886. /package/dist/{intersection-CZpaIHeT.cjs → intersection-D1v1UCVv.cjs} +0 -0
  887. /package/dist/{intersection-BPLpqYEd.js → intersection-LfEsy29T.js} +0 -0
  888. /package/dist/{overlay-stack-DQey9Qph.cjs → overlay-stack-CEYGD9T1.cjs} +0 -0
  889. /package/dist/{overlay-stack-DT1SdaGW.js → overlay-stack-Ca4EK2Mu.js} +0 -0
  890. /package/dist/{reduced-motion-D-L12p7G.js → reduced-motion-B83yZbcO.js} +0 -0
  891. /package/dist/{reduced-motion-Ds05GPyz.cjs → reduced-motion-DR32yKEO.cjs} +0 -0
  892. /package/dist/{rxjs-utils-BSjmI9-Q.js → rxjs-utils-Bldch1RO.js} +0 -0
  893. /package/dist/{rxjs-utils-DCsfzeap.cjs → rxjs-utils-hAgKC7vk.cjs} +0 -0
  894. /package/dist/{search-C4dFHYbX.js → search-BlGJ6uJv.js} +0 -0
  895. /package/dist/{search-Ds8tt7Et.cjs → search-C8eAOzBm.cjs} +0 -0
  896. /package/{ai → dist/skills}/animation.md +0 -0
  897. /package/{ai → dist/skills}/area.md +0 -0
  898. /package/{ai → dist/skills}/audio.md +0 -0
  899. /package/{ai → dist/skills}/autocomplete.md +0 -0
  900. /package/{ai → dist/skills}/avatar.md +0 -0
  901. /package/{ai → dist/skills}/badge.md +0 -0
  902. /package/{ai → dist/skills}/boat.md +0 -0
  903. /package/{ai → dist/skills}/busy.md +0 -0
  904. /package/{ai → dist/skills}/button.md +0 -0
  905. /package/{ai → dist/skills}/card.md +0 -0
  906. /package/{ai → dist/skills}/charts.md +0 -0
  907. /package/{ai → dist/skills}/checkbox.md +0 -0
  908. /package/{ai → dist/skills}/chips.md +0 -0
  909. /package/{ai → dist/skills}/code-highlight.md +0 -0
  910. /package/{ai → dist/skills}/connectivity.md +0 -0
  911. /package/{ai → dist/skills}/content-drawer.md +0 -0
  912. /package/{ai → dist/skills}/date-range-inline.md +0 -0
  913. /package/{ai → dist/skills}/date-range.md +0 -0
  914. /package/{ai → dist/skills}/delay.md +0 -0
  915. /package/{ai → dist/skills}/details.md +0 -0
  916. /package/{ai → dist/skills}/dialog.md +0 -0
  917. /package/{ai → dist/skills}/directives.md +0 -0
  918. /package/{ai → dist/skills}/discovery.md +0 -0
  919. /package/{ai → dist/skills}/divider.md +0 -0
  920. /package/{ai → dist/skills}/dropdown.md +0 -0
  921. /package/{ai → dist/skills}/expand.md +0 -0
  922. /package/{ai → dist/skills}/extra.md +0 -0
  923. /package/{ai → dist/skills}/float.md +0 -0
  924. /package/{ai → dist/skills}/form.md +0 -0
  925. /package/{ai → dist/skills}/icons.md +0 -0
  926. /package/{ai → dist/skills}/iframe.md +0 -0
  927. /package/{ai → dist/skills}/input.md +0 -0
  928. /package/{ai → dist/skills}/json.md +0 -0
  929. /package/{ai → dist/skills}/layout.md +0 -0
  930. /package/{ai → dist/skills}/lightbox.md +0 -0
  931. /package/{ai → dist/skills}/list.md +0 -0
  932. /package/{ai → dist/skills}/mailbox.md +0 -0
  933. /package/{ai → dist/skills}/map.md +0 -0
  934. /package/{ai → dist/skills}/menu.md +0 -0
  935. /package/{ai → dist/skills}/mixins.md +0 -0
  936. /package/{ai → dist/skills}/nav-drawer.md +0 -0
  937. /package/{ai → dist/skills}/navigation-bar.md +0 -0
  938. /package/{ai → dist/skills}/navigation-rail.md +0 -0
  939. /package/{ai → dist/skills}/notification.md +0 -0
  940. /package/{ai → dist/skills}/option.md +0 -0
  941. /package/{ai → dist/skills}/page.md +0 -0
  942. /package/{ai → dist/skills}/progress.md +0 -0
  943. /package/{ai → dist/skills}/qr-scanner.md +0 -0
  944. /package/{ai → dist/skills}/radio-group.md +0 -0
  945. /package/{ai → dist/skills}/range.md +0 -0
  946. /package/{ai → dist/skills}/rxjs-utils.md +0 -0
  947. /package/dist/{ai → skills/schmancy}/animation.md +0 -0
  948. /package/dist/{ai → skills/schmancy}/area.md +0 -0
  949. /package/dist/{ai → skills/schmancy}/audio.md +0 -0
  950. /package/dist/{ai → skills/schmancy}/autocomplete.md +0 -0
  951. /package/dist/{ai → skills/schmancy}/avatar.md +0 -0
  952. /package/dist/{ai → skills/schmancy}/badge.md +0 -0
  953. /package/dist/{ai → skills/schmancy}/boat.md +0 -0
  954. /package/dist/{ai → skills/schmancy}/busy.md +0 -0
  955. /package/dist/{ai → skills/schmancy}/button.md +0 -0
  956. /package/dist/{ai → skills/schmancy}/card.md +0 -0
  957. /package/dist/{ai → skills/schmancy}/charts.md +0 -0
  958. /package/dist/{ai → skills/schmancy}/checkbox.md +0 -0
  959. /package/dist/{ai → skills/schmancy}/chips.md +0 -0
  960. /package/dist/{ai → skills/schmancy}/code-highlight.md +0 -0
  961. /package/dist/{ai → skills/schmancy}/connectivity.md +0 -0
  962. /package/dist/{ai → skills/schmancy}/content-drawer.md +0 -0
  963. /package/dist/{ai → skills/schmancy}/date-range-inline.md +0 -0
  964. /package/dist/{ai → skills/schmancy}/date-range.md +0 -0
  965. /package/dist/{ai → skills/schmancy}/delay.md +0 -0
  966. /package/dist/{ai → skills/schmancy}/details.md +0 -0
  967. /package/dist/{ai → skills/schmancy}/dialog.md +0 -0
  968. /package/dist/{ai → skills/schmancy}/directives.md +0 -0
  969. /package/dist/{ai → skills/schmancy}/discovery.md +0 -0
  970. /package/dist/{ai → skills/schmancy}/divider.md +0 -0
  971. /package/dist/{ai → skills/schmancy}/dropdown.md +0 -0
  972. /package/dist/{ai → skills/schmancy}/expand.md +0 -0
  973. /package/dist/{ai → skills/schmancy}/extra.md +0 -0
  974. /package/dist/{ai → skills/schmancy}/float.md +0 -0
  975. /package/dist/{ai → skills/schmancy}/form.md +0 -0
  976. /package/dist/{ai → skills/schmancy}/icons.md +0 -0
  977. /package/dist/{ai → skills/schmancy}/iframe.md +0 -0
  978. /package/dist/{ai → skills/schmancy}/input.md +0 -0
  979. /package/dist/{ai → skills/schmancy}/json.md +0 -0
  980. /package/dist/{ai → skills/schmancy}/layout.md +0 -0
  981. /package/dist/{ai → skills/schmancy}/lightbox.md +0 -0
  982. /package/dist/{ai → skills/schmancy}/list.md +0 -0
  983. /package/dist/{ai → skills/schmancy}/mailbox.md +0 -0
  984. /package/dist/{ai → skills/schmancy}/map.md +0 -0
  985. /package/dist/{ai → skills/schmancy}/menu.md +0 -0
  986. /package/dist/{ai → skills/schmancy}/mixins.md +0 -0
  987. /package/dist/{ai → skills/schmancy}/nav-drawer.md +0 -0
  988. /package/dist/{ai → skills/schmancy}/navigation-bar.md +0 -0
  989. /package/dist/{ai → skills/schmancy}/navigation-rail.md +0 -0
  990. /package/dist/{ai → skills/schmancy}/notification.md +0 -0
  991. /package/dist/{ai → skills/schmancy}/option.md +0 -0
  992. /package/dist/{ai → skills/schmancy}/page.md +0 -0
  993. /package/dist/{ai → skills/schmancy}/progress.md +0 -0
  994. /package/dist/{ai → skills/schmancy}/qr-scanner.md +0 -0
  995. /package/dist/{ai → skills/schmancy}/radio-group.md +0 -0
  996. /package/dist/{ai → skills/schmancy}/range.md +0 -0
  997. /package/dist/{ai → skills/schmancy}/rxjs-utils.md +0 -0
  998. /package/{ai → dist/skills/schmancy}/select.md +0 -0
  999. /package/{ai → dist/skills/schmancy}/sheet.md +0 -0
  1000. /package/{ai → dist/skills/schmancy}/slider.md +0 -0
  1001. /package/{ai → dist/skills/schmancy}/steps.md +0 -0
  1002. /package/{ai → dist/skills/schmancy}/store.md +0 -0
  1003. /package/{ai → dist/skills/schmancy}/surface.md +0 -0
  1004. /package/{ai → dist/skills/schmancy}/table.md +0 -0
  1005. /package/{ai → dist/skills/schmancy}/tabs.md +0 -0
  1006. /package/{ai → dist/skills/schmancy}/teleport.md +0 -0
  1007. /package/{ai → dist/skills/schmancy}/textarea.md +0 -0
  1008. /package/{ai → dist/skills/schmancy}/theme-button.md +0 -0
  1009. /package/{ai → dist/skills/schmancy}/theme.md +0 -0
  1010. /package/{ai → dist/skills/schmancy}/tree.md +0 -0
  1011. /package/{ai → dist/skills/schmancy}/typewriter.md +0 -0
  1012. /package/{ai → dist/skills/schmancy}/typography.md +0 -0
  1013. /package/{ai → dist/skills/schmancy}/utils.md +0 -0
  1014. /package/{ai → dist/skills/schmancy}/window.md +0 -0
  1015. /package/dist/{ai → skills}/select.md +0 -0
  1016. /package/dist/{ai → skills}/sheet.md +0 -0
  1017. /package/dist/{ai → skills}/slider.md +0 -0
  1018. /package/dist/{ai → skills}/steps.md +0 -0
  1019. /package/dist/{ai → skills}/store.md +0 -0
  1020. /package/dist/{ai → skills}/surface.md +0 -0
  1021. /package/dist/{ai → skills}/table.md +0 -0
  1022. /package/dist/{ai → skills}/tabs.md +0 -0
  1023. /package/dist/{ai → skills}/teleport.md +0 -0
  1024. /package/dist/{ai → skills}/textarea.md +0 -0
  1025. /package/dist/{ai → skills}/theme-button.md +0 -0
  1026. /package/dist/{ai → skills}/theme.md +0 -0
  1027. /package/dist/{ai → skills}/tree.md +0 -0
  1028. /package/dist/{ai → skills}/typewriter.md +0 -0
  1029. /package/dist/{ai → skills}/typography.md +0 -0
  1030. /package/dist/{ai → skills}/utils.md +0 -0
  1031. /package/dist/{ai → skills}/window.md +0 -0
  1032. /package/dist/{store-DYqDLAvT.js → store-Bmj6rvZY.js} +0 -0
  1033. /package/dist/{store-CorvD3bT.cjs → store-CO4nJyGj.cjs} +0 -0
  1034. /package/dist/{theme.events-Cv7N4Toe.js → theme.events-Bw3mYjUA.js} +0 -0
  1035. /package/dist/{theme.events-DM4H5F2d.cjs → theme.events-EznKK2Y0.cjs} +0 -0
  1036. /package/dist/{theme.interface-Da23QAYb.cjs → theme.interface-CM26m9te.cjs} +0 -0
  1037. /package/dist/{theme.interface-CXloMUCw.js → theme.interface-FAUIgbIq.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.cjs","names":[],"sources":["../src/dialog/dialog-base.mixin.ts","../src/dialog/dialog.component.ts"],"sourcesContent":["import { autoPlacement, autoUpdate, computePosition, offset, shift, size } from '@floating-ui/dom'\nimport { LitElement } from 'lit'\nimport { distinctUntilChanged, filter, fromEvent, map, merge, Subject, takeUntil, tap } from 'rxjs'\nimport type { Constructor } from '../../mixins/constructor'\nimport type { IBaseMixin } from '../../mixins/baseElement'\nimport {\n\tBLACKBIRD_EASING,\n\tDURATION_ENTER,\n\tDURATION_EXIT,\n\tDURATION_BACKDROP,\n\tEASE_OUT,\n\tEASE_IN,\n} from '../utils/animation'\nimport { reducedMotion$ } from '../directives/reduced-motion'\n\n// Mobile breakpoint - matches Tailwind's sm breakpoint\nconst MOBILE_BREAKPOINT = 640\n\n// Tablet breakpoint\nconst TABLET_BREAKPOINT = 1024\n\n/**\n * Fraction of viewport a dialog can occupy before converting to bottom sheet.\n * Tablet (640–1024px): 60% — tighter screens benefit from bottom sheet sooner.\n * Desktop (>1024px): 80% — plenty of room, keep floating longer.\n */\nfunction largeContentThreshold(): number {\n\treturn window.innerWidth < TABLET_BREAKPOINT ? 0.6 : 0.8\n}\n\nexport interface DialogPosition {\n\tx: number\n\ty: number\n}\n\nexport interface VirtualReference {\n\tgetBoundingClientRect: () => DOMRect\n}\n\n/**\n * Interface for the DialogBase mixin methods\n */\nexport interface IDialogBaseMixin {\n\tposition: DialogPosition\n\tisMobile: boolean\n\tdragOffset: number\n\tshow(positionOrEvent?: DialogPosition | MouseEvent | TouchEvent): Promise<boolean>\n\thide(result?: boolean): Promise<void>\n\tisCentered(): boolean\n\tisAnimating(): boolean\n}\n\n/**\n * Dialog mixin with smart positioning using Floating UI.\n *\n * On mobile (< 640px), automatically switches to bottom sheet mode\n * with swipe-to-dismiss gesture. On tablet/desktop, if content exceeds\n * a viewport-dependent threshold, also opens as bottom sheet.\n */\nexport const DialogBase = <T extends Constructor<LitElement & IBaseMixin>>(superClass: T) => {\n\tclass DialogBaseClass extends superClass {\n\t\tposition: DialogPosition = { x: 0, y: 0 }\n\t\tisMobile = false\n\t\tdragOffset = 0\n\n\t\tprotected resolvePromise?: (value: boolean) => void\n\t\tprotected cleanupAutoUpdate?: () => void\n\t\tprotected virtualReference?: VirtualReference\n\n\t\t// Subject to signal when to stop swipe gesture stream\n\t\tprivate readonly stopSwipe$ = new Subject<void>()\n\n\t\t// Focus trap state\n\t\tprivate lastFocusedElement: Element | null = null\n\t\tprivate inertSiblings: HTMLElement[] = []\n\n\t\t// Animation guard\n\t\tprivate animating = false\n\n\t\t/**\n\t\t * Check if the dialog is currently animating\n\t\t */\n\t\tisAnimating(): boolean {\n\t\t\treturn this.animating\n\t\t}\n\n\t\t/**\n\t\t * Override in subclass to return the dialog element\n\t\t */\n\t\tprotected getDialogElement(): HTMLElement | null {\n\t\t\treturn null\n\t\t}\n\n\t\t/**\n\t\t * Override in subclass to return the backdrop element for animations\n\t\t */\n\t\tprotected getBackdropElement(): HTMLElement | null {\n\t\t\treturn null\n\t\t}\n\n\t\t/**\n\t\t * Override in subclass to return the drag handle element for swipe gestures\n\t\t */\n\t\tprotected getDragHandleElement(): HTMLElement | null {\n\t\t\treturn null\n\t\t}\n\n\t\tconnectedCallback(): void {\n\t\t\tsuper.connectedCallback()\n\t\t\tthis.setupResizeListener()\n\t\t}\n\n\t\t/**\n\t\t * Listen for resize to switch between mobile/desktop modes\n\t\t */\n\t\tprivate setupResizeListener(): void {\n\t\t\tfromEvent(window, 'resize')\n\t\t\t\t.pipe(\n\t\t\t\t\tmap(() => window.innerWidth < MOBILE_BREAKPOINT),\n\t\t\t\t\tdistinctUntilChanged(),\n\t\t\t\t\tfilter(() => this.hasAttribute('active')),\n\t\t\t\t\ttap(isMobile => {\n\t\t\t\t\t\tif (this.isMobile !== isMobile) {\n\t\t\t\t\t\t\tthis.isMobile = isMobile\n\t\t\t\t\t\t\tthis.requestUpdate()\n\t\t\t\t\t\t\tconst dialog = this.getDialogElement()\n\t\t\t\t\t\t\tif (dialog) {\n\t\t\t\t\t\t\t\tif (isMobile) {\n\t\t\t\t\t\t\t\t\tthis.applyBottomSheetStyles(dialog)\n\t\t\t\t\t\t\t\t\tthis.setupSwipeGesture(dialog)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tthis.stopSwipe$.next()\n\t\t\t\t\t\t\t\t\tthis.setupPositioning()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t)\n\t\t\t\t.subscribe()\n\t\t}\n\n\t\t/**\n\t\t * Setup RxJS-based swipe gesture for dialog\n\t\t */\n\t\tprivate setupSwipeGesture(dialog: HTMLElement): void {\n\t\t\t// Stop any existing swipe gesture\n\t\t\tthis.stopSwipe$.next()\n\n\t\t\tlet dragStartY = 0\n\t\t\tlet isDragging = false\n\t\t\tlet currentY = 0\n\n\t\t\tconst dragHandle = this.getDragHandleElement()\n\t\t\tconst dragTarget = dragHandle || dialog\n\n\t\t\tconst touchStart$ = fromEvent<TouchEvent>(dragTarget, 'touchstart', { passive: true }).pipe(\n\t\t\t\ttap(e => {\n\t\t\t\t\tconst touch = e.touches[0]\n\t\t\t\t\tconst rect = dialog.getBoundingClientRect()\n\t\t\t\t\tconst touchY = touch.clientY - rect.top\n\n\t\t\t\t\t// Only allow drag from top 80px or drag handle\n\t\t\t\t\tif (touchY > 80 && !dragHandle) return\n\n\t\t\t\t\tisDragging = true\n\t\t\t\t\tdragStartY = touch.clientY\n\t\t\t\t\tcurrentY = 0\n\t\t\t\t\tthis.dragOffset = 0\n\n\t\t\t\t\t// Disable transitions for immediate feedback\n\t\t\t\t\tdialog.style.transition = 'none'\n\t\t\t\t\tdialog.style.willChange = 'transform'\n\t\t\t\t}),\n\t\t\t)\n\n\t\t\tconst touchMove$ = fromEvent<TouchEvent>(dialog, 'touchmove', { passive: false }).pipe(\n\t\t\t\tfilter(() => isDragging),\n\t\t\t\ttap(e => {\n\t\t\t\t\tconst touch = e.touches[0]\n\t\t\t\t\tconst deltaY = touch.clientY - dragStartY\n\n\t\t\t\t\t// Rubber-band effect for upward drag\n\t\t\t\t\tif (deltaY < 0) {\n\t\t\t\t\t\tcurrentY = deltaY * 0.2\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentY = deltaY\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dragOffset = Math.max(0, deltaY)\n\n\t\t\t\t\t// Direct DOM update - 1:1 tracking\n\t\t\t\t\tdialog.style.transform = `translateY(${currentY}px)`\n\n\t\t\t\t\te.preventDefault()\n\t\t\t\t}),\n\t\t\t)\n\n\t\t\tconst touchEnd$ = merge(\n\t\t\t\tfromEvent<TouchEvent>(dialog, 'touchend', { passive: true }),\n\t\t\t\tfromEvent<TouchEvent>(dialog, 'touchcancel', { passive: true }),\n\t\t\t).pipe(\n\t\t\t\tfilter(() => isDragging),\n\t\t\t\ttap(() => {\n\t\t\t\t\tisDragging = false\n\n\t\t\t\t\t// Re-enable transitions for snap animation\n\t\t\t\t\tdialog.style.transition = 'transform 0.3s cubic-bezier(0.16, 1, 0.3, 1)'\n\t\t\t\t\tdialog.style.willChange = ''\n\n\t\t\t\t\tconst dialogHeight = dialog.getBoundingClientRect().height\n\t\t\t\t\tconst threshold = Math.min(100, dialogHeight * 0.25)\n\n\t\t\t\t\tif (this.dragOffset > threshold) {\n\t\t\t\t\t\t// Dismiss - animate out\n\t\t\t\t\t\tdialog.style.transform = 'translateY(100%)'\n\t\t\t\t\t\tthis.hide(false)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Snap back\n\t\t\t\t\t\tdialog.style.transform = 'translateY(0)'\n\t\t\t\t\t\tthis.dragOffset = 0\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\n\t\t\t// Merge all touch streams and subscribe\n\t\t\tmerge(touchStart$, touchMove$, touchEnd$)\n\t\t\t\t.pipe(takeUntil(merge(this.stopSwipe$, this.disconnecting)))\n\t\t\t\t.subscribe()\n\t\t}\n\n\t\t/**\n\t\t * Apply bottom sheet styles for mobile\n\t\t */\n\t\tprivate applyBottomSheetStyles(dialog: HTMLElement): void {\n\t\t\tif (this.cleanupAutoUpdate) {\n\t\t\t\tthis.cleanupAutoUpdate()\n\t\t\t\tthis.cleanupAutoUpdate = undefined\n\t\t\t}\n\n\t\t\tObject.assign(dialog.style, {\n\t\t\t\tposition: '',\n\t\t\t\tleft: '',\n\t\t\t\ttop: '',\n\t\t\t\ttransform: '',\n\t\t\t\tmaxWidth: '',\n\t\t\t})\n\t\t}\n\n\t\t/**\n\t\t * Show the dialog at a specific position\n\t\t */\n\t\tasync show(positionOrEvent?: DialogPosition | MouseEvent | TouchEvent): Promise<boolean> {\n\t\t\tif (this.cleanupAutoUpdate) {\n\t\t\t\tthis.cleanupAutoUpdate()\n\t\t\t\tthis.cleanupAutoUpdate = undefined\n\t\t\t}\n\n\t\t\tthis.isMobile = window.innerWidth < MOBILE_BREAKPOINT\n\n\t\t\tlet x: number, y: number\n\n\t\t\tif (!positionOrEvent) {\n\t\t\t\tx = window.innerWidth / 2\n\t\t\t\ty = window.innerHeight / 2\n\t\t\t} else if ('clientX' in positionOrEvent) {\n\t\t\t\tx = positionOrEvent.clientX\n\t\t\t\ty = positionOrEvent.clientY\n\t\t\t} else if ('touches' in positionOrEvent && positionOrEvent.touches.length) {\n\t\t\t\tx = positionOrEvent.touches[0].clientX\n\t\t\t\ty = positionOrEvent.touches[0].clientY\n\t\t\t} else {\n\t\t\t\tconst pos = positionOrEvent as DialogPosition\n\t\t\t\tx = pos.x\n\t\t\t\ty = pos.y\n\t\t\t}\n\n\t\t\tthis.position = { x, y }\n\n\t\t\tthis.virtualReference = {\n\t\t\t\tgetBoundingClientRect: () => new DOMRect(x, y, 0, 0),\n\t\t\t}\n\n\t\t\tthis.requestUpdate()\n\t\t\tawait this.updateComplete\n\n\t\t\tthis.setAttribute('active', '')\n\t\t\tawait this.updateComplete\n\n\t\t\t// Save focus and set siblings to inert for focus trap\n\t\t\tthis.lastFocusedElement = document.activeElement\n\t\t\tconst parent = this.parentElement\n\t\t\tif (parent) {\n\t\t\t\tthis.inertSiblings = []\n\t\t\t\tfor (let i = 0; i < parent.children.length; i++) {\n\t\t\t\t\tconst sibling = parent.children[i] as HTMLElement\n\t\t\t\t\tif (sibling !== this && 'inert' in sibling) {\n\t\t\t\t\t\tsibling.inert = true\n\t\t\t\t\t\tthis.inertSiblings.push(sibling)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Escape key listener\n\t\t\tfromEvent<KeyboardEvent>(document, 'keydown')\n\t\t\t\t.pipe(\n\t\t\t\t\tfilter(e => e.key === 'Escape'),\n\t\t\t\t\ttap(e => {\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\tthis.hide(false)\n\t\t\t\t\t}),\n\t\t\t\t\ttakeUntil(merge(this.stopSwipe$, this.disconnecting)),\n\t\t\t\t)\n\t\t\t\t.subscribe()\n\n\t\t\tconst dialog = this.getDialogElement()\n\n\t\t\t// If content exceeds viewport threshold on desktop, treat as bottom sheet\n\t\t\tconst threshold = largeContentThreshold()\n\t\t\tif (\n\t\t\t\t!this.isMobile &&\n\t\t\t\tdialog &&\n\t\t\t\t(dialog.scrollHeight > window.innerHeight * threshold ||\n\t\t\t\t\tdialog.scrollWidth > window.innerWidth * threshold)\n\t\t\t) {\n\t\t\t\tthis.isMobile = true\n\t\t\t\tthis.requestUpdate()\n\t\t\t\tawait this.updateComplete\n\t\t\t}\n\n\t\t\tif (this.isMobile) {\n\t\t\t\tif (dialog) {\n\t\t\t\t\tthis.applyBottomSheetStyles(dialog)\n\t\t\t\t\tthis.setupSwipeGesture(dialog)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.setupPositioning()\n\t\t\t}\n\n\t\t\tthis.animating = true\n\t\t\tawait this.animateIn()\n\t\t\tthis.animating = false\n\n\t\t\treturn new Promise<boolean>(resolve => {\n\t\t\t\tthis.resolvePromise = resolve\n\t\t\t})\n\t\t}\n\n\t\t/**\n\t\t * Animate dialog entrance\n\t\t */\n\t\tprivate async animateIn(): Promise<void> {\n\t\t\tconst dialog = this.getDialogElement()\n\t\t\tconst backdrop = this.getBackdropElement()\n\n\t\t\tif (reducedMotion$.value) {\n\t\t\t\tif (backdrop) backdrop.style.opacity = '1'\n\t\t\t\tif (dialog) dialog.style.opacity = '1'\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tbackdrop?.animate([{ opacity: 0 }, { opacity: 1 }], {\n\t\t\t\tduration: DURATION_BACKDROP,\n\t\t\t\teasing: EASE_OUT,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\n\t\t\tif (dialog) {\n\t\t\t\tconst animation = this.isMobile\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{ opacity: 0, transform: 'translateY(100%)' },\n\t\t\t\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t\t\t]\n\t\t\t\t\t: [\n\t\t\t\t\t\t\t{ opacity: 0, transform: 'scale(0.92) translateY(16px)' },\n\t\t\t\t\t\t\t{ opacity: 1, transform: 'scale(1) translateY(0)' },\n\t\t\t\t\t\t]\n\n\t\t\t\tawait dialog.animate(animation, {\n\t\t\t\t\tduration: DURATION_ENTER,\n\t\t\t\t\teasing: BLACKBIRD_EASING,\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t}).finished\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Animate dialog exit\n\t\t */\n\t\tprivate async animateOut(): Promise<void> {\n\t\t\tconst dialog = this.getDialogElement()\n\t\t\tconst backdrop = this.getBackdropElement()\n\n\t\t\tif (reducedMotion$.value) {\n\t\t\t\tif (backdrop) backdrop.style.opacity = '0'\n\t\t\t\tif (dialog) dialog.style.opacity = '0'\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst animations: Promise<Animation>[] = []\n\n\t\t\tif (backdrop) {\n\t\t\t\tanimations.push(\n\t\t\t\t\tbackdrop.animate([{ opacity: 1 }, { opacity: 0 }], {\n\t\t\t\t\t\tduration: DURATION_EXIT,\n\t\t\t\t\t\teasing: EASE_OUT,\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t}).finished,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tif (dialog) {\n\t\t\t\tconst animation = this.isMobile\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t\t\t\t{ opacity: 0, transform: 'translateY(100%)' },\n\t\t\t\t\t\t]\n\t\t\t\t\t: [\n\t\t\t\t\t\t\t{ opacity: 1, transform: 'scale(1) translateY(0)' },\n\t\t\t\t\t\t\t{ opacity: 0, transform: 'scale(0.95) translateY(8px)' },\n\t\t\t\t\t\t]\n\n\t\t\t\tanimations.push(\n\t\t\t\t\tdialog.animate(animation, {\n\t\t\t\t\t\tduration: DURATION_EXIT,\n\t\t\t\t\t\teasing: EASE_IN,\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t}).finished,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tawait Promise.all(animations)\n\t\t}\n\n\t\t/**\n\t\t * Hide the dialog\n\t\t */\n\t\tasync hide(result = false): Promise<void> {\n\t\t\tthis.stopSwipe$.next()\n\n\t\t\tthis.animating = true\n\t\t\tawait this.animateOut()\n\t\t\tthis.animating = false\n\n\t\t\tthis.removeAttribute('active')\n\n\t\t\t// Restore inert siblings\n\t\t\tfor (const el of this.inertSiblings) {\n\t\t\t\tel.inert = false\n\t\t\t}\n\t\t\tthis.inertSiblings = []\n\n\t\t\t// Restore focus\n\t\t\tif (this.lastFocusedElement) {\n\t\t\t\tconst el = this.lastFocusedElement as HTMLElement\n\t\t\t\tif (typeof el.focus === 'function') {\n\t\t\t\t\tel.focus()\n\t\t\t\t}\n\t\t\t\tthis.lastFocusedElement = null\n\t\t\t}\n\n\t\t\tif (this.cleanupAutoUpdate) {\n\t\t\t\tthis.cleanupAutoUpdate()\n\t\t\t\tthis.cleanupAutoUpdate = undefined\n\t\t\t}\n\n\t\t\tif (this.resolvePromise) {\n\t\t\t\tthis.resolvePromise(result)\n\t\t\t\tthis.resolvePromise = undefined\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check if position is near center (only skip Floating UI for truly centered dialogs)\n\t\t */\n\t\tisCentered(): boolean {\n\t\t\t// Use tight tolerance (5%) - only skip Floating UI when position is very close to center\n\t\t\tconst toleranceX = window.innerWidth * 0.05\n\t\t\tconst toleranceY = window.innerHeight * 0.05\n\n\t\t\treturn (\n\t\t\t\tMath.abs(this.position.x - window.innerWidth / 2) < toleranceX &&\n\t\t\t\tMath.abs(this.position.y - window.innerHeight / 2) < toleranceY\n\t\t\t)\n\t\t}\n\n\t\t/**\n\t\t * Setup Floating UI positioning for desktop\n\t\t */\n\t\tprivate setupPositioning(): void {\n\t\t\tconst dialog = this.getDialogElement()\n\t\t\tif (!dialog) return\n\n\t\t\tif (this.isCentered()) return\n\n\t\t\tif (this.virtualReference) {\n\t\t\t\tthis.cleanupAutoUpdate = autoUpdate(\n\t\t\t\t\tthis.virtualReference,\n\t\t\t\t\tdialog,\n\t\t\t\t\t() => this.updatePosition(dialog),\n\t\t\t\t\t{\n\t\t\t\t\t\tancestorScroll: true,\n\t\t\t\t\t\tancestorResize: true,\n\t\t\t\t\t\telementResize: true,\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\tthis.updatePosition(dialog)\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Update position using Floating UI\n\t\t */\n\t\tprivate async updatePosition(dialog: HTMLElement): Promise<void> {\n\t\t\tif (!this.virtualReference) return\n\n\t\t\tconst padding = 16\n\n\t\t\tconst { x, y } = await computePosition(this.virtualReference, dialog, {\n\t\t\t\tstrategy: 'fixed',\n\t\t\t\tmiddleware: [\n\t\t\t\t\toffset(8),\n\t\t\t\t\tautoPlacement({\n\t\t\t\t\t\tpadding,\n\t\t\t\t\t\tallowedPlacements: [\n\t\t\t\t\t\t\t'top-start',\n\t\t\t\t\t\t\t'top-end',\n\t\t\t\t\t\t\t'bottom-start',\n\t\t\t\t\t\t\t'bottom-end',\n\t\t\t\t\t\t\t'left-start',\n\t\t\t\t\t\t\t'left-end',\n\t\t\t\t\t\t\t'right-start',\n\t\t\t\t\t\t\t'right-end',\n\t\t\t\t\t\t],\n\t\t\t\t\t}),\n\t\t\t\t\tshift({ padding }),\n\t\t\t\t\tsize({\n\t\t\t\t\t\tpadding,\n\t\t\t\t\t\tapply({ availableWidth, elements }) {\n\t\t\t\t\t\t\telements.floating.style.maxWidth = `${availableWidth}px`\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t],\n\t\t\t})\n\n\t\t\tObject.assign(dialog.style, {\n\t\t\t\tposition: 'fixed',\n\t\t\t\tleft: `${Math.round(x)}px`,\n\t\t\t\ttop: `${Math.round(y)}px`,\n\t\t\t\ttransform: 'none',\n\t\t\t})\n\t\t}\n\n\t\tdisconnectedCallback(): void {\n\t\t\tthis.stopSwipe$.next()\n\t\t\tif (this.cleanupAutoUpdate) {\n\t\t\t\tthis.cleanupAutoUpdate()\n\t\t\t\tthis.cleanupAutoUpdate = undefined\n\t\t\t}\n\t\t\tsuper.disconnectedCallback()\n\t\t}\n\t}\n\n\treturn DialogBaseClass as Constructor<IDialogBaseMixin> & T\n}\n","import { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js'\nimport { cursorGlow } from '../directives/cursor-glow'\nimport { createRef, ref, type Ref } from 'lit/directives/ref.js'\nimport { when } from 'lit/directives/when.js'\nimport { fromEvent, tap } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\nimport { DialogBase } from './dialog-base.mixin'\nimport { DialogHereMorty, DialogWhereAreYouRicky, DialogWhereAreYouRickyEvent } from './dialog-events'\n\n/**\n * Unified dialog component that handles both content-only and confirm modes.\n *\n * @element schmancy-dialog\n * @slot default - Content slot for dialog body (used in content mode)\n * @slot content - Named slot for custom content in confirm mode\n *\n * @example Content mode (no buttons):\n * ```html\n * <schmancy-dialog>\n * <my-custom-content></my-custom-content>\n * </schmancy-dialog>\n * ```\n *\n * @example Confirm mode (with buttons):\n * ```html\n * <schmancy-dialog\n * title=\"Confirm Action\"\n * message=\"Are you sure?\"\n * confirm-text=\"Yes\"\n * cancel-text=\"No\"\n * ></schmancy-dialog>\n * ```\n */\n@customElement('schmancy-dialog')\nexport class SchmancyDialog extends DialogBase(\n\t$LitElement(css`\n\t\t:host {\n\t\t\tposition: fixed;\n\t\t\tz-index: var(--schmancy-overlay-z, 10000);\n\t\t\tinset: 0;\n\t\t\tdisplay: none;\n\t\t\t--dialog-width: fit-content;\n\t\t}\n\n\t\t:host([active]) {\n\t\t\tdisplay: block;\n\t\t}\n\n\n\t\t/* Luminous glow around the dialog container */\n\t\t.dialog {\n\t\t\tbox-shadow: 0 8px 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);\n\t\t\tborder-radius: var(--schmancy-sys-shape-corner-large);\n\t\t}\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t.dialog { box-shadow: var(--schmancy-sys-elevation-2); }\n\t\t}\n\t`),\n) {\n\t/**\n\t * Unique identifier for the dialog instance\n\t */\n\t@property({ type: String, reflect: true }) uid!: string\n\n\t/**\n\t * Dialog title (enables confirm mode when set)\n\t */\n\t@property({ type: String }) title: string | undefined = undefined\n\n\t/**\n\t * Dialog subtitle\n\t */\n\t@property({ type: String }) subtitle: string | undefined = undefined\n\n\t/**\n\t * Dialog message\n\t */\n\t@property({ type: String }) message: string | undefined = undefined\n\n\t/**\n\t * Text for confirm button (enables confirm mode when set with cancelText)\n\t */\n\t@property({ type: String, attribute: 'confirm-text' }) confirmText: string | undefined = undefined\n\n\t/**\n\t * Text for cancel button\n\t */\n\t@property({ type: String, attribute: 'cancel-text' }) cancelText: string | undefined = undefined\n\n\t/**\n\t * Dialog variant (affects button colors in confirm mode)\n\t */\n\t@property({ type: String }) variant: 'default' | 'danger' = 'default'\n\n\t/**\n\t * Whether to hide action buttons (force content mode)\n\t */\n\t@property({ type: Boolean, attribute: 'hide-actions' }) hideActions = false\n\n\t/**\n\t * Slotted children in the named \"content\" slot (confirm mode custom content)\n\t */\n\t@queryAssignedElements({ slot: 'content', flatten: true })\n\tprivate _contentSlotElements!: HTMLElement[]\n\n\t/**\n\t * Ref to the confirm mode wrapper div\n\t */\n\tprivate _confirmDialogRef: Ref<HTMLElement> = createRef()\n\n\t/**\n\t * Ref to the content mode section element\n\t */\n\tprivate _contentDialogRef: Ref<HTMLElement> = createRef()\n\n\t/**\n\t * Ref to the backdrop element for animations\n\t */\n\tprivate _backdropRef: Ref<HTMLElement> = createRef()\n\n\t/**\n\t * Ref to the drag handle element for swipe gestures\n\t */\n\tprivate _dragHandleRef: Ref<HTMLElement> = createRef()\n\n\t/**\n\t * Return the dialog element for positioning/size measurement.\n\t * In content mode, returns the first slotted child (the actual component).\n\t * In confirm mode, returns the wrapper div.\n\t */\n\tprotected getDialogElement(): HTMLElement | null {\n\t\t// Content mode: use the section wrapper (slotted content may be display:contents)\n\t\tif (this._contentDialogRef.value) return this._contentDialogRef.value\n\t\t// Confirm mode: use the wrapper div\n\t\treturn this._confirmDialogRef.value ?? null\n\t}\n\n\t/**\n\t * Return the backdrop element for animations\n\t */\n\tprotected getBackdropElement(): HTMLElement | null {\n\t\treturn this._backdropRef.value ?? null\n\t}\n\n\t/**\n\t * Return the drag handle element for swipe gestures\n\t */\n\tprotected getDragHandleElement(): HTMLElement | null {\n\t\treturn this._dragHandleRef.value ?? null\n\t}\n\n\t/**\n\t * Check if dialog is in confirm mode (has buttons)\n\t */\n\tprivate get isConfirmMode(): boolean {\n\t\tif (this.hideActions) return false\n\t\treturn !!(this.confirmText?.trim() && this.cancelText?.trim())\n\t}\n\n\t/**\n\t * Handle component connection to DOM\n\t */\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\n\t\t// Listen for \"where are you ricky\" events\n\t\tfromEvent<DialogWhereAreYouRickyEvent>(window, DialogWhereAreYouRicky)\n\t\t\t.pipe(\n\t\t\t\ttap(e => {\n\t\t\t\t\tif (e.detail.uid === this.uid) this.announcePresence()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Announce this dialog's presence to the service\n\t */\n\tprivate announcePresence(): void {\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent(DialogHereMorty, {\n\t\t\t\tdetail: { dialog: this },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\t/**\n\t * Handle confirm action\n\t */\n\tprivate handleConfirm(): void {\n\t\tthis.hide(true)\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent('confirm', {\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\t/**\n\t * Handle cancel/close action\n\t */\n\tprivate handleClose(): void {\n\t\tif (this.isAnimating()) return\n\t\tthis.hide(false)\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent(this.isConfirmMode ? 'cancel' : 'close', {\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\t/**\n\t * Render drag handle for mobile bottom sheet\n\t */\n\tprivate renderDragHandle() {\n\t\treturn html`\n\t\t\t<div ${ref(this._dragHandleRef)} class=\"dialog-drag-handle flex justify-center pt-2 pb-1 cursor-grab active:cursor-grabbing touch-none\">\n\t\t\t\t<div class=\"w-10 h-1 rounded-full bg-outline-variant\"></div>\n\t\t\t</div>\n\t\t`\n\t}\n\n\trender() {\n\t\tconst isCentered = this.isCentered()\n\t\tconst hasCustomContent = this._contentSlotElements?.length > 0\n\n\t\t// Mobile bottom sheet classes\n\t\tconst mobileDialogClasses = {\n\t\t\tdialog: true,\n\t\t\tfixed: true,\n\t\t\t'inset-x-0': true,\n\t\t\t'bottom-0': true,\n\t\t\t'w-full': true,\n\t\t\t'max-h-[90dvh]': true,\n\t\t\t'overflow-hidden': true,\n\t\t\t// Safe area padding for notched devices\n\t\t\t'pb-[env(safe-area-inset-bottom)]': true,\n\t\t}\n\n\t\t// Desktop dialog classes\n\t\tconst desktopDialogClasses = {\n\t\t\tdialog: true,\n\t\t\tfixed: true,\n\t\t\t'w-[var(--dialog-width)]': true,\n\t\t\t'max-w-[calc(100vw-2rem)]': true,\n\t\t\t'max-h-[90dvh]': true,\n\t\t\t'overflow-hidden': true,\n\t\t\t'top-1/2': isCentered,\n\t\t\t'left-1/2': isCentered,\n\t\t\t'-translate-x-1/2': isCentered,\n\t\t\t'-translate-y-1/2': isCentered,\n\t\t}\n\n\t\tconst dialogClasses = this.isMobile ? mobileDialogClasses : desktopDialogClasses\n\n\t\t// Button classes - stack vertically on mobile\n\t\tconst buttonContainerClasses = this.isMobile\n\t\t\t? 'flex flex-col-reverse gap-2 w-full'\n\t\t\t: 'flex justify-end gap-3'\n\n\t\t// Confirm mode: with title/buttons\n\t\tif (this.isConfirmMode) {\n\t\t\treturn html`\n\t\t\t\t<div ${ref(this._backdropRef)} class=\"fixed inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 backdrop-brightness-105\" @click=${this.handleClose}></div>\n\n\t\t\t\t<div ${ref(this._confirmDialogRef)} class=${this.classMap(dialogClasses)} role=\"alertdialog\" aria-modal=\"true\">\n\t\t\t\t\t<schmancy-surface\n\t\t\t\t\t\t${cursorGlow({ radius: 250, intensity: 0.1 })}\n\t\t\t\t\t\trounded=${this.isMobile ? 'top' : 'all'}\n\t\t\t\t\t\ttype=\"glass\"\n\t\t\t\t\t\tfill=\"all\"\n\t\t\t\t\t\tclass=\"overflow-hidden\"\n\t\t\t\t\t>\n\t\t\t\t\t\t${this.isMobile ? this.renderDragHandle() : null}\n\t\t\t\t\t\t<schmancy-scroll direction=\"vertical\" hide class=\"p-4 pt-2\">\n\t\t\t\t\t\t\t<schmancy-form @submit=${this.handleConfirm}>\n\t\t\t\t\t\t\t\t${when(\n\t\t\t\t\t\t\t\t\tthis.title?.trim(),\n\t\t\t\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t\t\t\t<schmancy-typography type=\"title\" token=\"md\" class=\"mb-1\">${this.title}</schmancy-typography>\n\t\t\t\t\t\t\t\t\t\t${when(\n\t\t\t\t\t\t\t\t\t\t\tthis.subtitle?.trim(),\n\t\t\t\t\t\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t\t\t\t\t\t<schmancy-typography type=\"subtitle\" token=\"xs\" class=\"mb-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t${this.subtitle}\n\t\t\t\t\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t${hasCustomContent\n\t\t\t\t\t\t\t\t\t? html`<div class=\"mb-4\"><slot name=\"content\"></slot></div>`\n\t\t\t\t\t\t\t\t\t: when(\n\t\t\t\t\t\t\t\t\t\t\tthis.message?.trim(),\n\t\t\t\t\t\t\t\t\t\t\t() => html`<schmancy-typography type=\"body\" class=\"mb-4\">${this.message}</schmancy-typography>`,\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<div class=${buttonContainerClasses}>\n\t\t\t\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\t\t\t@click=${this.handleClose}\n\t\t\t\t\t\t\t\t\t\tclass=${this.isMobile ? 'w-full' : ''}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t${this.cancelText}\n\t\t\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\t\t\tvariant=\"filled\"\n\t\t\t\t\t\t\t\t\t\tclass=${this.isMobile ? 'w-full' : ''}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t${this.confirmText}\n\t\t\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</schmancy-form>\n\t\t\t\t\t\t</schmancy-scroll>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</div>\n\t\t\t`\n\t\t}\n\n\t\t// Content mode: minimal, just slot\n\t\treturn html`\n\t\t\t<div ${ref(this._backdropRef)} class=\"fixed inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 backdrop-brightness-105\" @click=${this.handleClose}></div>\n\n\t\t\t<section ${ref(this._contentDialogRef)} class=${this.classMap(dialogClasses)} role=\"dialog\" aria-modal=\"true\">\n\t\t\t\t<schmancy-surface ${cursorGlow({ radius: 250, intensity: 0.1 })} rounded=${this.isMobile ? 'top' : 'all'} type=\"glass\" fill=\"all\">\n\t\t\t\t\t${this.isMobile ? this.renderDragHandle() : null}\n\t\t\t\t\t<schmancy-scroll direction=\"vertical\" hide class=\"max-h-[85dvh]\">\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</schmancy-scroll>\n\t\t\t\t</schmancy-surface>\n\t\t\t</section>\n\t\t`\n\t}\n\n\t/**\n\t * Static helper for confirm dialogs\n\t */\n\tstatic async confirm(options: {\n\t\ttitle?: string\n\t\tsubtitle?: string\n\t\tmessage?: string\n\t\tconfirmText?: string\n\t\tcancelText?: string\n\t\tvariant?: 'default' | 'danger'\n\t\tposition?: { x: number; y: number } | MouseEvent | TouchEvent\n\t\twidth?: string\n\t}): Promise<boolean> {\n\t\tlet dialog = document.querySelector('schmancy-dialog[data-static-confirm]') as SchmancyDialog\n\n\t\tif (!dialog) {\n\t\t\tdialog = document.createElement('schmancy-dialog') as SchmancyDialog\n\t\t\tdialog.setAttribute('data-static-confirm', '')\n\t\t\tdocument.body.appendChild(dialog)\n\t\t}\n\n\t\t// Set options\n\t\tdialog.title = options.title\n\t\tdialog.subtitle = options.subtitle\n\t\tdialog.message = options.message\n\t\tdialog.confirmText = options.confirmText ?? 'Confirm'\n\t\tdialog.cancelText = options.cancelText ?? 'Cancel'\n\t\tdialog.variant = options.variant ?? 'default'\n\t\tif (options.width) dialog.style.setProperty('--dialog-width', options.width)\n\n\t\treturn dialog.show(options.position)\n\t}\n\n\t/**\n\t * Simple shorthand - just pass message and optionally an event\n\t */\n\tstatic async ask(message: string, event?: MouseEvent | TouchEvent): Promise<boolean> {\n\t\treturn this.confirm({\n\t\t\tmessage,\n\t\t\tposition: event,\n\t\t})\n\t}\n}\n\n// Alias for backward compatibility\nexport { SchmancyDialog as ConfirmDialog }\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-dialog': SchmancyDialog\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"dialog.cjs","names":[],"sources":["../src/dialog/dialog-base.mixin.ts","../src/dialog/dialog.component.ts"],"sourcesContent":["import { autoPlacement, autoUpdate, computePosition, offset, shift, size } from '@floating-ui/dom'\nimport { LitElement } from 'lit'\nimport { distinctUntilChanged, filter, fromEvent, map, merge, Subject, takeUntil, tap } from 'rxjs'\nimport type { Constructor } from '../../mixins/constructor'\nimport type { IBaseMixin } from '../../mixins/baseElement'\nimport {\n\tBLACKBIRD_EASING,\n\tDURATION_ENTER,\n\tDURATION_EXIT,\n\tDURATION_BACKDROP,\n\tEASE_OUT,\n\tEASE_IN,\n} from '../utils/animation'\nimport { reducedMotion$ } from '../directives/reduced-motion'\n\n// Mobile breakpoint - matches Tailwind's sm breakpoint\nconst MOBILE_BREAKPOINT = 640\n\n// Tablet breakpoint\nconst TABLET_BREAKPOINT = 1024\n\n/**\n * Fraction of viewport a dialog can occupy before converting to bottom sheet.\n * Tablet (640–1024px): 60% — tighter screens benefit from bottom sheet sooner.\n * Desktop (>1024px): 80% — plenty of room, keep floating longer.\n */\nfunction largeContentThreshold(): number {\n\treturn window.innerWidth < TABLET_BREAKPOINT ? 0.6 : 0.8\n}\n\nexport interface DialogPosition {\n\tx: number\n\ty: number\n}\n\nexport interface VirtualReference {\n\tgetBoundingClientRect: () => DOMRect\n}\n\n/**\n * Interface for the DialogBase mixin methods\n */\nexport interface IDialogBaseMixin {\n\tposition: DialogPosition\n\tisMobile: boolean\n\tdragOffset: number\n\tshow(positionOrEvent?: DialogPosition | MouseEvent | TouchEvent): Promise<boolean>\n\thide(result?: boolean): Promise<void>\n\tisCentered(): boolean\n\tisAnimating(): boolean\n}\n\n/**\n * Dialog mixin with smart positioning using Floating UI.\n *\n * On mobile (< 640px), automatically switches to bottom sheet mode\n * with swipe-to-dismiss gesture. On tablet/desktop, if content exceeds\n * a viewport-dependent threshold, also opens as bottom sheet.\n */\nexport const DialogBase = <T extends Constructor<LitElement & IBaseMixin>>(superClass: T) => {\n\tclass DialogBaseClass extends superClass {\n\t\tposition: DialogPosition = { x: 0, y: 0 }\n\t\tisMobile = false\n\t\tdragOffset = 0\n\n\t\tprotected resolvePromise?: (value: boolean) => void\n\t\tprotected cleanupAutoUpdate?: () => void\n\t\tprotected virtualReference?: VirtualReference\n\n\t\t// Subject to signal when to stop swipe gesture stream\n\t\tprivate readonly stopSwipe$ = new Subject<void>()\n\n\t\t// Focus trap state\n\t\tprivate lastFocusedElement: Element | null = null\n\t\tprivate inertSiblings: HTMLElement[] = []\n\n\t\t// Animation guard\n\t\tprivate animating = false\n\n\t\t/** ElementInternals — used for broadcasting `:state(open)` to consumers. */\n\t\tprotected dialogInternals: ElementInternals | undefined = (() => {\n\t\t\ttry {\n\t\t\t\treturn this.attachInternals()\n\t\t\t} catch {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t})()\n\n\t\t/**\n\t\t * Check if the dialog is currently animating\n\t\t */\n\t\tisAnimating(): boolean {\n\t\t\treturn this.animating\n\t\t}\n\n\t\t/**\n\t\t * Override in subclass to return the dialog element\n\t\t */\n\t\tprotected getDialogElement(): HTMLElement | null {\n\t\t\treturn null\n\t\t}\n\n\t\t/**\n\t\t * Override in subclass to return the backdrop element for animations\n\t\t */\n\t\tprotected getBackdropElement(): HTMLElement | null {\n\t\t\treturn null\n\t\t}\n\n\t\t/**\n\t\t * Override in subclass to return the drag handle element for swipe gestures\n\t\t */\n\t\tprotected getDragHandleElement(): HTMLElement | null {\n\t\t\treturn null\n\t\t}\n\n\t\tconnectedCallback(): void {\n\t\t\tsuper.connectedCallback()\n\t\t\tthis.setupResizeListener()\n\t\t}\n\n\t\t/**\n\t\t * Listen for resize to switch between mobile/desktop modes\n\t\t */\n\t\tprivate setupResizeListener(): void {\n\t\t\tfromEvent(window, 'resize')\n\t\t\t\t.pipe(\n\t\t\t\t\tmap(() => window.innerWidth < MOBILE_BREAKPOINT),\n\t\t\t\t\tdistinctUntilChanged(),\n\t\t\t\t\tfilter(() => this.hasAttribute('active')),\n\t\t\t\t\ttap(isMobile => {\n\t\t\t\t\t\tif (this.isMobile !== isMobile) {\n\t\t\t\t\t\t\tthis.isMobile = isMobile\n\t\t\t\t\t\t\tthis.requestUpdate()\n\t\t\t\t\t\t\tconst dialog = this.getDialogElement()\n\t\t\t\t\t\t\tif (dialog) {\n\t\t\t\t\t\t\t\tif (isMobile) {\n\t\t\t\t\t\t\t\t\tthis.applyBottomSheetStyles(dialog)\n\t\t\t\t\t\t\t\t\tthis.setupSwipeGesture(dialog)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tthis.stopSwipe$.next()\n\t\t\t\t\t\t\t\t\tthis.setupPositioning()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t)\n\t\t\t\t.subscribe()\n\t\t}\n\n\t\t/**\n\t\t * Setup RxJS-based swipe gesture for dialog\n\t\t */\n\t\tprivate setupSwipeGesture(dialog: HTMLElement): void {\n\t\t\t// Stop any existing swipe gesture\n\t\t\tthis.stopSwipe$.next()\n\n\t\t\tlet dragStartY = 0\n\t\t\tlet isDragging = false\n\t\t\tlet currentY = 0\n\n\t\t\tconst dragHandle = this.getDragHandleElement()\n\t\t\tconst dragTarget = dragHandle || dialog\n\n\t\t\tconst touchStart$ = fromEvent<TouchEvent>(dragTarget, 'touchstart', { passive: true }).pipe(\n\t\t\t\ttap(e => {\n\t\t\t\t\tconst touch = e.touches[0]\n\t\t\t\t\tconst rect = dialog.getBoundingClientRect()\n\t\t\t\t\tconst touchY = touch.clientY - rect.top\n\n\t\t\t\t\t// Only allow drag from top 80px or drag handle\n\t\t\t\t\tif (touchY > 80 && !dragHandle) return\n\n\t\t\t\t\tisDragging = true\n\t\t\t\t\tdragStartY = touch.clientY\n\t\t\t\t\tcurrentY = 0\n\t\t\t\t\tthis.dragOffset = 0\n\n\t\t\t\t\t// Disable transitions for immediate feedback\n\t\t\t\t\tdialog.style.transition = 'none'\n\t\t\t\t\tdialog.style.willChange = 'transform'\n\t\t\t\t}),\n\t\t\t)\n\n\t\t\tconst touchMove$ = fromEvent<TouchEvent>(dialog, 'touchmove', { passive: false }).pipe(\n\t\t\t\tfilter(() => isDragging),\n\t\t\t\ttap(e => {\n\t\t\t\t\tconst touch = e.touches[0]\n\t\t\t\t\tconst deltaY = touch.clientY - dragStartY\n\n\t\t\t\t\t// Rubber-band effect for upward drag\n\t\t\t\t\tif (deltaY < 0) {\n\t\t\t\t\t\tcurrentY = deltaY * 0.2\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentY = deltaY\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dragOffset = Math.max(0, deltaY)\n\n\t\t\t\t\t// Direct DOM update - 1:1 tracking\n\t\t\t\t\tdialog.style.transform = `translateY(${currentY}px)`\n\n\t\t\t\t\te.preventDefault()\n\t\t\t\t}),\n\t\t\t)\n\n\t\t\tconst touchEnd$ = merge(\n\t\t\t\tfromEvent<TouchEvent>(dialog, 'touchend', { passive: true }),\n\t\t\t\tfromEvent<TouchEvent>(dialog, 'touchcancel', { passive: true }),\n\t\t\t).pipe(\n\t\t\t\tfilter(() => isDragging),\n\t\t\t\ttap(() => {\n\t\t\t\t\tisDragging = false\n\n\t\t\t\t\t// Re-enable transitions for snap animation\n\t\t\t\t\tdialog.style.transition = 'transform 0.3s cubic-bezier(0.16, 1, 0.3, 1)'\n\t\t\t\t\tdialog.style.willChange = ''\n\n\t\t\t\t\tconst dialogHeight = dialog.getBoundingClientRect().height\n\t\t\t\t\tconst threshold = Math.min(100, dialogHeight * 0.25)\n\n\t\t\t\t\tif (this.dragOffset > threshold) {\n\t\t\t\t\t\t// Dismiss - animate out\n\t\t\t\t\t\tdialog.style.transform = 'translateY(100%)'\n\t\t\t\t\t\tthis.hide(false)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Snap back\n\t\t\t\t\t\tdialog.style.transform = 'translateY(0)'\n\t\t\t\t\t\tthis.dragOffset = 0\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\n\t\t\t// Merge all touch streams and subscribe\n\t\t\tmerge(touchStart$, touchMove$, touchEnd$)\n\t\t\t\t.pipe(takeUntil(merge(this.stopSwipe$, this.disconnecting)))\n\t\t\t\t.subscribe()\n\t\t}\n\n\t\t/**\n\t\t * Apply bottom sheet styles for mobile\n\t\t */\n\t\tprivate applyBottomSheetStyles(dialog: HTMLElement): void {\n\t\t\tif (this.cleanupAutoUpdate) {\n\t\t\t\tthis.cleanupAutoUpdate()\n\t\t\t\tthis.cleanupAutoUpdate = undefined\n\t\t\t}\n\n\t\t\tObject.assign(dialog.style, {\n\t\t\t\tposition: '',\n\t\t\t\tleft: '',\n\t\t\t\ttop: '',\n\t\t\t\ttransform: '',\n\t\t\t\tmaxWidth: '',\n\t\t\t})\n\t\t}\n\n\t\t/**\n\t\t * Show the dialog at a specific position\n\t\t */\n\t\tasync show(positionOrEvent?: DialogPosition | MouseEvent | TouchEvent): Promise<boolean> {\n\t\t\tif (this.cleanupAutoUpdate) {\n\t\t\t\tthis.cleanupAutoUpdate()\n\t\t\t\tthis.cleanupAutoUpdate = undefined\n\t\t\t}\n\n\t\t\tthis.isMobile = window.innerWidth < MOBILE_BREAKPOINT\n\n\t\t\tlet x: number, y: number\n\n\t\t\tif (!positionOrEvent) {\n\t\t\t\tx = window.innerWidth / 2\n\t\t\t\ty = window.innerHeight / 2\n\t\t\t} else if ('clientX' in positionOrEvent) {\n\t\t\t\tx = positionOrEvent.clientX\n\t\t\t\ty = positionOrEvent.clientY\n\t\t\t} else if ('touches' in positionOrEvent && positionOrEvent.touches.length) {\n\t\t\t\tx = positionOrEvent.touches[0].clientX\n\t\t\t\ty = positionOrEvent.touches[0].clientY\n\t\t\t} else {\n\t\t\t\tconst pos = positionOrEvent as DialogPosition\n\t\t\t\tx = pos.x\n\t\t\t\ty = pos.y\n\t\t\t}\n\n\t\t\tthis.position = { x, y }\n\n\t\t\tthis.virtualReference = {\n\t\t\t\tgetBoundingClientRect: () => new DOMRect(x, y, 0, 0),\n\t\t\t}\n\n\t\t\tthis.requestUpdate()\n\t\t\tawait this.updateComplete\n\n\t\t\tthis.setAttribute('active', '')\n\t\t\tthis.dialogInternals?.states.add('open')\n\t\t\tawait this.updateComplete\n\n\t\t\t// Save focus and set siblings to inert for focus trap\n\t\t\tthis.lastFocusedElement = document.activeElement\n\t\t\tconst parent = this.parentElement\n\t\t\tif (parent) {\n\t\t\t\tthis.inertSiblings = []\n\t\t\t\tfor (let i = 0; i < parent.children.length; i++) {\n\t\t\t\t\tconst sibling = parent.children[i] as HTMLElement\n\t\t\t\t\tif (sibling !== this && 'inert' in sibling) {\n\t\t\t\t\t\tsibling.inert = true\n\t\t\t\t\t\tthis.inertSiblings.push(sibling)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Escape key listener\n\t\t\tfromEvent<KeyboardEvent>(document, 'keydown')\n\t\t\t\t.pipe(\n\t\t\t\t\tfilter(e => e.key === 'Escape'),\n\t\t\t\t\ttap(e => {\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\tthis.hide(false)\n\t\t\t\t\t}),\n\t\t\t\t\ttakeUntil(merge(this.stopSwipe$, this.disconnecting)),\n\t\t\t\t)\n\t\t\t\t.subscribe()\n\n\t\t\tconst dialog = this.getDialogElement()\n\n\t\t\t// If content exceeds viewport threshold on desktop, treat as bottom sheet\n\t\t\tconst threshold = largeContentThreshold()\n\t\t\tif (\n\t\t\t\t!this.isMobile &&\n\t\t\t\tdialog &&\n\t\t\t\t(dialog.scrollHeight > window.innerHeight * threshold ||\n\t\t\t\t\tdialog.scrollWidth > window.innerWidth * threshold)\n\t\t\t) {\n\t\t\t\tthis.isMobile = true\n\t\t\t\tthis.requestUpdate()\n\t\t\t\tawait this.updateComplete\n\t\t\t}\n\n\t\t\tif (this.isMobile) {\n\t\t\t\tif (dialog) {\n\t\t\t\t\tthis.applyBottomSheetStyles(dialog)\n\t\t\t\t\tthis.setupSwipeGesture(dialog)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.setupPositioning()\n\t\t\t}\n\n\t\t\tthis.animating = true\n\t\t\tawait this.animateIn()\n\t\t\tthis.animating = false\n\n\t\t\treturn new Promise<boolean>(resolve => {\n\t\t\t\tthis.resolvePromise = resolve\n\t\t\t})\n\t\t}\n\n\t\t/**\n\t\t * Animate dialog entrance\n\t\t */\n\t\tprivate async animateIn(): Promise<void> {\n\t\t\tconst dialog = this.getDialogElement()\n\t\t\tconst backdrop = this.getBackdropElement()\n\n\t\t\tif (reducedMotion$.value) {\n\t\t\t\tif (backdrop) backdrop.style.opacity = '1'\n\t\t\t\tif (dialog) dialog.style.opacity = '1'\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tbackdrop?.animate([{ opacity: 0 }, { opacity: 1 }], {\n\t\t\t\tduration: DURATION_BACKDROP,\n\t\t\t\teasing: EASE_OUT,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\n\t\t\tif (dialog) {\n\t\t\t\tconst animation = this.isMobile\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{ opacity: 0, transform: 'translateY(100%)' },\n\t\t\t\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t\t\t]\n\t\t\t\t\t: [\n\t\t\t\t\t\t\t{ opacity: 0, transform: 'scale(0.92) translateY(16px)' },\n\t\t\t\t\t\t\t{ opacity: 1, transform: 'scale(1) translateY(0)' },\n\t\t\t\t\t\t]\n\n\t\t\t\tawait dialog.animate(animation, {\n\t\t\t\t\tduration: DURATION_ENTER,\n\t\t\t\t\teasing: BLACKBIRD_EASING,\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t}).finished\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Animate dialog exit\n\t\t */\n\t\tprivate async animateOut(): Promise<void> {\n\t\t\tconst dialog = this.getDialogElement()\n\t\t\tconst backdrop = this.getBackdropElement()\n\n\t\t\tif (reducedMotion$.value) {\n\t\t\t\tif (backdrop) backdrop.style.opacity = '0'\n\t\t\t\tif (dialog) dialog.style.opacity = '0'\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst animations: Promise<Animation>[] = []\n\n\t\t\tif (backdrop) {\n\t\t\t\tanimations.push(\n\t\t\t\t\tbackdrop.animate([{ opacity: 1 }, { opacity: 0 }], {\n\t\t\t\t\t\tduration: DURATION_EXIT,\n\t\t\t\t\t\teasing: EASE_OUT,\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t}).finished,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tif (dialog) {\n\t\t\t\tconst animation = this.isMobile\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t\t\t\t{ opacity: 0, transform: 'translateY(100%)' },\n\t\t\t\t\t\t]\n\t\t\t\t\t: [\n\t\t\t\t\t\t\t{ opacity: 1, transform: 'scale(1) translateY(0)' },\n\t\t\t\t\t\t\t{ opacity: 0, transform: 'scale(0.95) translateY(8px)' },\n\t\t\t\t\t\t]\n\n\t\t\t\tanimations.push(\n\t\t\t\t\tdialog.animate(animation, {\n\t\t\t\t\t\tduration: DURATION_EXIT,\n\t\t\t\t\t\teasing: EASE_IN,\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t}).finished,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tawait Promise.all(animations)\n\t\t}\n\n\t\t/**\n\t\t * Hide the dialog\n\t\t */\n\t\tasync hide(result = false): Promise<void> {\n\t\t\tthis.stopSwipe$.next()\n\n\t\t\tthis.animating = true\n\t\t\tawait this.animateOut()\n\t\t\tthis.animating = false\n\n\t\t\tthis.removeAttribute('active')\n\t\t\tthis.dialogInternals?.states.delete('open')\n\n\t\t\t// Restore inert siblings\n\t\t\tfor (const el of this.inertSiblings) {\n\t\t\t\tel.inert = false\n\t\t\t}\n\t\t\tthis.inertSiblings = []\n\n\t\t\t// Restore focus\n\t\t\tif (this.lastFocusedElement) {\n\t\t\t\tconst el = this.lastFocusedElement as HTMLElement\n\t\t\t\tif (typeof el.focus === 'function') {\n\t\t\t\t\tel.focus()\n\t\t\t\t}\n\t\t\t\tthis.lastFocusedElement = null\n\t\t\t}\n\n\t\t\tif (this.cleanupAutoUpdate) {\n\t\t\t\tthis.cleanupAutoUpdate()\n\t\t\t\tthis.cleanupAutoUpdate = undefined\n\t\t\t}\n\n\t\t\tif (this.resolvePromise) {\n\t\t\t\tthis.resolvePromise(result)\n\t\t\t\tthis.resolvePromise = undefined\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check if position is near center (only skip Floating UI for truly centered dialogs)\n\t\t */\n\t\tisCentered(): boolean {\n\t\t\t// Use tight tolerance (5%) - only skip Floating UI when position is very close to center\n\t\t\tconst toleranceX = window.innerWidth * 0.05\n\t\t\tconst toleranceY = window.innerHeight * 0.05\n\n\t\t\treturn (\n\t\t\t\tMath.abs(this.position.x - window.innerWidth / 2) < toleranceX &&\n\t\t\t\tMath.abs(this.position.y - window.innerHeight / 2) < toleranceY\n\t\t\t)\n\t\t}\n\n\t\t/**\n\t\t * Setup Floating UI positioning for desktop\n\t\t */\n\t\tprivate setupPositioning(): void {\n\t\t\tconst dialog = this.getDialogElement()\n\t\t\tif (!dialog) return\n\n\t\t\tif (this.isCentered()) return\n\n\t\t\tif (this.virtualReference) {\n\t\t\t\tthis.cleanupAutoUpdate = autoUpdate(\n\t\t\t\t\tthis.virtualReference,\n\t\t\t\t\tdialog,\n\t\t\t\t\t() => this.updatePosition(dialog),\n\t\t\t\t\t{\n\t\t\t\t\t\tancestorScroll: true,\n\t\t\t\t\t\tancestorResize: true,\n\t\t\t\t\t\telementResize: true,\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\tthis.updatePosition(dialog)\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Update position using Floating UI\n\t\t */\n\t\tprivate async updatePosition(dialog: HTMLElement): Promise<void> {\n\t\t\tif (!this.virtualReference) return\n\n\t\t\tconst padding = 16\n\n\t\t\tconst { x, y } = await computePosition(this.virtualReference, dialog, {\n\t\t\t\tstrategy: 'fixed',\n\t\t\t\tmiddleware: [\n\t\t\t\t\toffset(8),\n\t\t\t\t\tautoPlacement({\n\t\t\t\t\t\tpadding,\n\t\t\t\t\t\tallowedPlacements: [\n\t\t\t\t\t\t\t'top-start',\n\t\t\t\t\t\t\t'top-end',\n\t\t\t\t\t\t\t'bottom-start',\n\t\t\t\t\t\t\t'bottom-end',\n\t\t\t\t\t\t\t'left-start',\n\t\t\t\t\t\t\t'left-end',\n\t\t\t\t\t\t\t'right-start',\n\t\t\t\t\t\t\t'right-end',\n\t\t\t\t\t\t],\n\t\t\t\t\t}),\n\t\t\t\t\tshift({ padding }),\n\t\t\t\t\tsize({\n\t\t\t\t\t\tpadding,\n\t\t\t\t\t\tapply({ availableWidth, elements }) {\n\t\t\t\t\t\t\telements.floating.style.maxWidth = `${availableWidth}px`\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t],\n\t\t\t})\n\n\t\t\tObject.assign(dialog.style, {\n\t\t\t\tposition: 'fixed',\n\t\t\t\tleft: `${Math.round(x)}px`,\n\t\t\t\ttop: `${Math.round(y)}px`,\n\t\t\t\ttransform: 'none',\n\t\t\t})\n\t\t}\n\n\t\tdisconnectedCallback(): void {\n\t\t\tthis.stopSwipe$.next()\n\t\t\tif (this.cleanupAutoUpdate) {\n\t\t\t\tthis.cleanupAutoUpdate()\n\t\t\t\tthis.cleanupAutoUpdate = undefined\n\t\t\t}\n\t\t\tsuper.disconnectedCallback()\n\t\t}\n\t}\n\n\treturn DialogBaseClass as Constructor<IDialogBaseMixin> & T\n}\n","import { $LitElement } from '@mixins/index'\nimport { css, html, nothing } from 'lit'\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js'\nimport { cursorGlow } from '../directives/cursor-glow'\nimport { createRef, ref, type Ref } from 'lit/directives/ref.js'\nimport { when } from 'lit/directives/when.js'\nimport { fromEvent, tap } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\nimport { DialogBase } from './dialog-base.mixin'\nimport { DialogHereMorty, DialogWhereAreYouRicky, DialogWhereAreYouRickyEvent } from './dialog-events'\n\n/**\n * Unified dialog component that handles both content-only and confirm modes.\n *\n * @element schmancy-dialog\n * @slot default - Content slot for dialog body (used in content mode)\n * @slot content - Named slot for custom content in confirm mode\n *\n * @example Content mode (no buttons):\n * ```html\n * <schmancy-dialog>\n * <my-custom-content></my-custom-content>\n * </schmancy-dialog>\n * ```\n *\n * @example Confirm mode (with buttons):\n * ```html\n * <schmancy-dialog\n * title=\"Confirm Action\"\n * message=\"Are you sure?\"\n * confirm-text=\"Yes\"\n * cancel-text=\"No\"\n * ></schmancy-dialog>\n * ```\n */\n@customElement('schmancy-dialog')\nexport class SchmancyDialog extends DialogBase(\n\t$LitElement(css`\n\t\t:host {\n\t\t\tposition: fixed;\n\t\t\tz-index: var(--schmancy-overlay-z, 10000);\n\t\t\tinset: 0;\n\t\t\tdisplay: none;\n\t\t\t--dialog-width: fit-content;\n\t\t}\n\n\t\t:host([active]) {\n\t\t\tdisplay: block;\n\t\t}\n\n\n\t\t/* Luminous glow around the dialog container */\n\t\t.dialog {\n\t\t\tbox-shadow: 0 8px 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);\n\t\t\tborder-radius: var(--schmancy-sys-shape-corner-large);\n\t\t}\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t.dialog { box-shadow: var(--schmancy-sys-elevation-2); }\n\t\t}\n\t`),\n) {\n\t/**\n\t * Unique identifier for the dialog instance\n\t */\n\t@property({ type: String, reflect: true }) uid!: string\n\n\t/**\n\t * Dialog title (enables confirm mode when set)\n\t */\n\t@property({ type: String }) title: string | undefined = undefined\n\n\t/**\n\t * Dialog subtitle\n\t */\n\t@property({ type: String }) subtitle: string | undefined = undefined\n\n\t/**\n\t * Dialog message\n\t */\n\t@property({ type: String }) message: string | undefined = undefined\n\n\t/**\n\t * Text for confirm button (enables confirm mode when set with cancelText)\n\t */\n\t@property({ type: String, attribute: 'confirm-text' }) confirmText: string | undefined = undefined\n\n\t/**\n\t * Text for cancel button\n\t */\n\t@property({ type: String, attribute: 'cancel-text' }) cancelText: string | undefined = undefined\n\n\t/**\n\t * Dialog variant (affects button colors in confirm mode)\n\t */\n\t@property({ type: String }) variant: 'default' | 'danger' = 'default'\n\n\t/**\n\t * Whether to hide action buttons (force content mode)\n\t */\n\t@property({ type: Boolean, attribute: 'hide-actions' }) hideActions = false\n\n\t/**\n\t * Slotted children in the named \"content\" slot (confirm mode custom content)\n\t */\n\t@queryAssignedElements({ slot: 'content', flatten: true })\n\tprivate _contentSlotElements!: HTMLElement[]\n\n\t/**\n\t * Ref to the confirm mode wrapper div\n\t */\n\tprivate _confirmDialogRef: Ref<HTMLElement> = createRef()\n\n\t/**\n\t * Ref to the content mode section element\n\t */\n\tprivate _contentDialogRef: Ref<HTMLElement> = createRef()\n\n\t/**\n\t * Ref to the backdrop element for animations\n\t */\n\tprivate _backdropRef: Ref<HTMLElement> = createRef()\n\n\t/**\n\t * Ref to the drag handle element for swipe gestures\n\t */\n\tprivate _dragHandleRef: Ref<HTMLElement> = createRef()\n\n\t/**\n\t * Stable per-instance id used for ARIA labelledby/describedby wiring\n\t */\n\tprivate readonly _a11yId = `schmancy-dialog-${Math.random().toString(36).slice(2, 10)}`\n\tprivate get _titleId() { return `${this._a11yId}-title` }\n\tprivate get _descId() { return `${this._a11yId}-desc` }\n\n\t/**\n\t * Return the dialog element for positioning/size measurement.\n\t * In content mode, returns the first slotted child (the actual component).\n\t * In confirm mode, returns the wrapper div.\n\t */\n\tprotected getDialogElement(): HTMLElement | null {\n\t\t// Content mode: use the section wrapper (slotted content may be display:contents)\n\t\tif (this._contentDialogRef.value) return this._contentDialogRef.value\n\t\t// Confirm mode: use the wrapper div\n\t\treturn this._confirmDialogRef.value ?? null\n\t}\n\n\t/**\n\t * Return the backdrop element for animations\n\t */\n\tprotected getBackdropElement(): HTMLElement | null {\n\t\treturn this._backdropRef.value ?? null\n\t}\n\n\t/**\n\t * Return the drag handle element for swipe gestures\n\t */\n\tprotected getDragHandleElement(): HTMLElement | null {\n\t\treturn this._dragHandleRef.value ?? null\n\t}\n\n\t/**\n\t * Check if dialog is in confirm mode (has buttons)\n\t */\n\tprivate get isConfirmMode(): boolean {\n\t\tif (this.hideActions) return false\n\t\treturn !!(this.confirmText?.trim() && this.cancelText?.trim())\n\t}\n\n\t/**\n\t * Handle component connection to DOM\n\t */\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\n\t\t// Listen for \"where are you ricky\" events\n\t\tfromEvent<DialogWhereAreYouRickyEvent>(window, DialogWhereAreYouRicky)\n\t\t\t.pipe(\n\t\t\t\ttap(e => {\n\t\t\t\t\tif (e.detail.uid === this.uid) this.announcePresence()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Announce this dialog's presence to the service\n\t */\n\tprivate announcePresence(): void {\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent(DialogHereMorty, {\n\t\t\t\tdetail: { dialog: this },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\t/**\n\t * Handle confirm action\n\t */\n\tprivate handleConfirm(): void {\n\t\tthis.hide(true)\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent('confirm', {\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\t/**\n\t * Handle cancel/close action\n\t */\n\tprivate handleClose(): void {\n\t\tif (this.isAnimating()) return\n\t\tthis.hide(false)\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent(this.isConfirmMode ? 'cancel' : 'close', {\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\t/**\n\t * Render drag handle for mobile bottom sheet\n\t */\n\tprivate renderDragHandle() {\n\t\treturn html`\n\t\t\t<div ${ref(this._dragHandleRef)} class=\"dialog-drag-handle flex justify-center pt-2 pb-1 cursor-grab active:cursor-grabbing touch-none\">\n\t\t\t\t<div class=\"w-10 h-1 rounded-full bg-outline-variant\"></div>\n\t\t\t</div>\n\t\t`\n\t}\n\n\trender() {\n\t\tconst isCentered = this.isCentered()\n\t\tconst hasCustomContent = this._contentSlotElements?.length > 0\n\n\t\t// Mobile bottom sheet classes\n\t\tconst mobileDialogClasses = {\n\t\t\tdialog: true,\n\t\t\tfixed: true,\n\t\t\t'inset-x-0': true,\n\t\t\t'bottom-0': true,\n\t\t\t'w-full': true,\n\t\t\t'max-h-[90dvh]': true,\n\t\t\t'overflow-hidden': true,\n\t\t\t// Safe area padding for notched devices\n\t\t\t'pb-[env(safe-area-inset-bottom)]': true,\n\t\t}\n\n\t\t// Desktop dialog classes\n\t\tconst desktopDialogClasses = {\n\t\t\tdialog: true,\n\t\t\tfixed: true,\n\t\t\t'w-[var(--dialog-width)]': true,\n\t\t\t'max-w-[calc(100vw-2rem)]': true,\n\t\t\t'max-h-[90dvh]': true,\n\t\t\t'overflow-hidden': true,\n\t\t\t'top-1/2': isCentered,\n\t\t\t'left-1/2': isCentered,\n\t\t\t'-translate-x-1/2': isCentered,\n\t\t\t'-translate-y-1/2': isCentered,\n\t\t}\n\n\t\tconst dialogClasses = this.isMobile ? mobileDialogClasses : desktopDialogClasses\n\n\t\t// Button classes - stack vertically on mobile\n\t\tconst buttonContainerClasses = this.isMobile\n\t\t\t? 'flex flex-col-reverse gap-2 w-full'\n\t\t\t: 'flex justify-end gap-3'\n\n\t\t// Confirm mode: with title/buttons\n\t\tif (this.isConfirmMode) {\n\t\t\tconst hasTitle = !!this.title?.trim()\n\t\t\tconst hasSubtitle = !!this.subtitle?.trim()\n\t\t\tconst hasMessage = !!this.message?.trim()\n\t\t\tconst describedBy = [hasSubtitle && this._descId + '-sub', hasMessage && this._descId + '-msg']\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.join(' ') || ''\n\t\t\treturn html`\n\t\t\t\t<div ${ref(this._backdropRef)} class=\"fixed inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 backdrop-brightness-105\" @click=${this.handleClose}></div>\n\n\t\t\t\t<div\n\t\t\t\t\t${ref(this._confirmDialogRef)}\n\t\t\t\t\tclass=${this.classMap(dialogClasses)}\n\t\t\t\t\trole=\"alertdialog\"\n\t\t\t\t\taria-modal=\"true\"\n\t\t\t\t\taria-labelledby=${hasTitle ? this._titleId : nothing}\n\t\t\t\t\taria-describedby=${describedBy || nothing}\n\t\t\t\t>\n\t\t\t\t\t<schmancy-surface\n\t\t\t\t\t\t${cursorGlow({ radius: 250, intensity: 0.1 })}\n\t\t\t\t\t\trounded=${this.isMobile ? 'top' : 'all'}\n\t\t\t\t\t\ttype=\"glass\"\n\t\t\t\t\t\tfill=\"all\"\n\t\t\t\t\t\tclass=\"overflow-hidden\"\n\t\t\t\t\t>\n\t\t\t\t\t\t${this.isMobile ? this.renderDragHandle() : null}\n\t\t\t\t\t\t<schmancy-scroll direction=\"vertical\" hide class=\"p-4 pt-2\">\n\t\t\t\t\t\t\t<schmancy-form @submit=${this.handleConfirm}>\n\t\t\t\t\t\t\t\t${when(\n\t\t\t\t\t\t\t\t\thasTitle,\n\t\t\t\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t\t\t\t<schmancy-typography id=${this._titleId} type=\"title\" token=\"md\" class=\"mb-1\">${this.title}</schmancy-typography>\n\t\t\t\t\t\t\t\t\t\t${when(\n\t\t\t\t\t\t\t\t\t\t\thasSubtitle,\n\t\t\t\t\t\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t\t\t\t\t\t<schmancy-typography id=\"${this._descId}-sub\" type=\"subtitle\" token=\"xs\" class=\"mb-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t${this.subtitle}\n\t\t\t\t\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t${hasCustomContent\n\t\t\t\t\t\t\t\t\t? html`<div class=\"mb-4\"><slot name=\"content\"></slot></div>`\n\t\t\t\t\t\t\t\t\t: when(\n\t\t\t\t\t\t\t\t\t\t\thasMessage,\n\t\t\t\t\t\t\t\t\t\t\t() => html`<schmancy-typography id=\"${this._descId}-msg\" type=\"body\" class=\"mb-4\">${this.message}</schmancy-typography>`,\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<div class=${buttonContainerClasses}>\n\t\t\t\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\t\t\t@click=${this.handleClose}\n\t\t\t\t\t\t\t\t\t\tclass=${this.isMobile ? 'w-full' : ''}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t${this.cancelText}\n\t\t\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\t\t\tvariant=\"filled\"\n\t\t\t\t\t\t\t\t\t\tclass=${this.isMobile ? 'w-full' : ''}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t${this.confirmText}\n\t\t\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</schmancy-form>\n\t\t\t\t\t\t</schmancy-scroll>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</div>\n\t\t\t`\n\t\t}\n\n\t\t// Content mode: minimal, just slot\n\t\treturn html`\n\t\t\t<div ${ref(this._backdropRef)} class=\"fixed inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 backdrop-brightness-105\" @click=${this.handleClose}></div>\n\n\t\t\t<section ${ref(this._contentDialogRef)} class=${this.classMap(dialogClasses)} role=\"dialog\" aria-modal=\"true\">\n\t\t\t\t<schmancy-surface ${cursorGlow({ radius: 250, intensity: 0.1 })} rounded=${this.isMobile ? 'top' : 'all'} type=\"glass\" fill=\"all\">\n\t\t\t\t\t${this.isMobile ? this.renderDragHandle() : null}\n\t\t\t\t\t<schmancy-scroll direction=\"vertical\" hide class=\"max-h-[85dvh]\">\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</schmancy-scroll>\n\t\t\t\t</schmancy-surface>\n\t\t\t</section>\n\t\t`\n\t}\n\n\t/**\n\t * Static helper for confirm dialogs\n\t */\n\tstatic async confirm(options: {\n\t\ttitle?: string\n\t\tsubtitle?: string\n\t\tmessage?: string\n\t\tconfirmText?: string\n\t\tcancelText?: string\n\t\tvariant?: 'default' | 'danger'\n\t\tposition?: { x: number; y: number } | MouseEvent | TouchEvent\n\t\twidth?: string\n\t}): Promise<boolean> {\n\t\tlet dialog = document.querySelector('schmancy-dialog[data-static-confirm]') as SchmancyDialog\n\n\t\tif (!dialog) {\n\t\t\tdialog = document.createElement('schmancy-dialog') as SchmancyDialog\n\t\t\tdialog.setAttribute('data-static-confirm', '')\n\t\t\tdocument.body.appendChild(dialog)\n\t\t}\n\n\t\t// Set options\n\t\tdialog.title = options.title\n\t\tdialog.subtitle = options.subtitle\n\t\tdialog.message = options.message\n\t\tdialog.confirmText = options.confirmText ?? 'Confirm'\n\t\tdialog.cancelText = options.cancelText ?? 'Cancel'\n\t\tdialog.variant = options.variant ?? 'default'\n\t\tif (options.width) dialog.style.setProperty('--dialog-width', options.width)\n\n\t\treturn dialog.show(options.position)\n\t}\n\n\t/**\n\t * Simple shorthand - just pass message and optionally an event\n\t */\n\tstatic async ask(message: string, event?: MouseEvent | TouchEvent): Promise<boolean> {\n\t\treturn this.confirm({\n\t\t\tmessage,\n\t\t\tposition: event,\n\t\t})\n\t}\n}\n\n// Alias for backward compatibility\nexport { SchmancyDialog as ConfirmDialog }\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-dialog': SchmancyDialog\n\t}\n}\n"],"mappings":"okBA2DA,IAAa,EAA8D,GAC1E,cAA8B,CAAA,CAAA,YAAA,GAAA,EAAA,CAAA,MAAA,GAAA,EAAA,CAAA,KAAA,SACF,CAAE,EAAG,EAAG,EAAG,EAAA,CAAA,KAAA,SAAA,CAC3B,EAAA,KAAA,WACE,EAAA,KAAA,WAOiB,IAAI,EAAA,QAAA,KAAA,mBAGW,KAAA,KAAA,cACN,EAAA,CAAA,KAAA,UAAA,CAGnB,EAAA,KAAA,qBAAA,CAInB,GAAA,CACC,OAAO,KAAK,iBAAA,MAAA,CAEZ,WAAA,CAOF,aAAA,CACC,OAAO,KAAK,UAMb,kBAAA,CACC,OAAO,KAMR,oBAAA,CACC,OAAO,KAMR,sBAAA,CACC,OAAO,KAGR,mBAAA,CACC,MAAM,mBAAA,CACN,KAAK,qBAAA,CAMN,qBAAA,EACC,EAAA,EAAA,WAAU,OAAQ,SAAA,CAChB,MAAA,EAAA,EAAA,SACU,OAAO,WA/GI,IAAA,EA+G2B,EAAA,EAAA,uBAAA,EAC1B,EAAA,EAAA,YACT,KAAK,aAAa,SAAA,CAAA,EAAU,EAAA,EAAA,KACrC,GAAA,CACH,GAAI,KAAK,WAAa,EAAU,CAC/B,KAAK,SAAW,EAChB,KAAK,eAAA,CACL,IAAM,EAAS,KAAK,kBAAA,CAChB,IACC,GACH,KAAK,uBAAuB,EAAA,CAC5B,KAAK,kBAAkB,EAAA,GAEvB,KAAK,WAAW,MAAA,CAChB,KAAK,kBAAA,KAAA,EAIP,EAAA,EAAA,WACQ,KAAK,cAAA,CAAA,CAEf,WAAA,CAMH,kBAA0B,EAAA,CAEzB,KAAK,WAAW,MAAA,CAEhB,IAAI,EAAa,EACb,EAAA,CAAa,EACb,EAAW,EAET,EAAa,KAAK,sBAAA,EAyExB,EAAA,EAAA,QAAA,EAAA,EAAA,WAxEmB,GAAc,EAEqB,aAAc,CAAE,QAAA,CAAS,EAAA,CAAA,CAAQ,MAAA,EAAA,EAAA,KAClF,GAAA,CACH,IAAM,EAAQ,EAAE,QAAQ,GAClB,EAAO,EAAO,uBAAA,CACL,EAAM,QAAU,EAAK,IAGvB,IAAA,CAAO,IAEpB,EAAA,CAAa,EACb,EAAa,EAAM,QACnB,EAAW,EACX,KAAK,WAAa,EAGlB,EAAO,MAAM,WAAa,OAC1B,EAAO,MAAM,WAAa,cAAA,CAAA,EAE3B,EAAA,EAAA,WAEwC,EAAQ,YAAa,CAAE,QAAA,CAAS,EAAA,CAAA,CAAS,MAAA,EAAA,EAAA,YACpE,EAAA,EAAW,EAAA,EAAA,KACpB,GAAA,CAEH,IAAM,EADQ,EAAE,QAAQ,GACH,QAAU,EAI9B,EADG,EAAS,EACQ,GAAT,EAEA,EAGZ,KAAK,WAAa,KAAK,IAAI,EAAG,EAAA,CAG9B,EAAO,MAAM,UAAY,cAAc,EAAA,KAEvC,EAAE,gBAAA,EAAA,CAAA,EAEH,EAAA,EAAA,QAAA,EAAA,EAAA,WAGsB,EAAQ,WAAY,CAAE,QAAA,CAAS,EAAA,CAAA,EAAO,EAAA,EAAA,WACtC,EAAQ,cAAe,CAAE,QAAA,CAAS,EAAA,CAAA,CAAA,CACvD,MAAA,EAAA,EAAA,YACY,EAAA,EAAW,EAAA,EAAA,SAAA,CAEvB,EAAA,CAAa,EAGb,EAAO,MAAM,WAAa,+CAC1B,EAAO,MAAM,WAAa,GAE1B,IAAM,EAAe,EAAO,uBAAA,CAAwB,OAC9C,EAAY,KAAK,IAAI,IAAoB,IAAf,EAAA,CAE5B,KAAK,WAAa,GAErB,EAAO,MAAM,UAAY,mBACzB,KAAK,KAAA,CAAK,EAAA,GAGV,EAAO,MAAM,UAAY,gBACzB,KAAK,WAAa,IAAA,CAAA,CAAA,CAOnB,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,OAAqB,KAAK,WAAY,KAAK,cAAA,CAAA,CAAA,CAC3C,WAAA,CAMH,uBAA+B,EAAA,CAC1B,AAEH,KAAK,qBADL,KAAK,mBAAA,CACA,IAAoB,IAG1B,OAAO,OAAO,EAAO,MAAO,CAC3B,SAAU,GACV,KAAM,GACN,IAAK,GACL,UAAW,GACX,SAAU,GAAA,CAAA,CAOZ,MAAA,KAAW,EAAA,CAQV,IAAI,EAAW,EAEf,GATI,AAEH,KAAK,qBADL,KAAK,mBAAA,CACA,IAAoB,IAG1B,KAAK,SAAW,OAAO,WA3PA,IA+PlB,EAAA,GAGM,YAAa,EACvB,EAAI,EAAgB,QACpB,EAAI,EAAgB,gBACV,YAAa,GAAmB,EAAgB,QAAQ,OAClE,EAAI,EAAgB,QAAQ,GAAG,QAC/B,EAAI,EAAgB,QAAQ,GAAG,YACzB,CACN,IAAM,EAAM,EACZ,EAAI,EAAI,EACR,EAAI,EAAI,OAXR,EAAI,OAAO,WAAa,EACxB,EAAI,OAAO,YAAc,EAa1B,KAAK,SAAW,CAAE,EAAA,EAAG,EAAA,EAAA,CAErB,KAAK,iBAAmB,CACvB,0BAA6B,IAAI,QAAQ,EAAG,EAAG,EAAG,EAAA,CAAA,CAGnD,KAAK,eAAA,CAAA,MACC,KAAK,eAEX,KAAK,aAAa,SAAU,GAAA,CAC5B,KAAK,iBAAiB,OAAO,IAAI,OAAA,CAAA,MAC3B,KAAK,eAGX,KAAK,mBAAqB,SAAS,cACnC,IAAM,EAAS,KAAK,cACpB,GAAI,EAAQ,CACX,KAAK,cAAgB,EAAA,CACrB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,SAAS,OAAQ,IAAK,CAChD,IAAM,EAAU,EAAO,SAAS,GAC5B,IAAY,MAAQ,UAAW,IAClC,EAAQ,MAAA,CAAQ,EAChB,KAAK,cAAc,KAAK,EAAA,IAM3B,EAAA,EAAA,WAAyB,SAAU,UAAA,CACjC,MAAA,EAAA,EAAA,QACO,GAAK,EAAE,MAAQ,SAAR,EAAiB,EAAA,EAAA,KAC3B,GAAA,CACH,EAAE,gBAAA,CACF,KAAK,KAAA,CAAK,EAAA,EAAA,EACT,EAAA,EAAA,YAAA,EAAA,EAAA,OACc,KAAK,WAAY,KAAK,cAAA,CAAA,CAAA,CAEtC,WAAA,CAEF,IAAM,EAAS,KAAK,kBAAA,CAGd,EA7SD,OAAO,WARW,KAQsB,GAAM,GAsUnD,MAAA,CAvBE,KAAK,UACN,IACC,EAAO,aAAe,OAAO,YAAc,GAC3C,EAAO,YAAc,OAAO,WAAa,KAE1C,KAAK,SAAA,CAAW,EAChB,KAAK,eAAA,CAAA,MACC,KAAK,gBAGR,KAAK,SACJ,IACH,KAAK,uBAAuB,EAAA,CAC5B,KAAK,kBAAkB,EAAA,EAGxB,KAAK,kBAAA,CAGN,KAAK,UAAA,CAAY,EAAA,MACX,KAAK,WAAA,CACX,KAAK,UAAA,CAAY,EAEV,IAAI,QAAiB,GAAA,CAC3B,KAAK,eAAiB,GAAA,CAOxB,MAAA,WAAc,CACb,IAAM,EAAS,KAAK,kBAAA,CACd,EAAW,KAAK,oBAAA,CAEtB,GAAI,EAAA,EAAe,MAGlB,OAFI,IAAU,EAAS,MAAM,QAAU,KAAA,KACnC,IAAQ,EAAO,MAAM,QAAU,MAUpC,GANA,GAAU,QAAQ,CAAC,CAAE,QAAS,EAAA,CAAK,CAAE,QAAS,EAAA,CAAA,CAAM,CACnD,SAAA,IACA,OAAQ,EAAA,EACR,KAAM,WAAA,CAAA,CAGH,EAAQ,CACX,IAAM,EAAY,KAAK,SACpB,CACA,CAAE,QAAS,EAAG,UAAW,mBAAA,CACzB,CAAE,QAAS,EAAG,UAAW,gBAAA,CAAA,CAEzB,CACA,CAAE,QAAS,EAAG,UAAW,+BAAA,CACzB,CAAE,QAAS,EAAG,UAAW,yBAAA,CAAA,CAAA,MAGtB,EAAO,QAAQ,EAAW,CAC/B,SAAU,EAAA,EACV,OAAQ,EAAA,EACR,KAAM,WAAA,CAAA,CACJ,UAOL,MAAA,YAAc,CACb,IAAM,EAAS,KAAK,kBAAA,CACd,EAAW,KAAK,oBAAA,CAEtB,GAAI,EAAA,EAAe,MAGlB,OAFI,IAAU,EAAS,MAAM,QAAU,KAAA,KACnC,IAAQ,EAAO,MAAM,QAAU,MAIpC,IAAM,EAAmC,EAAA,CAYzC,GAVI,GACH,EAAW,KACV,EAAS,QAAQ,CAAC,CAAE,QAAS,EAAA,CAAK,CAAE,QAAS,EAAA,CAAA,CAAM,CAClD,SAAA,IACA,OAAQ,EAAA,EACR,KAAM,WAAA,CAAA,CACJ,SAAA,CAID,EAAQ,CACX,IAAM,EAAY,KAAK,SACpB,CACA,CAAE,QAAS,EAAG,UAAW,gBAAA,CACzB,CAAE,QAAS,EAAG,UAAW,mBAAA,CAAA,CAEzB,CACA,CAAE,QAAS,EAAG,UAAW,yBAAA,CACzB,CAAE,QAAS,EAAG,UAAW,8BAAA,CAAA,CAG5B,EAAW,KACV,EAAO,QAAQ,EAAW,CACzB,SAAA,IACA,OAAQ,EAAA,EACR,KAAM,WAAA,CAAA,CACJ,SAAA,CAAA,MAIC,QAAQ,IAAI,EAAA,CAMnB,MAAA,KAAW,EAAA,CAAS,EAAA,CACnB,KAAK,WAAW,MAAA,CAEhB,KAAK,UAAA,CAAY,EAAA,MACX,KAAK,YAAA,CACX,KAAK,UAAA,CAAY,EAEjB,KAAK,gBAAgB,SAAA,CACrB,KAAK,iBAAiB,OAAO,OAAO,OAAA,CAGpC,IAAK,IAAM,KAAM,KAAK,cACrB,EAAG,MAAA,CAAQ,EAKZ,GAHA,KAAK,cAAgB,EAAA,CAGjB,KAAK,mBAAoB,CAC5B,IAAM,EAAK,KAAK,mBACQ,OAAb,EAAG,OAAU,YACvB,EAAG,OAAA,CAEJ,KAAK,mBAAqB,KAGvB,AAEH,KAAK,qBADL,KAAK,mBAAA,CACA,IAAoB,IAGtB,AAEH,KAAK,kBADL,KAAK,eAAe,EAAA,CACf,IAAiB,IAOxB,YAAA,CAEC,IAAM,EAAiC,IAApB,OAAO,WACpB,EAAkC,IAArB,OAAO,YAE1B,OACC,KAAK,IAAI,KAAK,SAAS,EAAI,OAAO,WAAa,EAAA,CAAK,GACpD,KAAK,IAAI,KAAK,SAAS,EAAI,OAAO,YAAc,EAAA,CAAK,EAOvD,kBAAA,CACC,IAAM,EAAS,KAAK,kBAAA,CACf,IAED,KAAK,YAAA,EAEL,KAAK,mBACR,KAAK,mBAAA,EAAA,EAAA,YACJ,KAAK,iBACL,MACM,KAAK,eAAe,EAAA,CAC1B,CACC,eAAA,CAAgB,EAChB,eAAA,CAAgB,EAChB,cAAA,CAAe,EAAA,CAAA,CAGjB,KAAK,eAAe,EAAA,GAOtB,MAAA,eAA6B,EAAA,CAC5B,GAAA,CAAK,KAAK,iBAAkB,OAE5B,GAAA,CAEM,EAAE,EAAA,EAAG,GAAA,MAAM,EAAA,EAAA,iBAAsB,KAAK,iBAAkB,EAAQ,CACrE,SAAU,QACV,WAAY,EAAA,EAAA,EAAA,QACJ,EAAA,EAAA,EAAA,EAAA,eACO,CACb,QAPa,GAQb,kBAAmB,CAClB,YACA,UACA,eACA,aACA,aACA,WACA,cACA,YAAA,CAAA,CAAA,EAAA,EAAA,EAAA,OAGI,CAAE,QAnBM,GAAA,CAAA,EAAA,EAAA,EAAA,MAoBT,CACJ,QArBa,GAsBb,MAAA,CAAM,eAAE,EAAA,SAAgB,GAAA,CACvB,EAAS,SAAS,MAAM,SAAW,GAAG,EAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAM1C,OAAO,OAAO,EAAO,MAAO,CAC3B,SAAU,QACV,KAAM,GAAG,KAAK,MAAM,EAAA,CAAA,IACpB,IAAK,GAAG,KAAK,MAAM,EAAA,CAAA,IACnB,UAAW,OAAA,CAAA,CAIb,sBAAA,CACC,KAAK,WAAW,MAAA,CACZ,AAEH,KAAK,qBADL,KAAK,mBAAA,CACA,IAAoB,IAE1B,MAAM,sBAAA,GCthBF,EAAA,cAA6B,EACnC,EAAA,EAAY,EAAA,GAAG;;;;;;;;;;;;;;;;;;;;;;;kDAiCyC,GAAA,KAAA,SAAA,IAKG,GAAA,KAAA,QAAA,IAKD,GAAA,KAAA,YAAA,IAK+B,GAAA,KAAA,WAAA,IAKF,GAAA,KAAA,QAK3B,UAAA,KAAA,YAAA,CAKU,EAAA,KAAA,mBAAA,EAAA,EAAA,YAAA,CAAA,KAAA,mBAAA,EAAA,EAAA,YAAA,CAAA,KAAA,cAAA,EAAA,EAAA,YAAA,CAAA,KAAA,gBAAA,EAAA,EAAA,YAAA,CAAA,KAAA,QA+B3C,mBAAmB,KAAK,QAAA,CAAS,SAAS,GAAA,CAAI,MAAM,EAAG,GAAA,GAClF,IAAA,UAAY,CAAa,MAAO,GAAG,KAAK,QAAA,QACxC,IAAA,SAAY,CAAY,MAAO,GAAG,KAAK,QAAA,OAOvC,kBAAA,CAEC,OAAI,KAAK,kBAAkB,MAAc,KAAK,kBAAkB,MAEzD,KAAK,kBAAkB,OAAS,KAMxC,oBAAA,CACC,OAAO,KAAK,aAAa,OAAS,KAMnC,sBAAA,CACC,OAAO,KAAK,eAAe,OAAS,KAMrC,IAAA,eAAY,CACX,MAAA,CAAI,KAAK,aAAA,EAAA,CACC,KAAK,aAAa,MAAA,EAAA,CAAU,KAAK,YAAY,MAAA,EAMxD,mBAAA,CACC,MAAM,mBAAA,EAGN,EAAA,EAAA,WAAuC,OAAQ,EAAA,EAAA,CAC7C,MAAA,EAAA,EAAA,KACI,GAAA,CACC,EAAE,OAAO,MAAQ,KAAK,KAAK,KAAK,kBAAA,EAAA,EACnC,EAAA,EAAA,WACQ,KAAK,cAAA,CAAA,CAEf,WAAA,CAMH,kBAAA,CACC,KAAK,cACJ,IAAI,YAAY,EAAA,EAAiB,CAChC,OAAQ,CAAE,OAAQ,KAAA,CAClB,QAAA,CAAS,EACT,SAAA,CAAU,EAAA,CAAA,CAAA,CAQb,eAAA,CACC,KAAK,KAAA,CAAK,EAAA,CACV,KAAK,cACJ,IAAI,YAAY,UAAW,CAC1B,QAAA,CAAS,EACT,SAAA,CAAU,EAAA,CAAA,CAAA,CAQb,aAAA,CACK,KAAK,aAAA,GACT,KAAK,KAAA,CAAK,EAAA,CACV,KAAK,cACJ,IAAI,YAAY,KAAK,cAAgB,SAAW,QAAS,CACxD,QAAA,CAAS,EACT,SAAA,CAAU,EAAA,CAAA,CAAA,EAQb,kBAAA,CACC,MAAO,GAAA,IAAI;oBACC,KAAK,eAAA,CAAA;;;IAMlB,QAAA,CACC,IAAM,EAAa,KAAK,YAAA,CAClB,EAAmB,KAAK,sBAAsB,OAAS,EAgBvD,EAAuB,CAC5B,OAAA,CAAQ,EACR,MAAA,CAAO,EACP,0BAAA,CAA2B,EAC3B,2BAAA,CAA4B,EAC5B,gBAAA,CAAiB,EACjB,kBAAA,CAAmB,EACnB,UAAW,EACX,WAAY,EACZ,mBAAoB,EACpB,mBAAoB,EAAA,CAGf,EAAgB,KAAK,SA1BC,CAC3B,OAAA,CAAQ,EACR,MAAA,CAAO,EACP,YAAA,CAAa,EACb,WAAA,CAAY,EACZ,SAAA,CAAU,EACV,gBAAA,CAAiB,EACjB,kBAAA,CAAmB,EAEnB,mCAAA,CAAoC,EAAA,CAiBuB,EAGtD,EAAyB,KAAK,SACjC,qCACA,yBAGH,GAAI,KAAK,cAAe,CACvB,IAAM,EAAA,CAAA,CAAa,KAAK,OAAO,MAAA,CACzB,EAAA,CAAA,CAAgB,KAAK,UAAU,MAAA,CAC/B,EAAA,CAAA,CAAe,KAAK,SAAS,MAAA,CAC7B,EAAc,CAAC,GAAe,KAAK,QAAU,OAAQ,GAAc,KAAK,QAAU,OAAA,CACtF,OAAO,QAAA,CACP,KAAK,IAAA,EAAQ,GACf,MAAO,GAAA,IAAI;qBACC,KAAK,aAAA,CAAA,uHAAqI,KAAK,YAAA;;;iBAGnJ,KAAK,kBAAA,CAAA;aACH,KAAK,SAAS,EAAA,CAAA;;;uBAGJ,EAAW,KAAK,SAAW,EAAA,QAAA;wBAC1B,GAAe,EAAA,QAAA;;;QAG/B,EAAA,EAAW,CAAE,OAAQ,IAAK,UAAW,GAAA,CAAA,CAAA;gBAC7B,KAAK,SAAW,MAAQ,MAAA;;;;;QAKhC,KAAK,SAAW,KAAK,kBAAA,CAAqB,KAAA;;gCAElB,KAAK,cAAA;qBAE5B,MACM,EAAA,IAAI;oCACiB,KAAK,SAAA,wCAAiD,KAAK,MAAA;uBAEpF,MACM,EAAA,IAAI;uCACkB,KAAK,QAAA;eAC7B,KAAK,SAAA;;;;UAMV,EACC,EAAA,IAAI,wDAAA,EAAA,EAAA,MAEJ,MACM,EAAA,IAAI,4BAA4B,KAAK,QAAA,iCAAyC,KAAK,QAAA,wBAAA,CAAA;qBAE/E,EAAA;;;mBAGF,KAAK,YAAA;kBACN,KAAK,SAAW,SAAW,GAAA;;YAEjC,KAAK,WAAA;;;;;kBAKC,KAAK,SAAW,SAAW,GAAA;;YAEjC,KAAK,YAAA;;;;;;;KAWf,MAAO,GAAA,IAAI;oBACC,KAAK,aAAA,CAAA,uHAAqI,KAAK,YAAA;;wBAE3I,KAAK,kBAAA,CAAA,SAA4B,KAAK,SAAS,EAAA,CAAA;wBACzC,EAAA,EAAW,CAAE,OAAQ,IAAK,UAAW,GAAA,CAAA,CAAA,WAAkB,KAAK,SAAW,MAAQ,MAAA;OAChG,KAAK,SAAW,KAAK,kBAAA,CAAqB,KAAA;;;;;;IAYhD,aAAA,QAAqB,EAAA,CAUpB,IAAI,EAAS,SAAS,cAAc,uCAAA,CAiBpC,OAfK,IACJ,EAAS,SAAS,cAAc,kBAAA,CAChC,EAAO,aAAa,sBAAuB,GAAA,CAC3C,SAAS,KAAK,YAAY,EAAA,EAI3B,EAAO,MAAQ,EAAQ,MACvB,EAAO,SAAW,EAAQ,SAC1B,EAAO,QAAU,EAAQ,QACzB,EAAO,YAAc,EAAQ,aAAe,UAC5C,EAAO,WAAa,EAAQ,YAAc,SAC1C,EAAO,QAAU,EAAQ,SAAW,UAChC,EAAQ,OAAO,EAAO,MAAM,YAAY,iBAAkB,EAAQ,MAAA,CAE/D,EAAO,KAAK,EAAQ,SAAA,CAM5B,aAAA,IAAiB,EAAiB,EAAA,CACjC,OAAO,KAAK,QAAQ,CACnB,QAAA,EACA,SAAU,EAAA,CAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAhVF,CAAE,KAAM,OAAQ,QAAA,CAAS,EAAA,CAAA,CAAA,CAAO,EAAA,UAAA,MAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAKhC,CAAE,KAAM,OAAA,CAAA,CAAA,CAAS,EAAA,UAAA,QAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAKjB,CAAE,KAAM,OAAA,CAAA,CAAA,CAAS,EAAA,UAAA,WAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAKjB,CAAE,KAAM,OAAA,CAAA,CAAA,CAAS,EAAA,UAAA,UAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAKjB,CAAE,KAAM,OAAQ,UAAW,eAAA,CAAA,CAAA,CAAiB,EAAA,UAAA,cAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAK5C,CAAE,KAAM,OAAQ,UAAW,cAAA,CAAA,CAAA,CAAgB,EAAA,UAAA,aAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAK3C,CAAE,KAAM,OAAA,CAAA,CAAA,CAAS,EAAA,UAAA,UAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAKjB,CAAE,KAAM,QAAS,UAAW,eAAA,CAAA,CAAA,CAAiB,EAAA,UAAA,cAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,uBAKhC,CAAE,KAAM,UAAW,QAAA,CAAS,EAAA,CAAA,CAAA,CAAO,EAAA,UAAA,uBAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eAtE5C,kBAAA,CAAA,CAAkB,EAAA,CAAA,QAAA,QAAA,EAAA,EAAA,OAAA,eAAA,QAAA,gBAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,GAAA,CAAA,CAAA,OAAA,eAAA,QAAA,iBAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,GAAA,CAAA,CAAA,QAAA,WAAA,EAAA,QAAA,cAAA,EAAA"}
package/dist/dialog.js CHANGED
@@ -1,23 +1,29 @@
1
- import { i as e } from "./tailwind.mixin-BCJOOX1_.js";
2
- import { t } from "./litElement.mixin-6jJYHCrZ.js";
1
+ import { t as e } from "./decorate-D_utPUsC.js";
2
+ import { t } from "./litElement.mixin-CncaUoxz.js";
3
3
  import "./mixins.js";
4
- import { i as n, n as r, o as i, s as a } from "./animation-BK-8BwY8.js";
5
- import { t as o } from "./reduced-motion-D-L12p7G.js";
6
- import { t as s } from "./cursor-glow-Ah7VXSj7.js";
7
- import { i as c, n as l, r as u, t as d } from "./dialog-service-NZEvyEK-.js";
4
+ import { i as n, n as r, o as i, s as a } from "./animation-CXKSuUoE.js";
5
+ import { t as o } from "./reduced-motion-B83yZbcO.js";
6
+ import { t as s } from "./cursor-glow-C2YRrB8Z.js";
7
+ import { i as c, n as l, r as u, t as d } from "./dialog-service-ClFrOWf4.js";
8
8
  import { Subject as f, distinctUntilChanged as p, filter as m, fromEvent as h, map as g, merge as _, takeUntil as v, tap as y } from "rxjs";
9
9
  import { takeUntil as b } from "rxjs/operators";
10
10
  import { customElement as x, property as S, queryAssignedElements as C } from "lit/decorators.js";
11
- import { css as w, html as T } from "lit";
12
- import { createRef as E, ref as D } from "lit/directives/ref.js";
13
- import { when as O } from "lit/directives/when.js";
14
- import { autoPlacement as k, autoUpdate as A, computePosition as j, offset as M, shift as N, size as P } from "@floating-ui/dom";
15
- var F = (e) => class extends e {
11
+ import { css as w, html as T, nothing as E } from "lit";
12
+ import { createRef as D, ref as O } from "lit/directives/ref.js";
13
+ import { when as k } from "lit/directives/when.js";
14
+ import { autoPlacement as A, autoUpdate as j, computePosition as M, offset as N, shift as P, size as F } from "@floating-ui/dom";
15
+ var I = (e) => class extends e {
16
16
  constructor(...e) {
17
17
  super(...e), this.position = {
18
18
  x: 0,
19
19
  y: 0
20
- }, this.isMobile = !1, this.dragOffset = 0, this.stopSwipe$ = new f(), this.lastFocusedElement = null, this.inertSiblings = [], this.animating = !1;
20
+ }, this.isMobile = !1, this.dragOffset = 0, this.stopSwipe$ = new f(), this.lastFocusedElement = null, this.inertSiblings = [], this.animating = !1, this.dialogInternals = (() => {
21
+ try {
22
+ return this.attachInternals();
23
+ } catch {
24
+ return;
25
+ }
26
+ })();
21
27
  }
22
28
  isAnimating() {
23
29
  return this.animating;
@@ -79,7 +85,7 @@ var F = (e) => class extends e {
79
85
  this.position = {
80
86
  x: t,
81
87
  y: n
82
- }, this.virtualReference = { getBoundingClientRect: () => new DOMRect(t, n, 0, 0) }, this.requestUpdate(), await this.updateComplete, this.setAttribute("active", ""), await this.updateComplete, this.lastFocusedElement = document.activeElement;
88
+ }, this.virtualReference = { getBoundingClientRect: () => new DOMRect(t, n, 0, 0) }, this.requestUpdate(), await this.updateComplete, this.setAttribute("active", ""), this.dialogInternals?.states.add("open"), await this.updateComplete, this.lastFocusedElement = document.activeElement;
83
89
  let r = this.parentElement;
84
90
  if (r) {
85
91
  this.inertSiblings = [];
@@ -155,7 +161,7 @@ var F = (e) => class extends e {
155
161
  await Promise.all(n);
156
162
  }
157
163
  async hide(e = !1) {
158
- this.stopSwipe$.next(), this.animating = !0, await this.animateOut(), this.animating = !1, this.removeAttribute("active");
164
+ this.stopSwipe$.next(), this.animating = !0, await this.animateOut(), this.animating = !1, this.removeAttribute("active"), this.dialogInternals?.states.delete("open");
159
165
  for (let e of this.inertSiblings) e.inert = !1;
160
166
  if (this.inertSiblings = [], this.lastFocusedElement) {
161
167
  let e = this.lastFocusedElement;
@@ -169,7 +175,7 @@ var F = (e) => class extends e {
169
175
  }
170
176
  setupPositioning() {
171
177
  let e = this.getDialogElement();
172
- e && (this.isCentered() || this.virtualReference && (this.cleanupAutoUpdate = A(this.virtualReference, e, () => this.updatePosition(e), {
178
+ e && (this.isCentered() || this.virtualReference && (this.cleanupAutoUpdate = j(this.virtualReference, e, () => this.updatePosition(e), {
173
179
  ancestorScroll: !0,
174
180
  ancestorResize: !0,
175
181
  elementResize: !0
@@ -177,11 +183,11 @@ var F = (e) => class extends e {
177
183
  }
178
184
  async updatePosition(e) {
179
185
  if (!this.virtualReference) return;
180
- let { x: t, y: n } = await j(this.virtualReference, e, {
186
+ let { x: t, y: n } = await M(this.virtualReference, e, {
181
187
  strategy: "fixed",
182
188
  middleware: [
183
- M(8),
184
- k({
189
+ N(8),
190
+ A({
185
191
  padding: 16,
186
192
  allowedPlacements: [
187
193
  "top-start",
@@ -194,8 +200,8 @@ var F = (e) => class extends e {
194
200
  "right-end"
195
201
  ]
196
202
  }),
197
- N({ padding: 16 }),
198
- P({
203
+ P({ padding: 16 }),
204
+ F({
199
205
  padding: 16,
200
206
  apply({ availableWidth: e, elements: t }) {
201
207
  t.floating.style.maxWidth = `${e}px`;
@@ -213,7 +219,7 @@ var F = (e) => class extends e {
213
219
  disconnectedCallback() {
214
220
  this.stopSwipe$.next(), this.cleanupAutoUpdate &&= (this.cleanupAutoUpdate(), void 0), super.disconnectedCallback();
215
221
  }
216
- }, I = class extends F(t(w`
222
+ }, L = class extends I(t(w`
217
223
  :host {
218
224
  position: fixed;
219
225
  z-index: var(--schmancy-overlay-z, 10000);
@@ -238,7 +244,13 @@ var F = (e) => class extends e {
238
244
  }
239
245
  `)) {
240
246
  constructor(...e) {
241
- super(...e), this.title = void 0, this.subtitle = void 0, this.message = void 0, this.confirmText = void 0, this.cancelText = void 0, this.variant = "default", this.hideActions = !1, this._confirmDialogRef = E(), this._contentDialogRef = E(), this._backdropRef = E(), this._dragHandleRef = E();
247
+ super(...e), this.title = void 0, this.subtitle = void 0, this.message = void 0, this.confirmText = void 0, this.cancelText = void 0, this.variant = "default", this.hideActions = !1, this._confirmDialogRef = D(), this._contentDialogRef = D(), this._backdropRef = D(), this._dragHandleRef = D(), this._a11yId = `schmancy-dialog-${Math.random().toString(36).slice(2, 10)}`;
248
+ }
249
+ get _titleId() {
250
+ return `${this._a11yId}-title`;
251
+ }
252
+ get _descId() {
253
+ return `${this._a11yId}-desc`;
242
254
  }
243
255
  getDialogElement() {
244
256
  return this._contentDialogRef.value ? this._contentDialogRef.value : this._confirmDialogRef.value ?? null;
@@ -278,7 +290,7 @@ var F = (e) => class extends e {
278
290
  }
279
291
  renderDragHandle() {
280
292
  return T`
281
- <div ${D(this._dragHandleRef)} class="dialog-drag-handle flex justify-center pt-2 pb-1 cursor-grab active:cursor-grabbing touch-none">
293
+ <div ${O(this._dragHandleRef)} class="dialog-drag-handle flex justify-center pt-2 pb-1 cursor-grab active:cursor-grabbing touch-none">
282
294
  <div class="w-10 h-1 rounded-full bg-outline-variant"></div>
283
295
  </div>
284
296
  `;
@@ -305,15 +317,24 @@ var F = (e) => class extends e {
305
317
  "overflow-hidden": !0,
306
318
  "pb-[env(safe-area-inset-bottom)]": !0
307
319
  } : n, i = this.isMobile ? "flex flex-col-reverse gap-2 w-full" : "flex justify-end gap-3";
308
- return this.isConfirmMode ? T`
309
- <div ${D(this._backdropRef)} class="fixed inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 backdrop-brightness-105" @click=${this.handleClose}></div>
320
+ if (this.isConfirmMode) {
321
+ let e = !!this.title?.trim(), n = !!this.subtitle?.trim(), a = !!this.message?.trim(), o = [n && this._descId + "-sub", a && this._descId + "-msg"].filter(Boolean).join(" ") || "";
322
+ return T`
323
+ <div ${O(this._backdropRef)} class="fixed inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 backdrop-brightness-105" @click=${this.handleClose}></div>
310
324
 
311
- <div ${D(this._confirmDialogRef)} class=${this.classMap(r)} role="alertdialog" aria-modal="true">
325
+ <div
326
+ ${O(this._confirmDialogRef)}
327
+ class=${this.classMap(r)}
328
+ role="alertdialog"
329
+ aria-modal="true"
330
+ aria-labelledby=${e ? this._titleId : E}
331
+ aria-describedby=${o || E}
332
+ >
312
333
  <schmancy-surface
313
334
  ${s({
314
- radius: 250,
315
- intensity: .1
316
- })}
335
+ radius: 250,
336
+ intensity: .1
337
+ })}
317
338
  rounded=${this.isMobile ? "top" : "all"}
318
339
  type="glass"
319
340
  fill="all"
@@ -322,15 +343,15 @@ var F = (e) => class extends e {
322
343
  ${this.isMobile ? this.renderDragHandle() : null}
323
344
  <schmancy-scroll direction="vertical" hide class="p-4 pt-2">
324
345
  <schmancy-form @submit=${this.handleConfirm}>
325
- ${O(this.title?.trim(), () => T`
326
- <schmancy-typography type="title" token="md" class="mb-1">${this.title}</schmancy-typography>
327
- ${O(this.subtitle?.trim(), () => T`
328
- <schmancy-typography type="subtitle" token="xs" class="mb-2">
346
+ ${k(e, () => T`
347
+ <schmancy-typography id=${this._titleId} type="title" token="md" class="mb-1">${this.title}</schmancy-typography>
348
+ ${k(n, () => T`
349
+ <schmancy-typography id="${this._descId}-sub" type="subtitle" token="xs" class="mb-2">
329
350
  ${this.subtitle}
330
351
  </schmancy-typography>
331
352
  `)}
332
353
  `)}
333
- ${t ? T`<div class="mb-4"><slot name="content"></slot></div>` : O(this.message?.trim(), () => T`<schmancy-typography type="body" class="mb-4">${this.message}</schmancy-typography>`)}
354
+ ${t ? T`<div class="mb-4"><slot name="content"></slot></div>` : k(a, () => T`<schmancy-typography id="${this._descId}-msg" type="body" class="mb-4">${this.message}</schmancy-typography>`)}
334
355
  <div class=${i}>
335
356
  <schmancy-button
336
357
  variant="outlined"
@@ -351,10 +372,12 @@ var F = (e) => class extends e {
351
372
  </schmancy-scroll>
352
373
  </schmancy-surface>
353
374
  </div>
354
- ` : T`
355
- <div ${D(this._backdropRef)} class="fixed inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 backdrop-brightness-105" @click=${this.handleClose}></div>
375
+ `;
376
+ }
377
+ return T`
378
+ <div ${O(this._backdropRef)} class="fixed inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 backdrop-brightness-105" @click=${this.handleClose}></div>
356
379
 
357
- <section ${D(this._contentDialogRef)} class=${this.classMap(r)} role="dialog" aria-modal="true">
380
+ <section ${O(this._contentDialogRef)} class=${this.classMap(r)} role="dialog" aria-modal="true">
358
381
  <schmancy-surface ${s({
359
382
  radius: 250,
360
383
  intensity: .1
@@ -381,17 +404,17 @@ var F = (e) => class extends e {
381
404
  e([S({
382
405
  type: String,
383
406
  reflect: !0
384
- })], I.prototype, "uid", void 0), e([S({ type: String })], I.prototype, "title", void 0), e([S({ type: String })], I.prototype, "subtitle", void 0), e([S({ type: String })], I.prototype, "message", void 0), e([S({
407
+ })], L.prototype, "uid", void 0), e([S({ type: String })], L.prototype, "title", void 0), e([S({ type: String })], L.prototype, "subtitle", void 0), e([S({ type: String })], L.prototype, "message", void 0), e([S({
385
408
  type: String,
386
409
  attribute: "confirm-text"
387
- })], I.prototype, "confirmText", void 0), e([S({
410
+ })], L.prototype, "confirmText", void 0), e([S({
388
411
  type: String,
389
412
  attribute: "cancel-text"
390
- })], I.prototype, "cancelText", void 0), e([S({ type: String })], I.prototype, "variant", void 0), e([S({
413
+ })], L.prototype, "cancelText", void 0), e([S({ type: String })], L.prototype, "variant", void 0), e([S({
391
414
  type: Boolean,
392
415
  attribute: "hide-actions"
393
- })], I.prototype, "hideActions", void 0), e([C({
416
+ })], L.prototype, "hideActions", void 0), e([C({
394
417
  slot: "content",
395
418
  flatten: !0
396
- })], I.prototype, "_contentSlotElements", void 0), I = e([x("schmancy-dialog")], I);
397
- export { d as $dialog, I as ConfirmDialog, I as SchmancyDialog, F as DialogBase, l as DialogService };
419
+ })], L.prototype, "_contentSlotElements", void 0), L = e([x("schmancy-dialog")], L);
420
+ export { d as $dialog, L as ConfirmDialog, L as SchmancyDialog, I as DialogBase, l as DialogService };