@mhmo91/schmancy 0.10.42 → 0.10.44

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 (759) hide show
  1. package/custom-elements.json +264 -79
  2. package/dist/SchmancyElement-CeKrBW2j.cjs +2 -0
  3. package/dist/SchmancyElement-CeKrBW2j.cjs.map +1 -0
  4. package/dist/SchmancyElement-Ob9yGkiG.js +286 -0
  5. package/dist/SchmancyElement-Ob9yGkiG.js.map +1 -0
  6. package/dist/agent/schmancy.agent.js +4032 -3886
  7. package/dist/agent/schmancy.agent.js.map +1 -1
  8. package/dist/agent/schmancy.manifest.json +215 -58
  9. package/dist/animation-CCOIW4wJ.cjs.map +1 -1
  10. package/dist/animation-DCznELuT.js.map +1 -1
  11. package/dist/area-CbajcnmJ.cjs +21 -0
  12. package/dist/area-CbajcnmJ.cjs.map +1 -0
  13. package/dist/{area-DtCNCb8w.js → area-MxLAyWgV.js} +22 -22
  14. package/dist/area-MxLAyWgV.js.map +1 -0
  15. package/dist/area.cjs +1 -1
  16. package/dist/area.js +1 -1
  17. package/dist/{audio-DdN76ikW.js → audio-B_0PGwYC.js} +1 -1
  18. package/dist/audio-B_0PGwYC.js.map +1 -0
  19. package/dist/{audio-B924fI5N.cjs → audio-CpwrIaw-.cjs} +1 -1
  20. package/dist/audio-CpwrIaw-.cjs.map +1 -0
  21. package/dist/audio.cjs +1 -1
  22. package/dist/audio.js +2 -2
  23. package/dist/autocomplete-CILzaDB7.cjs +115 -0
  24. package/dist/autocomplete-CILzaDB7.cjs.map +1 -0
  25. package/dist/{autocomplete-UNOknYUz.js → autocomplete-DV9RxCun.js} +113 -113
  26. package/dist/autocomplete-DV9RxCun.js.map +1 -0
  27. package/dist/autocomplete.cjs +1 -1
  28. package/dist/autocomplete.js +1 -1
  29. package/dist/avatar.cjs +1 -1
  30. package/dist/avatar.cjs.map +1 -1
  31. package/dist/avatar.js +4 -4
  32. package/dist/avatar.js.map +1 -1
  33. package/dist/badge.cjs +1 -1
  34. package/dist/badge.js +1 -1
  35. package/dist/{boat-BZah1Sf9.js → boat-DoZGgQ0P.js} +5 -5
  36. package/dist/{boat-BZah1Sf9.js.map → boat-DoZGgQ0P.js.map} +1 -1
  37. package/dist/{boat-D3bEjxf8.cjs → boat-sg0cWO8a.cjs} +2 -2
  38. package/dist/{boat-D3bEjxf8.cjs.map → boat-sg0cWO8a.cjs.map} +1 -1
  39. package/dist/boat.cjs +1 -1
  40. package/dist/boat.js +1 -1
  41. package/dist/breadcrumb.cjs +32 -31
  42. package/dist/breadcrumb.cjs.map +1 -1
  43. package/dist/breadcrumb.js +33 -32
  44. package/dist/breadcrumb.js.map +1 -1
  45. package/dist/busy-Brs-TDh9.cjs +133 -0
  46. package/dist/busy-Brs-TDh9.cjs.map +1 -0
  47. package/dist/busy-g4LoQmhB.js +172 -0
  48. package/dist/busy-g4LoQmhB.js.map +1 -0
  49. package/dist/busy.cjs +1 -1
  50. package/dist/busy.js +1 -1
  51. package/dist/{button-CTvS5YX4.cjs → button-Cml67Y_d.cjs} +41 -32
  52. package/dist/button-Cml67Y_d.cjs.map +1 -0
  53. package/dist/{button-DgoDfcJx.js → button-DWANpZfD.js} +43 -34
  54. package/dist/button-DWANpZfD.js.map +1 -0
  55. package/dist/button.cjs +40 -33
  56. package/dist/button.cjs.map +1 -1
  57. package/dist/button.js +42 -35
  58. package/dist/button.js.map +1 -1
  59. package/dist/calendar-2dJrw9pR.cjs +58 -0
  60. package/dist/calendar-2dJrw9pR.cjs.map +1 -0
  61. package/dist/calendar-kCe5LaBa.js +434 -0
  62. package/dist/calendar-kCe5LaBa.js.map +1 -0
  63. package/dist/calendar.cjs +1 -0
  64. package/dist/calendar.js +2 -0
  65. package/dist/{card-C6ijJZpF.js → card-CS_hYJbz.js} +136 -136
  66. package/dist/card-CS_hYJbz.js.map +1 -0
  67. package/dist/card-d0KhTnx5.cjs +177 -0
  68. package/dist/card-d0KhTnx5.cjs.map +1 -0
  69. package/dist/card.cjs +1 -1
  70. package/dist/card.js +1 -1
  71. package/dist/{checkbox-7vEPZuGC.js → checkbox-Bjp7kWuE.js} +2 -2
  72. package/dist/{checkbox-7vEPZuGC.js.map → checkbox-Bjp7kWuE.js.map} +1 -1
  73. package/dist/{checkbox-DXKdxkXE.cjs → checkbox-DZ2Wrz7Y.cjs} +1 -1
  74. package/dist/{checkbox-DXKdxkXE.cjs.map → checkbox-DZ2Wrz7Y.cjs.map} +1 -1
  75. package/dist/checkbox.cjs +1 -1
  76. package/dist/checkbox.js +1 -1
  77. package/dist/{chips-9eG-96_D.cjs → chips-BHBVkxsa.cjs} +142 -153
  78. package/dist/chips-BHBVkxsa.cjs.map +1 -0
  79. package/dist/{chips-DF7akwz7.js → chips-DACeW7YL.js} +127 -138
  80. package/dist/chips-DACeW7YL.js.map +1 -0
  81. package/dist/chips.cjs +1 -1
  82. package/dist/chips.js +2 -2
  83. package/dist/connectivity.cjs +53 -35
  84. package/dist/connectivity.cjs.map +1 -1
  85. package/dist/connectivity.js +55 -37
  86. package/dist/connectivity.js.map +1 -1
  87. package/dist/content-drawer.cjs +1 -1
  88. package/dist/content-drawer.js +1 -1
  89. package/dist/cursor-glow-Ah7VXSj7.js.map +1 -1
  90. package/dist/cursor-glow-Bulq-38P.cjs.map +1 -1
  91. package/dist/date-range-B2VN7cl_.cjs +138 -0
  92. package/dist/date-range-B2VN7cl_.cjs.map +1 -0
  93. package/dist/date-range-CDF_5ju_.js +439 -0
  94. package/dist/date-range-CDF_5ju_.js.map +1 -0
  95. package/dist/{date-range-inline-DV2c_gWM.cjs → date-range-inline-CGM0SPK9.cjs} +2 -4
  96. package/dist/date-range-inline-CGM0SPK9.cjs.map +1 -0
  97. package/dist/{date-range-inline-BnOD-ddB.js → date-range-inline-D6Ozerzw.js} +3 -5
  98. package/dist/date-range-inline-D6Ozerzw.js.map +1 -0
  99. package/dist/date-range-inline.cjs +1 -1
  100. package/dist/date-range-inline.js +1 -1
  101. package/dist/date-range.cjs +1 -1
  102. package/dist/date-range.js +2 -2
  103. package/dist/dayjs.min-CvRZTfam.cjs +1 -0
  104. package/dist/dayjs.min-CvRZTfam.cjs.map +1 -0
  105. package/dist/dayjs.min-DnELezPs.js +296 -0
  106. package/dist/dayjs.min-DnELezPs.js.map +1 -0
  107. package/dist/delay.cjs +1 -1
  108. package/dist/delay.js +3 -3
  109. package/dist/{details-ByF66CyY.js → details-Ct1_GwKr.js} +104 -93
  110. package/dist/details-Ct1_GwKr.js.map +1 -0
  111. package/dist/{details-B2-jECBh.cjs → details-D4fVOaj4.cjs} +109 -98
  112. package/dist/details-D4fVOaj4.cjs.map +1 -0
  113. package/dist/details.cjs +1 -1
  114. package/dist/details.js +1 -1
  115. package/dist/{directives-DCb_LA9R.cjs → directives-B2VxfwRL.cjs} +1 -1
  116. package/dist/directives-B2VxfwRL.cjs.map +1 -0
  117. package/dist/{directives-BL7mzVsA.js → directives-Dj8jlv-Q.js} +3 -3
  118. package/dist/directives-Dj8jlv-Q.js.map +1 -0
  119. package/dist/directives.cjs +1 -1
  120. package/dist/directives.js +2 -2
  121. package/dist/discovery.service-CIa3Eeuk.cjs.map +1 -1
  122. package/dist/discovery.service-DZFxtRwW.js.map +1 -1
  123. package/dist/divider-B3v33OnX.cjs +57 -0
  124. package/dist/divider-B3v33OnX.cjs.map +1 -0
  125. package/dist/divider-BJHW3q11.js +89 -0
  126. package/dist/divider-BJHW3q11.js.map +1 -0
  127. package/dist/divider.cjs +1 -1
  128. package/dist/divider.js +1 -1
  129. package/dist/dropdown.cjs +40 -40
  130. package/dist/dropdown.cjs.map +1 -1
  131. package/dist/dropdown.js +41 -41
  132. package/dist/dropdown.js.map +1 -1
  133. package/dist/{expand-cZ8rfCWP.js → expand-BT8mOu8Q.js} +103 -97
  134. package/dist/expand-BT8mOu8Q.js.map +1 -0
  135. package/dist/expand-D0YdR9nR.cjs +147 -0
  136. package/dist/expand-D0YdR9nR.cjs.map +1 -0
  137. package/dist/expand.cjs +1 -1
  138. package/dist/expand.js +1 -1
  139. package/dist/fab.cjs +1 -1
  140. package/dist/fab.cjs.map +1 -1
  141. package/dist/fab.js +2 -2
  142. package/dist/fab.js.map +1 -1
  143. package/dist/{float-DkGyWSWy.cjs → float-BPQlDyai.cjs} +1 -1
  144. package/dist/{float-DkGyWSWy.cjs.map → float-BPQlDyai.cjs.map} +1 -1
  145. package/dist/{float-zn3DgXBT.js → float-BQcxj3i_.js} +2 -2
  146. package/dist/{float-zn3DgXBT.js.map → float-BQcxj3i_.js.map} +1 -1
  147. package/dist/float.cjs +1 -1
  148. package/dist/float.js +1 -1
  149. package/dist/{form-DowzVsgI.cjs → form-CoWFnClb.cjs} +8 -13
  150. package/dist/form-CoWFnClb.cjs.map +1 -0
  151. package/dist/{form-tG7LwDm4.js → form-hC2LvCHX.js} +10 -15
  152. package/dist/form-hC2LvCHX.js.map +1 -0
  153. package/dist/form.cjs +12 -13
  154. package/dist/form.cjs.map +1 -1
  155. package/dist/form.js +23 -24
  156. package/dist/form.js.map +1 -1
  157. package/dist/gravity-6pL6CfIr.cjs.map +1 -1
  158. package/dist/gravity-sVK3zGBF.js.map +1 -1
  159. package/dist/handover/agent-runtime-followups.md +1 -1
  160. package/dist/handover/agent-runtime-v1.md +3 -3
  161. package/dist/{hashContent-iRZJJWtE.cjs.map → hashContent--s09Ed_g.cjs.map} +1 -1
  162. package/dist/{hashContent-BqU6v1Xr.js.map → hashContent-CAvrQ56N.js.map} +1 -1
  163. package/dist/icons-BeGKDZ-k.cjs +22 -0
  164. package/dist/icons-BeGKDZ-k.cjs.map +1 -0
  165. package/dist/{icons-Dup5skuk.js → icons-DEJnIxml.js} +20 -22
  166. package/dist/icons-DEJnIxml.js.map +1 -0
  167. package/dist/icons.cjs +1 -1
  168. package/dist/icons.js +1 -1
  169. package/dist/{iframe-CDJjnNmo.cjs → iframe-BkSukM9C.cjs} +9 -9
  170. package/dist/iframe-BkSukM9C.cjs.map +1 -0
  171. package/dist/{iframe-Xc3EPMZT.js → iframe-V3S-bwEY.js} +10 -10
  172. package/dist/iframe-V3S-bwEY.js.map +1 -0
  173. package/dist/iframe.cjs +1 -1
  174. package/dist/iframe.js +1 -1
  175. package/dist/index.cjs +1 -1
  176. package/dist/index.js +61 -60
  177. package/dist/{input-cTyDxW9L.js → input-CPFCSQld.js} +3 -10
  178. package/dist/input-CPFCSQld.js.map +1 -0
  179. package/dist/{input-DnmC6J1T.cjs → input-DSfwfhhj.cjs} +2 -9
  180. package/dist/input-DSfwfhhj.cjs.map +1 -0
  181. package/dist/input-chip-BUuFJUky.cjs +129 -0
  182. package/dist/input-chip-BUuFJUky.cjs.map +1 -0
  183. package/dist/{input-chip-CYI17YOq.js → input-chip-C3a1fwKB.js} +87 -104
  184. package/dist/input-chip-C3a1fwKB.js.map +1 -0
  185. package/dist/input.cjs +1 -1
  186. package/dist/input.js +1 -1
  187. package/dist/json.cjs +5 -1
  188. package/dist/json.cjs.map +1 -1
  189. package/dist/json.js +8 -4
  190. package/dist/json.js.map +1 -1
  191. package/dist/kbd.cjs +28 -28
  192. package/dist/kbd.cjs.map +1 -1
  193. package/dist/kbd.js +29 -29
  194. package/dist/kbd.js.map +1 -1
  195. package/dist/{layout-CNlZSJFU.cjs → layout-CdyHy_oX.cjs} +1 -1
  196. package/dist/layout-CdyHy_oX.cjs.map +1 -0
  197. package/dist/{layout-DDxw0EwL.js → layout-k6fOkpif.js} +1 -1
  198. package/dist/layout-k6fOkpif.js.map +1 -0
  199. package/dist/layout.cjs +26 -26
  200. package/dist/layout.cjs.map +1 -1
  201. package/dist/layout.js +27 -27
  202. package/dist/layout.js.map +1 -1
  203. package/dist/lazy-BaAiIUru.js.map +1 -1
  204. package/dist/lazy-C-7a4FAe.cjs.map +1 -1
  205. package/dist/{lightbox-CH-y3rYB.js → lightbox-DIG0VLOK.js} +8 -14
  206. package/dist/lightbox-DIG0VLOK.js.map +1 -0
  207. package/dist/{lightbox-CvtqoInF.cjs → lightbox-E5rgd-hu.cjs} +7 -13
  208. package/dist/lightbox-E5rgd-hu.cjs.map +1 -0
  209. package/dist/lightbox.cjs +1 -1
  210. package/dist/lightbox.js +1 -1
  211. package/dist/list-BRz0rDSH.cjs +47 -0
  212. package/dist/list-BRz0rDSH.cjs.map +1 -0
  213. package/dist/{list-DrsawQ5R.js → list-NrOYDPBo.js} +42 -35
  214. package/dist/list-NrOYDPBo.js.map +1 -0
  215. package/dist/list.cjs +1 -1
  216. package/dist/list.js +1 -1
  217. package/dist/magnetic-DKtc4umC.cjs.map +1 -1
  218. package/dist/magnetic-DaOOv5Dz.js.map +1 -1
  219. package/dist/{menu-CsY5lMqY.js → menu-B1Ei9SVj.js} +12 -12
  220. package/dist/menu-B1Ei9SVj.js.map +1 -0
  221. package/dist/{menu-BFRcTe3o.cjs → menu-Duvl66Nl.cjs} +10 -10
  222. package/dist/menu-Duvl66Nl.cjs.map +1 -0
  223. package/dist/menu.cjs +1 -1
  224. package/dist/menu.js +1 -1
  225. package/dist/{mixins-BoMURWag.cjs → mixins-Cjn20BQH.cjs} +42 -100
  226. package/dist/mixins-Cjn20BQH.cjs.map +1 -0
  227. package/dist/{mixins-bCEXbwJV.js → mixins-q4KAL8Xr.js} +42 -100
  228. package/dist/mixins-q4KAL8Xr.js.map +1 -0
  229. package/dist/mixins.cjs +1 -1
  230. package/dist/mixins.js +2 -2
  231. package/dist/nav-drawer.cjs +1 -1
  232. package/dist/nav-drawer.js +1 -1
  233. package/dist/navigation-bar.cjs +1 -1
  234. package/dist/navigation-bar.js +1 -1
  235. package/dist/navigation-rail.cjs +2 -4
  236. package/dist/navigation-rail.cjs.map +1 -1
  237. package/dist/navigation-rail.js +3 -5
  238. package/dist/navigation-rail.js.map +1 -1
  239. package/dist/{notification-DFKRMmSq.js → notification-COhUhUCr.js} +5 -7
  240. package/dist/notification-COhUhUCr.js.map +1 -0
  241. package/dist/{notification-FBf3Mb2e.cjs → notification-DsdA_MJe.cjs} +2 -4
  242. package/dist/notification-DsdA_MJe.cjs.map +1 -0
  243. package/dist/notification.cjs +1 -1
  244. package/dist/notification.js +1 -1
  245. package/dist/{option-Ct0lGdH3.js → option-BIzgTbXz.js} +20 -20
  246. package/dist/option-BIzgTbXz.js.map +1 -0
  247. package/dist/option-C5hhqR2z.cjs +43 -0
  248. package/dist/option-C5hhqR2z.cjs.map +1 -0
  249. package/dist/option.cjs +1 -1
  250. package/dist/option.js +1 -1
  251. package/dist/{overlay-sRXiMkjn.cjs → overlay-BzgF8P7i.cjs} +48 -41
  252. package/dist/overlay-BzgF8P7i.cjs.map +1 -0
  253. package/dist/{overlay-Bh8Q_R01.js → overlay-LoRRemny.js} +52 -45
  254. package/dist/overlay-LoRRemny.js.map +1 -0
  255. package/dist/overlay-stack-Bdr9lOqi.cjs.map +1 -1
  256. package/dist/overlay-stack-D2rgxQLh.js.map +1 -1
  257. package/dist/overlay.cjs +1 -1
  258. package/dist/{overlay.confirm-body-CQihsR20.js → overlay.confirm-body-D0b1MoCw.js} +30 -45
  259. package/dist/overlay.confirm-body-D0b1MoCw.js.map +1 -0
  260. package/dist/{overlay.confirm-body-Jc1EuMGs.cjs → overlay.confirm-body-DCneq73Z.cjs} +22 -37
  261. package/dist/overlay.confirm-body-DCneq73Z.cjs.map +1 -0
  262. package/dist/overlay.js +3 -3
  263. package/dist/{overlay.service-BXPgS7ay.js → overlay.service-BuUeti6X.js} +2 -2
  264. package/dist/overlay.service-BuUeti6X.js.map +1 -0
  265. package/dist/{overlay.service-9Dp3g7ot.cjs → overlay.service-MMTiW2T3.cjs} +1 -1
  266. package/dist/overlay.service-MMTiW2T3.cjs.map +1 -0
  267. package/dist/{progress-CYLshdo2.js → progress-D7n3SKAO.js} +50 -50
  268. package/dist/progress-D7n3SKAO.js.map +1 -0
  269. package/dist/progress-DsCnFsH5.cjs +51 -0
  270. package/dist/progress-DsCnFsH5.cjs.map +1 -0
  271. package/dist/progress.cjs +1 -1
  272. package/dist/progress.js +1 -1
  273. package/dist/{radio-group-6kCgOgBL.cjs → radio-group-CaAjg9UV.cjs} +1 -1
  274. package/dist/radio-group-CaAjg9UV.cjs.map +1 -0
  275. package/dist/{radio-group-bZtZHOj_.js → radio-group-Drpl6Pl8.js} +2 -2
  276. package/dist/radio-group-Drpl6Pl8.js.map +1 -0
  277. package/dist/radio-group.cjs +1 -1
  278. package/dist/radio-group.js +1 -1
  279. package/dist/range.cjs +4 -2
  280. package/dist/range.cjs.map +1 -1
  281. package/dist/range.js +5 -3
  282. package/dist/range.js.map +1 -1
  283. package/dist/reduced-motion-D-L12p7G.js.map +1 -1
  284. package/dist/reduced-motion-Ds-HjMzn.cjs.map +1 -1
  285. package/dist/{rxjs-utils-Csnks202.cjs.map → rxjs-utils-4P2v57ke.cjs.map} +1 -1
  286. package/dist/{rxjs-utils-d-ivVN84.js.map → rxjs-utils-JMFdgQSl.js.map} +1 -1
  287. package/dist/rxjs-utils.cjs +1 -1
  288. package/dist/rxjs-utils.js +1 -1
  289. package/dist/search-DPKoC-dT.cjs.map +1 -1
  290. package/dist/search-MvIBA93K.js.map +1 -1
  291. package/dist/{select-CU3X-PIa.js → select-CTXkrrVZ.js} +13 -13
  292. package/dist/select-CTXkrrVZ.js.map +1 -0
  293. package/dist/select-DcLcpPCh.cjs +56 -0
  294. package/dist/select-DcLcpPCh.cjs.map +1 -0
  295. package/dist/select.cjs +1 -1
  296. package/dist/select.js +1 -1
  297. package/dist/skeleton.cjs +37 -33
  298. package/dist/skeleton.cjs.map +1 -1
  299. package/dist/skeleton.js +38 -34
  300. package/dist/skeleton.js.map +1 -1
  301. package/dist/skills/schmancy/surface.md +38 -22
  302. package/dist/skills/surface.md +38 -22
  303. package/dist/slider.cjs +31 -31
  304. package/dist/slider.cjs.map +1 -1
  305. package/dist/slider.js +32 -32
  306. package/dist/slider.js.map +1 -1
  307. package/dist/{sound.service-B4ZmXpH9.js → sound.service-AJwuk3yr.js} +1 -1
  308. package/dist/sound.service-AJwuk3yr.js.map +1 -0
  309. package/dist/{sound.service-DjlMvicQ.cjs → sound.service-CVsxhQkX.cjs} +1 -1
  310. package/dist/sound.service-CVsxhQkX.cjs.map +1 -0
  311. package/dist/{splash-screen-emCLYoVl.js → splash-screen-DANfqvlo.js} +23 -26
  312. package/dist/splash-screen-DANfqvlo.js.map +1 -0
  313. package/dist/splash-screen-K74cgU6S.cjs +38 -0
  314. package/dist/splash-screen-K74cgU6S.cjs.map +1 -0
  315. package/dist/splash-screen.cjs +1 -1
  316. package/dist/splash-screen.js +1 -1
  317. package/dist/{src-DGDTkOvC.js → src-Bo-vvN6m.js} +173 -175
  318. package/dist/src-Bo-vvN6m.js.map +1 -0
  319. package/dist/src-MdpH1zth.cjs +237 -0
  320. package/dist/src-MdpH1zth.cjs.map +1 -0
  321. package/dist/{state-CumAEPQH.cjs → state-BWQiqN6I.cjs} +1 -1
  322. package/dist/state-BWQiqN6I.cjs.map +1 -0
  323. package/dist/{state-DMd_FUeA.js → state-DBA_gzJO.js} +1 -1
  324. package/dist/state-DBA_gzJO.js.map +1 -0
  325. package/dist/state.cjs +1 -1
  326. package/dist/state.js +2 -2
  327. package/dist/steps.cjs +20 -12
  328. package/dist/steps.cjs.map +1 -1
  329. package/dist/steps.js +21 -13
  330. package/dist/steps.js.map +1 -1
  331. package/dist/surface-COBvWWFb.cjs +7 -0
  332. package/dist/surface-COBvWWFb.cjs.map +1 -0
  333. package/dist/{surface-DNiYigsX.js → surface-DXk1X1tL.js} +9 -9
  334. package/dist/{surface-DNiYigsX.js.map → surface-DXk1X1tL.js.map} +1 -1
  335. package/dist/surface.cjs +1 -1
  336. package/dist/surface.js +1 -1
  337. package/dist/switch.cjs +13 -4
  338. package/dist/switch.cjs.map +1 -1
  339. package/dist/switch.js +14 -5
  340. package/dist/switch.js.map +1 -1
  341. package/dist/table.cjs +4 -10
  342. package/dist/table.cjs.map +1 -1
  343. package/dist/table.js +5 -11
  344. package/dist/table.js.map +1 -1
  345. package/dist/{tabs-4T_4kCf-.js → tabs-BYhFWnsx.js} +7 -7
  346. package/dist/tabs-BYhFWnsx.js.map +1 -0
  347. package/dist/{tabs-Byxxt-AH.cjs → tabs-CJwB0fr0.cjs} +6 -6
  348. package/dist/tabs-CJwB0fr0.cjs.map +1 -0
  349. package/dist/tabs.cjs +1 -1
  350. package/dist/tabs.js +1 -1
  351. package/dist/teleport.cjs +1 -1
  352. package/dist/teleport.js +1 -1
  353. package/dist/{textarea-kkYNk1ET.js → textarea-BjDx1w2g.js} +37 -41
  354. package/dist/textarea-BjDx1w2g.js.map +1 -0
  355. package/dist/{textarea-BwYwH9fu.cjs → textarea-CGgznhd6.cjs} +36 -40
  356. package/dist/textarea-CGgznhd6.cjs.map +1 -0
  357. package/dist/textarea.cjs +1 -1
  358. package/dist/textarea.js +1 -1
  359. package/dist/{theme-BG0EnzYP.cjs → theme-BVul7lHS.cjs} +6 -6
  360. package/dist/{theme-BG0EnzYP.cjs.map → theme-BVul7lHS.cjs.map} +1 -1
  361. package/dist/{theme-DwQBl6sr.js → theme-Dvm5J8nh.js} +11 -11
  362. package/dist/{theme-DwQBl6sr.js.map → theme-Dvm5J8nh.js.map} +1 -1
  363. package/dist/{theme-button-BD8anzsZ.js → theme-button-Bko5ohFP.js} +2 -2
  364. package/dist/{theme-button-BD8anzsZ.js.map → theme-button-Bko5ohFP.js.map} +1 -1
  365. package/dist/{theme-button-DlrNoCMA.cjs → theme-button-YLY7zR1c.cjs} +1 -1
  366. package/dist/{theme-button-DlrNoCMA.cjs.map → theme-button-YLY7zR1c.cjs.map} +1 -1
  367. package/dist/theme-button.cjs +1 -1
  368. package/dist/theme-button.js +1 -1
  369. package/dist/theme.cjs +1 -1
  370. package/dist/{theme.interface-CSt7JUBD.cjs.map → theme.interface-B-qxDsZQ.cjs.map} +1 -1
  371. package/dist/{theme.interface-odQEpZZH.js.map → theme.interface-B7caS5cg.js.map} +1 -1
  372. package/dist/theme.js +4 -4
  373. package/dist/{theme.service-Dv_55nfE.js → theme.service-D94nm7Bf.js} +1 -1
  374. package/dist/theme.service-D94nm7Bf.js.map +1 -0
  375. package/dist/{theme.service-pjkTM209.cjs → theme.service-h2fXQq7x.cjs} +1 -1
  376. package/dist/theme.service-h2fXQq7x.cjs.map +1 -0
  377. package/dist/tooltip.cjs.map +1 -1
  378. package/dist/tooltip.js.map +1 -1
  379. package/dist/tree.cjs +14 -14
  380. package/dist/tree.cjs.map +1 -1
  381. package/dist/tree.js +15 -15
  382. package/dist/tree.js.map +1 -1
  383. package/dist/types.cjs +1 -1
  384. package/dist/types.cjs.map +1 -1
  385. package/dist/types.js +19 -2
  386. package/dist/types.js.map +1 -1
  387. package/dist/typewriter.cjs.map +1 -1
  388. package/dist/typewriter.js.map +1 -1
  389. package/dist/typography-ByF2k5yW.js +358 -0
  390. package/dist/typography-ByF2k5yW.js.map +1 -0
  391. package/dist/typography-Cfav17it.cjs +282 -0
  392. package/dist/typography-Cfav17it.cjs.map +1 -0
  393. package/dist/typography.cjs +1 -1
  394. package/dist/typography.js +1 -1
  395. package/dist/utils-DIXndz6Q.cjs.map +1 -0
  396. package/dist/utils-dSPH7Oh9.js.map +1 -0
  397. package/dist/utils.cjs +1 -1
  398. package/dist/utils.js +1 -1
  399. package/dist/visually-hidden.cjs +13 -13
  400. package/dist/visually-hidden.cjs.map +1 -1
  401. package/dist/visually-hidden.js +14 -14
  402. package/dist/visually-hidden.js.map +1 -1
  403. package/dist/window-Br1OmpL-.cjs +67 -0
  404. package/dist/window-Br1OmpL-.cjs.map +1 -0
  405. package/dist/{window-C76zstbV.js → window-CCmN4but.js} +24 -15
  406. package/dist/window-CCmN4but.js.map +1 -0
  407. package/dist/window.cjs +1 -1
  408. package/dist/window.js +1 -1
  409. package/package.json +1 -1
  410. package/skills/schmancy/surface.md +38 -22
  411. package/src/area/area.component.ts +249 -163
  412. package/src/area/area.service.test.ts +994 -1006
  413. package/src/area/area.service.ts +76 -72
  414. package/src/area/index.ts +7 -7
  415. package/src/area/lazy.ts +39 -42
  416. package/src/area/route.component.ts +54 -52
  417. package/src/area/router.types.ts +7 -7
  418. package/src/audio/emotional-sounds.ts +880 -801
  419. package/src/audio/sound.service.ts +26 -5
  420. package/src/avatar/avatar.ts +4 -4
  421. package/src/badge/badge.ts +15 -12
  422. package/src/badge/index.ts +1 -1
  423. package/src/boat/boat.ts +1 -1
  424. package/src/breadcrumb/breadcrumb.ts +37 -32
  425. package/src/busy/busy.ts +15 -12
  426. package/src/busy/index.ts +2 -2
  427. package/src/busy/spinner.ts +132 -119
  428. package/src/button/button.test.ts +5 -1
  429. package/src/button/button.ts +113 -72
  430. package/src/button/icon-button.ts +64 -46
  431. package/src/button/index.ts +2 -2
  432. package/src/calendar/calendar.test.ts +504 -0
  433. package/src/calendar/calendar.ts +587 -0
  434. package/src/calendar/index.ts +2 -0
  435. package/src/card/actions.ts +11 -9
  436. package/src/card/card.ts +79 -77
  437. package/src/card/content.ts +8 -6
  438. package/src/card/index.ts +4 -4
  439. package/src/card/media.ts +50 -50
  440. package/src/chips/assist-chip.ts +1 -1
  441. package/src/chips/chips.ts +1 -1
  442. package/src/chips/filter-chip.ts +1 -1
  443. package/src/chips/index.ts +1 -1
  444. package/src/chips/input-chip.ts +1 -1
  445. package/src/chips/suggestion-chip.ts +1 -1
  446. package/src/connectivity/connectivity-status.ts +90 -62
  447. package/src/content-drawer/drawer.service.ts +47 -36
  448. package/src/content-drawer/drawer.ts +31 -18
  449. package/src/content-drawer/index.ts +5 -5
  450. package/src/content-drawer/main.ts +9 -7
  451. package/src/content-drawer/sheet.ts +8 -6
  452. package/src/date-range-inline/date-range-inline.ts +523 -522
  453. package/src/date-range-inline/index.ts +2 -2
  454. package/src/delay/index.ts +1 -1
  455. package/src/details/details.ts +119 -105
  456. package/src/details/index.ts +1 -1
  457. package/src/directives/ai-badge.ts +1 -5
  458. package/src/directives/animate-text.ts +43 -31
  459. package/src/directives/art/effects/howl.ts +1 -4
  460. package/src/directives/art/effects/samwa.ts +11 -5
  461. package/src/directives/art/effects/snow.ts +1 -2
  462. package/src/directives/battery.ts +21 -12
  463. package/src/directives/confirm-click.ts +9 -17
  464. package/src/directives/cursor-glow.ts +1 -1
  465. package/src/directives/cycle-text.ts +7 -21
  466. package/src/directives/drag.ts +50 -45
  467. package/src/directives/fyi.ts +1 -6
  468. package/src/directives/gravity.ts +10 -8
  469. package/src/directives/hummingbird.ts +256 -107
  470. package/src/directives/index.ts +29 -29
  471. package/src/directives/intersect.ts +11 -11
  472. package/src/directives/layout.ts +25 -36
  473. package/src/directives/liquid.ts +4 -10
  474. package/src/directives/living-border.ts +7 -5
  475. package/src/directives/long-press.ts +2 -1
  476. package/src/directives/magnetic.ts +7 -6
  477. package/src/directives/nebula.ts +34 -28
  478. package/src/directives/overflow-within.ts +18 -20
  479. package/src/directives/reduced-motion.ts +9 -9
  480. package/src/directives/reveal.ts +193 -195
  481. package/src/directives/ripple.ts +9 -7
  482. package/src/directives/urgent.ts +3 -1
  483. package/src/directives/working-snake.ts +1 -1
  484. package/src/discovery/discovery.service.ts +198 -210
  485. package/src/discovery/index.ts +1 -1
  486. package/src/divider/divider.ts +49 -47
  487. package/src/divider/index.ts +1 -1
  488. package/src/dropdown/dropdown-content.ts +42 -40
  489. package/src/dropdown/index.ts +2 -2
  490. package/src/expand/expand-root.component.ts +70 -61
  491. package/src/expand/expand.component.ts +48 -43
  492. package/src/fab/fab.test.ts +1 -2
  493. package/src/fab/fab.ts +2 -4
  494. package/src/form/fields/autocomplete/autocomplete.scss +6 -2
  495. package/src/form/fields/autocomplete/autocomplete.ts +712 -724
  496. package/src/form/fields/autocomplete/index.ts +1 -1
  497. package/src/form/fields/checkbox/checkbox.ts +1 -4
  498. package/src/form/fields/chips/assist-chip.ts +69 -72
  499. package/src/form/fields/chips/chips.ts +14 -15
  500. package/src/form/fields/chips/filter-chip.ts +36 -32
  501. package/src/form/fields/chips/index.ts +5 -5
  502. package/src/form/fields/chips/input-chip.ts +130 -142
  503. package/src/form/fields/chips/suggestion-chip.ts +69 -72
  504. package/src/form/fields/date-range/date-range-dialog.ts +154 -194
  505. package/src/form/fields/date-range/date-range-helpers.ts +63 -64
  506. package/src/form/fields/date-range/date-range.test.ts +575 -121
  507. package/src/form/fields/date-range/date-range.ts +343 -395
  508. package/src/form/fields/date-range/index.ts +2 -2
  509. package/src/form/fields/input/index.ts +8 -8
  510. package/src/form/fields/input/input.scss +30 -26
  511. package/src/form/fields/input/input.test.ts +4 -1
  512. package/src/form/fields/input/input.ts +4 -20
  513. package/src/form/fields/radio-group/index.ts +2 -2
  514. package/src/form/fields/radio-group/radio-button.ts +8 -8
  515. package/src/form/fields/radio-group/radio-group.ts +4 -1
  516. package/src/form/fields/range/range.ts +3 -1
  517. package/src/form/fields/select/index.ts +2 -2
  518. package/src/form/fields/select/select.ts +51 -45
  519. package/src/form/fields/switch/switch.ts +13 -7
  520. package/src/form/fields/textarea/index.ts +1 -1
  521. package/src/form/fields/textarea/textarea.ts +44 -49
  522. package/src/form/form-summary.ts +15 -14
  523. package/src/form/form.test.ts +0 -1
  524. package/src/form/form.ts +11 -23
  525. package/src/icons/icon.ts +25 -25
  526. package/src/icons/index.ts +1 -1
  527. package/src/iframe/iframe.ts +11 -9
  528. package/src/index.ts +1 -0
  529. package/src/json/json.ts +9 -2
  530. package/src/kbd/kbd.ts +30 -28
  531. package/src/layout/scroll/index.ts +1 -1
  532. package/src/layout/scroll/scroll.ts +54 -54
  533. package/src/lightbox/lightbox-service.ts +27 -18
  534. package/src/lightbox/lightbox.directive.ts +2 -1
  535. package/src/lightbox/lightbox.ts +21 -38
  536. package/src/list/index.ts +3 -3
  537. package/src/list/list-item.ts +32 -26
  538. package/src/list/list.ts +13 -8
  539. package/src/menu/index.ts +2 -2
  540. package/src/menu/menu-item.ts +7 -5
  541. package/src/menu/menu.ts +8 -6
  542. package/src/nav-drawer/appbar.ts +9 -7
  543. package/src/nav-drawer/content.ts +10 -8
  544. package/src/nav-drawer/drawer.ts +29 -25
  545. package/src/nav-drawer/index.ts +6 -6
  546. package/src/navigation-bar/index.ts +2 -2
  547. package/src/navigation-bar/navigation-bar-item.ts +127 -118
  548. package/src/navigation-bar/navigation-bar.ts +103 -91
  549. package/src/navigation-rail/index.ts +2 -2
  550. package/src/navigation-rail/navigation-rail.ts +21 -22
  551. package/src/notification/index.ts +6 -6
  552. package/src/notification/notification-service.ts +1 -2
  553. package/src/notification/notification.scss +5 -1
  554. package/src/notification/notification.ts +1 -3
  555. package/src/notification/notify.ts +204 -207
  556. package/src/option/index.ts +1 -1
  557. package/src/option/option.ts +26 -25
  558. package/src/overlay/overlay.animations.ts +4 -14
  559. package/src/overlay/overlay.component.ts +110 -131
  560. package/src/overlay/overlay.confirm-body.ts +26 -48
  561. package/src/overlay/overlay.gestures.ts +8 -10
  562. package/src/overlay/overlay.layout.ts +1 -4
  563. package/src/overlay/overlay.positioning.ts +4 -15
  564. package/src/overlay/overlay.service.ts +9 -24
  565. package/src/overlay/overlay.stack.test.ts +4 -1
  566. package/src/overlay/overlay.stack.ts +4 -4
  567. package/src/overlay/overlay.types.ts +11 -20
  568. package/src/progress/index.ts +1 -1
  569. package/src/progress/progress.ts +135 -133
  570. package/src/rxjs-utils/index.ts +6 -6
  571. package/src/rxjs-utils/waitForElement.ts +20 -20
  572. package/src/rxjs-utils/waitForElementAll.ts +21 -21
  573. package/src/rxjs-utils/waitForElements.ts +27 -27
  574. package/src/rxjs-utils/waitForElementsAll.ts +27 -29
  575. package/src/rxjs-utils/waitUntil.ts +7 -12
  576. package/src/skeleton/skeleton.ts +39 -33
  577. package/src/slider/index.ts +2 -2
  578. package/src/slider/slide.ts +14 -12
  579. package/src/slider/slider.ts +24 -22
  580. package/src/splash-screen/index.ts +1 -1
  581. package/src/splash-screen/splash-screen.ts +26 -27
  582. package/src/state/active-host.ts +4 -5
  583. package/src/state/index.ts +34 -53
  584. package/src/state/persist.ts +14 -11
  585. package/src/state/schmancy-context.ts +88 -88
  586. package/src/state/state.test-d.ts +3 -13
  587. package/src/state/state.test.ts +1 -4
  588. package/src/steps/index.ts +3 -3
  589. package/src/steps/schmancy-step.ts +41 -31
  590. package/src/steps/schmancy-steps.ts +7 -5
  591. package/src/surface/index.ts +1 -1
  592. package/src/surface/surface.styles.ts +53 -104
  593. package/src/surface/surface.ts +10 -8
  594. package/src/table/index.ts +2 -2
  595. package/src/table/row.ts +1 -4
  596. package/src/table/table.ts +2 -5
  597. package/src/tabs/index.ts +2 -2
  598. package/src/tabs/tabs-group.ts +8 -6
  599. package/src/teleport/index.ts +2 -2
  600. package/src/test-utils/a11y.ts +1 -3
  601. package/src/theme/index.ts +17 -17
  602. package/src/theme/theme-audio-player.ts +18 -16
  603. package/src/theme/theme-controller-boat.ts +1 -1
  604. package/src/theme/theme-controller.ts +36 -32
  605. package/src/theme/theme.component.ts +5 -9
  606. package/src/theme/theme.events.ts +1 -1
  607. package/src/theme/theme.format.ts +7 -7
  608. package/src/theme/theme.service.ts +453 -468
  609. package/src/theme/theme.style.css +78 -23
  610. package/src/theme-button/index.ts +1 -1
  611. package/src/tooltip/tooltip.directive.ts +1 -1
  612. package/src/tree/index.ts +1 -1
  613. package/src/tree/tree.ts +24 -16
  614. package/src/types/surface.ts +38 -44
  615. package/src/typewriter/typewriter.directive.ts +30 -39
  616. package/src/typography/typography.ts +289 -269
  617. package/src/utils/animation.ts +2 -8
  618. package/src/utils/index.ts +6 -6
  619. package/src/utils/number.ts +480 -517
  620. package/src/utils/overlay-stack.ts +1 -3
  621. package/src/utils/search.ts +5 -9
  622. package/src/visually-hidden/visually-hidden.ts +15 -13
  623. package/src/window/window-manager.ts +6 -1
  624. package/src/window/window-position.ts +7 -5
  625. package/src/window/window.ts +143 -108
  626. package/types/src/calendar/calendar.d.ts +108 -0
  627. package/types/src/calendar/calendar.test.d.ts +1 -0
  628. package/types/src/calendar/index.d.ts +2 -0
  629. package/types/src/directives/cursor-glow.d.ts +1 -1
  630. package/types/src/directives/hummingbird.d.ts +3 -3
  631. package/types/src/form/fields/date-range/date-range-dialog.d.ts +24 -28
  632. package/types/src/form/fields/date-range/date-range.d.ts +39 -66
  633. package/types/src/form/fields/date-range/date-range.test.d.ts +1 -0
  634. package/types/src/form/fields/date-range/index.d.ts +1 -1
  635. package/types/src/index.d.ts +1 -0
  636. package/types/src/surface/surface.styles.d.ts +13 -6
  637. package/types/src/types/surface.d.ts +17 -22
  638. package/types/src/utils/number.d.ts +1 -1
  639. package/dist/SchmancyElement-OG71FtNv.js +0 -286
  640. package/dist/SchmancyElement-OG71FtNv.js.map +0 -1
  641. package/dist/SchmancyElement-PS1u0j1B.cjs +0 -2
  642. package/dist/SchmancyElement-PS1u0j1B.cjs.map +0 -1
  643. package/dist/area-CaEI33G0.cjs +0 -21
  644. package/dist/area-CaEI33G0.cjs.map +0 -1
  645. package/dist/area-DtCNCb8w.js.map +0 -1
  646. package/dist/audio-B924fI5N.cjs.map +0 -1
  647. package/dist/audio-DdN76ikW.js.map +0 -1
  648. package/dist/autocomplete-Dq3BkitV.cjs +0 -115
  649. package/dist/autocomplete-Dq3BkitV.cjs.map +0 -1
  650. package/dist/autocomplete-UNOknYUz.js.map +0 -1
  651. package/dist/busy--WqiXKnl.cjs +0 -134
  652. package/dist/busy--WqiXKnl.cjs.map +0 -1
  653. package/dist/busy-DzXyO0z6.js +0 -173
  654. package/dist/busy-DzXyO0z6.js.map +0 -1
  655. package/dist/button-CTvS5YX4.cjs.map +0 -1
  656. package/dist/button-DgoDfcJx.js.map +0 -1
  657. package/dist/card-C6ijJZpF.js.map +0 -1
  658. package/dist/card-Ci3_9Dd4.cjs +0 -177
  659. package/dist/card-Ci3_9Dd4.cjs.map +0 -1
  660. package/dist/chips-9eG-96_D.cjs.map +0 -1
  661. package/dist/chips-DF7akwz7.js.map +0 -1
  662. package/dist/date-range-C13_R3OA.js +0 -966
  663. package/dist/date-range-C13_R3OA.js.map +0 -1
  664. package/dist/date-range-Q2xj5Syc.cjs +0 -142
  665. package/dist/date-range-Q2xj5Syc.cjs.map +0 -1
  666. package/dist/date-range-inline-BnOD-ddB.js.map +0 -1
  667. package/dist/date-range-inline-DV2c_gWM.cjs.map +0 -1
  668. package/dist/details-B2-jECBh.cjs.map +0 -1
  669. package/dist/details-ByF66CyY.js.map +0 -1
  670. package/dist/directives-BL7mzVsA.js.map +0 -1
  671. package/dist/directives-DCb_LA9R.cjs.map +0 -1
  672. package/dist/divider-Bv2QiOZL.cjs +0 -57
  673. package/dist/divider-Bv2QiOZL.cjs.map +0 -1
  674. package/dist/divider-gYuz0zDU.js +0 -89
  675. package/dist/divider-gYuz0zDU.js.map +0 -1
  676. package/dist/expand-B9IUGVtc.cjs +0 -141
  677. package/dist/expand-B9IUGVtc.cjs.map +0 -1
  678. package/dist/expand-cZ8rfCWP.js.map +0 -1
  679. package/dist/form-DowzVsgI.cjs.map +0 -1
  680. package/dist/form-tG7LwDm4.js.map +0 -1
  681. package/dist/icons-BZeCloP9.cjs +0 -24
  682. package/dist/icons-BZeCloP9.cjs.map +0 -1
  683. package/dist/icons-Dup5skuk.js.map +0 -1
  684. package/dist/iframe-CDJjnNmo.cjs.map +0 -1
  685. package/dist/iframe-Xc3EPMZT.js.map +0 -1
  686. package/dist/input-DnmC6J1T.cjs.map +0 -1
  687. package/dist/input-cTyDxW9L.js.map +0 -1
  688. package/dist/input-chip-CV91URyU.cjs +0 -146
  689. package/dist/input-chip-CV91URyU.cjs.map +0 -1
  690. package/dist/input-chip-CYI17YOq.js.map +0 -1
  691. package/dist/layout-CNlZSJFU.cjs.map +0 -1
  692. package/dist/layout-DDxw0EwL.js.map +0 -1
  693. package/dist/lightbox-CH-y3rYB.js.map +0 -1
  694. package/dist/lightbox-CvtqoInF.cjs.map +0 -1
  695. package/dist/list-Dl8KfxrF.cjs +0 -40
  696. package/dist/list-Dl8KfxrF.cjs.map +0 -1
  697. package/dist/list-DrsawQ5R.js.map +0 -1
  698. package/dist/menu-BFRcTe3o.cjs.map +0 -1
  699. package/dist/menu-CsY5lMqY.js.map +0 -1
  700. package/dist/mixins-BoMURWag.cjs.map +0 -1
  701. package/dist/mixins-bCEXbwJV.js.map +0 -1
  702. package/dist/notification-DFKRMmSq.js.map +0 -1
  703. package/dist/notification-FBf3Mb2e.cjs.map +0 -1
  704. package/dist/option-Ct0lGdH3.js.map +0 -1
  705. package/dist/option-Il1KpU8M.cjs +0 -43
  706. package/dist/option-Il1KpU8M.cjs.map +0 -1
  707. package/dist/overlay-Bh8Q_R01.js.map +0 -1
  708. package/dist/overlay-sRXiMkjn.cjs.map +0 -1
  709. package/dist/overlay.confirm-body-CQihsR20.js.map +0 -1
  710. package/dist/overlay.confirm-body-Jc1EuMGs.cjs.map +0 -1
  711. package/dist/overlay.service-9Dp3g7ot.cjs.map +0 -1
  712. package/dist/overlay.service-BXPgS7ay.js.map +0 -1
  713. package/dist/progress-CWC5XYZ_.cjs +0 -51
  714. package/dist/progress-CWC5XYZ_.cjs.map +0 -1
  715. package/dist/progress-CYLshdo2.js.map +0 -1
  716. package/dist/radio-group-6kCgOgBL.cjs.map +0 -1
  717. package/dist/radio-group-bZtZHOj_.js.map +0 -1
  718. package/dist/select-CU3X-PIa.js.map +0 -1
  719. package/dist/select-MXsF8KsU.cjs +0 -56
  720. package/dist/select-MXsF8KsU.cjs.map +0 -1
  721. package/dist/sound.service-B4ZmXpH9.js.map +0 -1
  722. package/dist/sound.service-DjlMvicQ.cjs.map +0 -1
  723. package/dist/splash-screen-CN9dZcqC.cjs +0 -41
  724. package/dist/splash-screen-CN9dZcqC.cjs.map +0 -1
  725. package/dist/splash-screen-emCLYoVl.js.map +0 -1
  726. package/dist/src-DGDTkOvC.js.map +0 -1
  727. package/dist/src-DK3111z_.cjs +0 -240
  728. package/dist/src-DK3111z_.cjs.map +0 -1
  729. package/dist/state-CumAEPQH.cjs.map +0 -1
  730. package/dist/state-DMd_FUeA.js.map +0 -1
  731. package/dist/surface-DGI-FBoi.cjs +0 -7
  732. package/dist/surface-DGI-FBoi.cjs.map +0 -1
  733. package/dist/tabs-4T_4kCf-.js.map +0 -1
  734. package/dist/tabs-Byxxt-AH.cjs.map +0 -1
  735. package/dist/textarea-BwYwH9fu.cjs.map +0 -1
  736. package/dist/textarea-kkYNk1ET.js.map +0 -1
  737. package/dist/theme.service-Dv_55nfE.js.map +0 -1
  738. package/dist/theme.service-pjkTM209.cjs.map +0 -1
  739. package/dist/typography-BVkU11_q.js +0 -358
  740. package/dist/typography-BVkU11_q.js.map +0 -1
  741. package/dist/typography-aaQaIcNc.cjs +0 -282
  742. package/dist/typography-aaQaIcNc.cjs.map +0 -1
  743. package/dist/utils-DTa3QHxk.cjs.map +0 -1
  744. package/dist/utils-H8wNknWC.js.map +0 -1
  745. package/dist/window-C76zstbV.js.map +0 -1
  746. package/dist/window-CmB9XZzT.cjs +0 -58
  747. package/dist/window-CmB9XZzT.cjs.map +0 -1
  748. package/src/form/fields/date-range/date-range-presets.ts +0 -220
  749. package/src/form/fields/date-range/date-utils.ts +0 -58
  750. package/types/src/form/fields/date-range/date-range-presets.d.ts +0 -18
  751. package/types/src/form/fields/date-range/date-utils.d.ts +0 -15
  752. /package/dist/{hashContent-iRZJJWtE.cjs → hashContent--s09Ed_g.cjs} +0 -0
  753. /package/dist/{hashContent-BqU6v1Xr.js → hashContent-CAvrQ56N.js} +0 -0
  754. /package/dist/{rxjs-utils-Csnks202.cjs → rxjs-utils-4P2v57ke.cjs} +0 -0
  755. /package/dist/{rxjs-utils-d-ivVN84.js → rxjs-utils-JMFdgQSl.js} +0 -0
  756. /package/dist/{theme.interface-CSt7JUBD.cjs → theme.interface-B-qxDsZQ.cjs} +0 -0
  757. /package/dist/{theme.interface-odQEpZZH.js → theme.interface-B7caS5cg.js} +0 -0
  758. /package/dist/{utils-DTa3QHxk.cjs → utils-DIXndz6Q.cjs} +0 -0
  759. /package/dist/{utils-H8wNknWC.js → utils-dSPH7Oh9.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.js","names":[],"sources":["../src/dropdown/dropdown-component.ts","../src/dropdown/dropdown-content.ts"],"sourcesContent":["import { autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom'\nimport { SchmancyElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { filter, fromEvent, takeUntil, Subscription } from 'rxjs'\n\n/**\n * A dropdown component that displays content when triggered.\n *\n * @element schmancy-dropdown\n * @slot trigger - The element that triggers the dropdown\n * @slot - Default slot for the dropdown content\n */\n@customElement('schmancy-dropdown')\nexport class SchmancyDropdown extends SchmancyElement {\n\t/**\n\t * Whether the dropdown is currently open\n\t */\n\t@property({ type: Boolean, reflect: true })\n\topen = false\n\n\t/**\n\t * Placement of the dropdown relative to the trigger\n\t */\n\t@property({ type: String })\n\tplacement:\n\t\t| 'top'\n\t\t| 'top-start'\n\t\t| 'top-end'\n\t\t| 'right'\n\t\t| 'right-start'\n\t\t| 'right-end'\n\t\t| 'bottom'\n\t\t| 'bottom-start'\n\t\t| 'bottom-end'\n\t\t| 'left'\n\t\t| 'left-start'\n\t\t| 'left-end' = 'bottom-start'\n\n\t/**\n\t * Offset distance in pixels\n\t */\n\t@property({ type: Number })\n\tdistance = 8\n\n\t@query('.trigger-container') triggerContainer!: HTMLElement\n\t@query('.dropdown-content-container') contentContainer!: HTMLElement\n\t@queryAssignedElements({ flatten: true }) contentElements!: HTMLElement[]\n\t@state() private portal: HTMLElement | null = null\n\n\t@queryAssignedElements({ slot: 'trigger', flatten: true })\n\ttriggerElements!: Array<HTMLElement>\n\n\tprivate cleanupPositioner?: () => void\n\tprivate portalSubscriptions: Subscription[] = []\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Create portal container for teleporting content to document body\n\t\tthis.setupPortal()\n\n\t\t// Listen for document clicks to close dropdown when clicking outside\n\t\tfromEvent<MouseEvent>(document, 'click')\n\t\t\t.pipe(\n\t\t\t\tfilter(event => this.open && !this.isEventFromSelf(event)),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.open = false\n\t\t\t})\n\n\t\t// Listen for escape key to close dropdown\n\t\tfromEvent<KeyboardEvent>(document, 'keydown')\n\t\t\t.pipe(\n\t\t\t\tfilter(event => this.open && event.key === 'Escape'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.open = false\n\t\t\t})\n\t}\n\n\t/**\n\t * Set up the portal element for teleporting content\n\t */\n\tprivate setupPortal() {\n\t\t// Check if portal container exists\n\t\tlet portalContainer = document.getElementById('schmancy-portal-container')\n\n\t\t// Create portal container if it doesn't exist\n\t\tif (!portalContainer) {\n\t\t\tportalContainer = document.createElement('div')\n\t\t\tportalContainer.id = 'schmancy-portal-container'\n\t\t\tportalContainer.style.position = 'fixed'\n\t\t\tportalContainer.style.zIndex = '10000'\n\t\t\tportalContainer.style.top = '0'\n\t\t\tportalContainer.style.left = '0'\n\t\t\tportalContainer.style.pointerEvents = 'none'\n\t\t\tdocument.body.appendChild(portalContainer)\n\t\t}\n\n\t\t// Create portal for this specific dropdown\n\t\tconst portal = document.createElement('div')\n\t\tportal.className = 'schmancy-dropdown-portal'\n\t\tportal.style.position = 'absolute'\n\t\tportal.style.pointerEvents = 'auto'\n\t\tportal.style.display = 'none'\n\t\tportalContainer.appendChild(portal)\n\n\t\tthis.portal = portal\n\t}\n\n\t/**\n\t * Check if an event originated from within this component\n\t */\n\tprivate isEventFromSelf(event: Event): boolean {\n\t\treturn event.composedPath().some(el => el === this)\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.cleanupPositioner?.()\n\n\t\t// Clean up portal subscriptions\n\t\tthis.portalSubscriptions.forEach(subscription => subscription.unsubscribe())\n\t\tthis.portalSubscriptions = []\n\n\t\t// Remove portal when component is disconnected\n\t\tif (this.portal) {\n\t\t\tthis.portal.remove()\n\t\t\tthis.portal = null\n\t\t}\n\n\t\tsuper.disconnectedCallback()\n\t}\n\n\t/**\n\t * Toggle the dropdown open state\n\t */\n\ttoggle() {\n\t\tthis.open = !this.open\n\t}\n\n\tupdated(changedProps: Map<string, unknown>) {\n\t\tsuper.updated(changedProps)\n\n\t\tif (changedProps.has('open')) {\n\t\t\tif (this.open) {\n\t\t\t\tthis.setupPositioner()\n\t\t\t} else {\n\t\t\t\tthis.cleanupPositioner?.()\n\n\t\t\t\t// Hide portal when dropdown is closed\n\t\t\t\tif (this.portal) {\n\t\t\t\t\tthis.portal.style.display = 'none'\n\t\t\t\t\tthis.portal.innerHTML = ''\n\t\t\t\t\t// Clean up subscriptions when content is cleared\n\t\t\t\t\tthis.portalSubscriptions.forEach(subscription => subscription.unsubscribe())\n\t\t\t\t\tthis.portalSubscriptions = []\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Setup floating UI positioning with teleportation\n\t */\n\tprivate setupPositioner() {\n\t\tif (!this.triggerContainer || !this.portal) return\n\n\t\t// Show the portal\n\t\tthis.portal.style.display = 'block'\n\n\t\t// Move content to portal\n\t\tthis.teleportContentToPortal()\n\n\t\t// Setup positioning\n\t\tthis.cleanupPositioner = autoUpdate(this.triggerContainer, this.portal, () => {\n\t\t\tcomputePosition(this.triggerContainer, this.portal, {\n\t\t\t\tplacement: this.placement,\n\t\t\t\tmiddleware: [\n\t\t\t\t\toffset(this.distance),\n\t\t\t\t\tflip({\n\t\t\t\t\t\tfallbackPlacements: ['top-start', 'bottom-start'],\n\t\t\t\t\t}),\n\t\t\t\t\tshift({ padding: 0 }),\n\t\t\t\t],\n\t\t\t}).then(({ x, y }) => {\n\t\t\t\t// Update portal position\n\t\t\t\tObject.assign(this.portal.style, {\n\t\t\t\t\tleft: `${x}px`,\n\t\t\t\t\ttop: `${y - 8}px`,\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t})\n\t\t})\n\t}\n\n\t/**\n\t * Move slotted content to the portal\n\t */\n\tprivate teleportContentToPortal() {\n\t\tif (!this.portal) return\n\n\t\t// Clean up existing subscriptions\n\t\tthis.portalSubscriptions.forEach(subscription => subscription.unsubscribe())\n\t\tthis.portalSubscriptions = []\n\n\t\t// Clear existing content\n\t\tthis.portal.innerHTML = ''\n\n\t\t// Clone and move slotted content to portal\n\t\tthis.contentElements.forEach(element => {\n\t\t\t// Get computed styles to ensure portal content matches original styling\n\t\t\tconst clonedElement = element.cloneNode(true) as HTMLElement\n\n\t\t\t// Ensure dropdown-content elements maintain their styles when teleported\n\t\t\tif (element.tagName.toLowerCase() === 'schmancy-dropdown-content') {\n\t\t\t\tconst subscription = fromEvent(clonedElement, 'slotchange').subscribe(() => {\n\t\t\t\t\t// Propagate any slot changes to class changes on children\n\t\t\t\t\tconst contentDiv = clonedElement.shadowRoot?.querySelector('[part=\"content\"]')\n\t\t\t\t\tif (contentDiv) {\n\t\t\t\t\t\tcontentDiv.classList.add('schmancy-dropdown-content')\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tthis.portalSubscriptions.push(subscription)\n\t\t\t}\n\n\t\t\tthis.portal?.appendChild(clonedElement)\n\t\t})\n\t}\n\n\t/**\n\t * Handle trigger click to toggle dropdown\n\t */\n\tprivate handleTriggerClick(e: Event) {\n\t\te.stopPropagation()\n\t\tthis.toggle()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"trigger-container\" @click=${this.handleTriggerClick}>\n\t\t\t\t<slot name=\"trigger\"></slot>\n\t\t\t</div>\n\n\t\t\t<div class=\"dropdown-content-container\" ?hidden=${!this.open}>\n\t\t\t\t<slot\n\t\t\t\t\t@slotchange=${() => {\n\t\t\t\t\t\tif (this.open) {\n\t\t\t\t\t\t\tthis.teleportContentToPortal()\n\t\t\t\t\t\t\tthis.setupPositioner()\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t></slot>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-dropdown': SchmancyDropdown\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n/**\n * Content container for the schmancy-dropdown component.\n *\n * @element schmancy-dropdown-content\n * @slot - Default slot for dropdown content.\n * @csspart content - The inner wrapper element; style to override panel\n * backgrounds, shadows, padding, or borders without shadow-root piercing.\n */\n@customElement('schmancy-dropdown-content')\nexport class SchmancyDropdownContent extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\tz-index: 1000;\n\t\tmin-width: 10rem;\n\t\tmargin: 0;\n\t\ttext-align: left;\n\t\tlist-style: none;\n\t\tbackground-color: var(--schmancy-sys-color-surface-container);\n\t\tbackground-clip: padding-box;\n\t\tborder-radius: 0.375rem;\n\t\tbox-shadow: var(--schmancy-sys-elevation-3);\n\t\twill-change: transform;\n\t\ttransform-origin: top left;\n\t\tanimation: dropdownAnimation 0.1s ease-out forwards;\n\t}\n\n\t:host([hidden]) {\n\t\tdisplay: none;\n\t}\n\n\t@keyframes dropdownAnimation {\n\t\tfrom {\n\t\t\topacity: 0;\n\t\t\ttransform: scale(0.95);\n\t\t}\n\t\tto {\n\t\t\topacity: 1;\n\t\t\ttransform: scale(1);\n\t\t}\n\t}\n\n\t/* Apply styles to content both in the component and when teleported to the portal */\n\t.schmancy-dropdown-content {\n\t\tbackground-color: var(--schmancy-sys-color-surface-container);\n\t\tborder-radius: 0.375rem;\n\t\tbox-shadow: var(--schmancy-sys-elevation-3);\n\t\twill-change: transform;\n\t\ttransform-origin: top left;\n\t\tanimation: dropdownAnimation 0.1s ease-out forwards;\n\t}\n`];\n\t/**\n\t * Width of the dropdown content\n\t */\n\t@property({ type: String })\n\twidth: string = 'auto'\n\n\t/**\n\t * Maximum height of the dropdown content\n\t */\n\t@property({ type: String })\n\tmaxHeight: string = '80vh'\n\n\t/**\n\t * Whether to render with a shadow\n\t */\n\t@property({ type: Boolean })\n\tshadow: boolean = true\n\n\t/**\n\t * Border radius style\n\t */\n\t@property({ type: String })\n\tradius: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'md'\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'schmancy-dropdown-content': true,\n\t\t\t'overflow-auto': true,\n\t\t\t'shadow-none': !this.shadow,\n\t\t\t'rounded-none': this.radius === 'none',\n\t\t\t'rounded-sm': this.radius === 'sm',\n\t\t\t'rounded-md': this.radius === 'md',\n\t\t\t'rounded-lg': this.radius === 'lg',\n\t\t\t'rounded-full': this.radius === 'full',\n\t\t}\n\n\t\tconst styles = {\n\t\t\twidth: this.width,\n\t\t\tmaxHeight: this.maxHeight,\n\t\t}\n\n\t\treturn html`\n\t\t\t<div class=${this.classMap(classes)} style=${this.styleMap(styles)} part=\"content\">\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-dropdown-content': SchmancyDropdownContent\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"dropdown.js","names":[],"sources":["../src/dropdown/dropdown-component.ts","../src/dropdown/dropdown-content.ts"],"sourcesContent":["import { autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom'\nimport { SchmancyElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { filter, fromEvent, takeUntil, Subscription } from 'rxjs'\n\n/**\n * A dropdown component that displays content when triggered.\n *\n * @element schmancy-dropdown\n * @slot trigger - The element that triggers the dropdown\n * @slot - Default slot for the dropdown content\n */\n@customElement('schmancy-dropdown')\nexport class SchmancyDropdown extends SchmancyElement {\n\t/**\n\t * Whether the dropdown is currently open\n\t */\n\t@property({ type: Boolean, reflect: true })\n\topen = false\n\n\t/**\n\t * Placement of the dropdown relative to the trigger\n\t */\n\t@property({ type: String })\n\tplacement:\n\t\t| 'top'\n\t\t| 'top-start'\n\t\t| 'top-end'\n\t\t| 'right'\n\t\t| 'right-start'\n\t\t| 'right-end'\n\t\t| 'bottom'\n\t\t| 'bottom-start'\n\t\t| 'bottom-end'\n\t\t| 'left'\n\t\t| 'left-start'\n\t\t| 'left-end' = 'bottom-start'\n\n\t/**\n\t * Offset distance in pixels\n\t */\n\t@property({ type: Number })\n\tdistance = 8\n\n\t@query('.trigger-container') triggerContainer!: HTMLElement\n\t@query('.dropdown-content-container') contentContainer!: HTMLElement\n\t@queryAssignedElements({ flatten: true }) contentElements!: HTMLElement[]\n\t@state() private portal: HTMLElement | null = null\n\n\t@queryAssignedElements({ slot: 'trigger', flatten: true })\n\ttriggerElements!: Array<HTMLElement>\n\n\tprivate cleanupPositioner?: () => void\n\tprivate portalSubscriptions: Subscription[] = []\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Create portal container for teleporting content to document body\n\t\tthis.setupPortal()\n\n\t\t// Listen for document clicks to close dropdown when clicking outside\n\t\tfromEvent<MouseEvent>(document, 'click')\n\t\t\t.pipe(\n\t\t\t\tfilter(event => this.open && !this.isEventFromSelf(event)),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.open = false\n\t\t\t})\n\n\t\t// Listen for escape key to close dropdown\n\t\tfromEvent<KeyboardEvent>(document, 'keydown')\n\t\t\t.pipe(\n\t\t\t\tfilter(event => this.open && event.key === 'Escape'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.open = false\n\t\t\t})\n\t}\n\n\t/**\n\t * Set up the portal element for teleporting content\n\t */\n\tprivate setupPortal() {\n\t\t// Check if portal container exists\n\t\tlet portalContainer = document.getElementById('schmancy-portal-container')\n\n\t\t// Create portal container if it doesn't exist\n\t\tif (!portalContainer) {\n\t\t\tportalContainer = document.createElement('div')\n\t\t\tportalContainer.id = 'schmancy-portal-container'\n\t\t\tportalContainer.style.position = 'fixed'\n\t\t\tportalContainer.style.zIndex = '10000'\n\t\t\tportalContainer.style.top = '0'\n\t\t\tportalContainer.style.left = '0'\n\t\t\tportalContainer.style.pointerEvents = 'none'\n\t\t\tdocument.body.appendChild(portalContainer)\n\t\t}\n\n\t\t// Create portal for this specific dropdown\n\t\tconst portal = document.createElement('div')\n\t\tportal.className = 'schmancy-dropdown-portal'\n\t\tportal.style.position = 'absolute'\n\t\tportal.style.pointerEvents = 'auto'\n\t\tportal.style.display = 'none'\n\t\tportalContainer.appendChild(portal)\n\n\t\tthis.portal = portal\n\t}\n\n\t/**\n\t * Check if an event originated from within this component\n\t */\n\tprivate isEventFromSelf(event: Event): boolean {\n\t\treturn event.composedPath().some(el => el === this)\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.cleanupPositioner?.()\n\n\t\t// Clean up portal subscriptions\n\t\tthis.portalSubscriptions.forEach(subscription => subscription.unsubscribe())\n\t\tthis.portalSubscriptions = []\n\n\t\t// Remove portal when component is disconnected\n\t\tif (this.portal) {\n\t\t\tthis.portal.remove()\n\t\t\tthis.portal = null\n\t\t}\n\n\t\tsuper.disconnectedCallback()\n\t}\n\n\t/**\n\t * Toggle the dropdown open state\n\t */\n\ttoggle() {\n\t\tthis.open = !this.open\n\t}\n\n\tupdated(changedProps: Map<string, unknown>) {\n\t\tsuper.updated(changedProps)\n\n\t\tif (changedProps.has('open')) {\n\t\t\tif (this.open) {\n\t\t\t\tthis.setupPositioner()\n\t\t\t} else {\n\t\t\t\tthis.cleanupPositioner?.()\n\n\t\t\t\t// Hide portal when dropdown is closed\n\t\t\t\tif (this.portal) {\n\t\t\t\t\tthis.portal.style.display = 'none'\n\t\t\t\t\tthis.portal.innerHTML = ''\n\t\t\t\t\t// Clean up subscriptions when content is cleared\n\t\t\t\t\tthis.portalSubscriptions.forEach(subscription => subscription.unsubscribe())\n\t\t\t\t\tthis.portalSubscriptions = []\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Setup floating UI positioning with teleportation\n\t */\n\tprivate setupPositioner() {\n\t\tif (!this.triggerContainer || !this.portal) return\n\n\t\t// Show the portal\n\t\tthis.portal.style.display = 'block'\n\n\t\t// Move content to portal\n\t\tthis.teleportContentToPortal()\n\n\t\t// Setup positioning\n\t\tthis.cleanupPositioner = autoUpdate(this.triggerContainer, this.portal, () => {\n\t\t\tcomputePosition(this.triggerContainer, this.portal, {\n\t\t\t\tplacement: this.placement,\n\t\t\t\tmiddleware: [\n\t\t\t\t\toffset(this.distance),\n\t\t\t\t\tflip({\n\t\t\t\t\t\tfallbackPlacements: ['top-start', 'bottom-start'],\n\t\t\t\t\t}),\n\t\t\t\t\tshift({ padding: 0 }),\n\t\t\t\t],\n\t\t\t}).then(({ x, y }) => {\n\t\t\t\t// Update portal position\n\t\t\t\tObject.assign(this.portal.style, {\n\t\t\t\t\tleft: `${x}px`,\n\t\t\t\t\ttop: `${y - 8}px`,\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t})\n\t\t})\n\t}\n\n\t/**\n\t * Move slotted content to the portal\n\t */\n\tprivate teleportContentToPortal() {\n\t\tif (!this.portal) return\n\n\t\t// Clean up existing subscriptions\n\t\tthis.portalSubscriptions.forEach(subscription => subscription.unsubscribe())\n\t\tthis.portalSubscriptions = []\n\n\t\t// Clear existing content\n\t\tthis.portal.innerHTML = ''\n\n\t\t// Clone and move slotted content to portal\n\t\tthis.contentElements.forEach(element => {\n\t\t\t// Get computed styles to ensure portal content matches original styling\n\t\t\tconst clonedElement = element.cloneNode(true) as HTMLElement\n\n\t\t\t// Ensure dropdown-content elements maintain their styles when teleported\n\t\t\tif (element.tagName.toLowerCase() === 'schmancy-dropdown-content') {\n\t\t\t\tconst subscription = fromEvent(clonedElement, 'slotchange').subscribe(() => {\n\t\t\t\t\t// Propagate any slot changes to class changes on children\n\t\t\t\t\tconst contentDiv = clonedElement.shadowRoot?.querySelector('[part=\"content\"]')\n\t\t\t\t\tif (contentDiv) {\n\t\t\t\t\t\tcontentDiv.classList.add('schmancy-dropdown-content')\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tthis.portalSubscriptions.push(subscription)\n\t\t\t}\n\n\t\t\tthis.portal?.appendChild(clonedElement)\n\t\t})\n\t}\n\n\t/**\n\t * Handle trigger click to toggle dropdown\n\t */\n\tprivate handleTriggerClick(e: Event) {\n\t\te.stopPropagation()\n\t\tthis.toggle()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"trigger-container\" @click=${this.handleTriggerClick}>\n\t\t\t\t<slot name=\"trigger\"></slot>\n\t\t\t</div>\n\n\t\t\t<div class=\"dropdown-content-container\" ?hidden=${!this.open}>\n\t\t\t\t<slot\n\t\t\t\t\t@slotchange=${() => {\n\t\t\t\t\t\tif (this.open) {\n\t\t\t\t\t\t\tthis.teleportContentToPortal()\n\t\t\t\t\t\t\tthis.setupPositioner()\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t></slot>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-dropdown': SchmancyDropdown\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n/**\n * Content container for the schmancy-dropdown component.\n *\n * @element schmancy-dropdown-content\n * @slot - Default slot for dropdown content.\n * @csspart content - The inner wrapper element; style to override panel\n * backgrounds, shadows, padding, or borders without shadow-root piercing.\n */\n@customElement('schmancy-dropdown-content')\nexport class SchmancyDropdownContent extends SchmancyElement {\n\tstatic styles = [\n\t\tcss`\n\t\t\t:host {\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\tz-index: 1000;\n\t\t\t\tmin-width: 10rem;\n\t\t\t\tmargin: 0;\n\t\t\t\ttext-align: left;\n\t\t\t\tlist-style: none;\n\t\t\t\tbackground-color: var(--schmancy-sys-color-surface-container);\n\t\t\t\tbackground-clip: padding-box;\n\t\t\t\tborder-radius: 0.375rem;\n\t\t\t\tbox-shadow: var(--schmancy-sys-elevation-3);\n\t\t\t\twill-change: transform;\n\t\t\t\ttransform-origin: top left;\n\t\t\t\tanimation: dropdownAnimation 0.1s ease-out forwards;\n\t\t\t}\n\n\t\t\t:host([hidden]) {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\t@keyframes dropdownAnimation {\n\t\t\t\tfrom {\n\t\t\t\t\topacity: 0;\n\t\t\t\t\ttransform: scale(0.95);\n\t\t\t\t}\n\t\t\t\tto {\n\t\t\t\t\topacity: 1;\n\t\t\t\t\ttransform: scale(1);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/* Apply styles to content both in the component and when teleported to the portal */\n\t\t\t.schmancy-dropdown-content {\n\t\t\t\tbackground-color: var(--schmancy-sys-color-surface-container);\n\t\t\t\tborder-radius: 0.375rem;\n\t\t\t\tbox-shadow: var(--schmancy-sys-elevation-3);\n\t\t\t\twill-change: transform;\n\t\t\t\ttransform-origin: top left;\n\t\t\t\tanimation: dropdownAnimation 0.1s ease-out forwards;\n\t\t\t}\n\t\t`,\n\t]\n\t/**\n\t * Width of the dropdown content\n\t */\n\t@property({ type: String })\n\twidth: string = 'auto'\n\n\t/**\n\t * Maximum height of the dropdown content\n\t */\n\t@property({ type: String })\n\tmaxHeight: string = '80vh'\n\n\t/**\n\t * Whether to render with a shadow\n\t */\n\t@property({ type: Boolean })\n\tshadow: boolean = true\n\n\t/**\n\t * Border radius style\n\t */\n\t@property({ type: String })\n\tradius: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'md'\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'schmancy-dropdown-content': true,\n\t\t\t'overflow-auto': true,\n\t\t\t'shadow-none': !this.shadow,\n\t\t\t'rounded-none': this.radius === 'none',\n\t\t\t'rounded-sm': this.radius === 'sm',\n\t\t\t'rounded-md': this.radius === 'md',\n\t\t\t'rounded-lg': this.radius === 'lg',\n\t\t\t'rounded-full': this.radius === 'full',\n\t\t}\n\n\t\tconst styles = {\n\t\t\twidth: this.width,\n\t\t\tmaxHeight: this.maxHeight,\n\t\t}\n\n\t\treturn html`\n\t\t\t<div class=${this.classMap(classes)} style=${this.styleMap(styles)} part=\"content\">\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-dropdown-content': SchmancyDropdownContent\n\t}\n}\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { t as e, u as t } from "./SchmancyElement-OG71FtNv.js";
2
- import { t as n } from "./mixins-bCEXbwJV.js";
1
+ import { t as e, u as t } from "./SchmancyElement-Ob9yGkiG.js";
2
+ import { t as n } from "./mixins-q4KAL8Xr.js";
3
3
  import { d as r, f as i } from "./animation-DCznELuT.js";
4
4
  import { t as a } from "./reduced-motion-D-L12p7G.js";
5
- import "./surface-DNiYigsX.js";
5
+ import "./surface-DXk1X1tL.js";
6
6
  import { filter as o, fromEvent as s, lastValueFrom as c } from "rxjs";
7
7
  import { takeUntil as l, tap as u } from "rxjs/operators";
8
8
  import { styleMap as d } from "lit/directives/style-map.js";
@@ -11,47 +11,49 @@ import { css as h, html as g, nothing as _ } from "lit";
11
11
  import { createRef as v, ref as y } from "lit/directives/ref.js";
12
12
  var b = class extends n(e) {
13
13
  constructor(...e) {
14
- super(...e), this.type = "solid", this.isOpen = !1, this.summaryRect = null, this.panelRef = v(), this.backdropRef = v(), this.btnRef = v(), this.owner = null, this.hideIndicator = !1, this.backdrop = !0;
14
+ super(...e), this.type = "containerLowest", this.isOpen = !1, this.summaryRect = null, this.panelRef = v(), this.backdropRef = v(), this.btnRef = v(), this.owner = null, this.hideIndicator = !1, this.backdrop = !0;
15
15
  }
16
16
  static {
17
17
  this.styles = [h`
18
- :host {
19
- display: contents;
20
- }
18
+ :host {
19
+ display: contents;
20
+ }
21
21
 
22
- .portal-panel {
23
- position: fixed;
24
- transform-origin: top left;
25
- will-change: clip-path, opacity;
26
- border-radius: 1rem;
27
- box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.5);
28
- z-index: 9999;
29
- }
22
+ .portal-panel {
23
+ position: fixed;
24
+ transform-origin: top left;
25
+ will-change: clip-path, opacity;
26
+ border-radius: 1rem;
27
+ box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.5);
28
+ z-index: 9999;
29
+ }
30
30
 
31
- .minimize-btn {
32
- position: absolute;
33
- top: 0.5rem;
34
- right: 0.5rem;
35
- z-index: 1;
36
- display: flex;
37
- align-items: center;
38
- justify-content: center;
39
- width: 2rem;
40
- height: 2rem;
41
- border-radius: 9999px;
42
- border: none;
43
- background: transparent;
44
- cursor: pointer;
45
- opacity: 0.5;
46
- transition: opacity 150ms, background 150ms;
47
- color: inherit;
48
- }
31
+ .minimize-btn {
32
+ position: absolute;
33
+ top: 0.5rem;
34
+ right: 0.5rem;
35
+ z-index: 1;
36
+ display: flex;
37
+ align-items: center;
38
+ justify-content: center;
39
+ width: 2rem;
40
+ height: 2rem;
41
+ border-radius: 9999px;
42
+ border: none;
43
+ background: transparent;
44
+ cursor: pointer;
45
+ opacity: 0.5;
46
+ transition:
47
+ opacity 150ms,
48
+ background 150ms;
49
+ color: inherit;
50
+ }
49
51
 
50
- .minimize-btn:hover {
51
- opacity: 1;
52
- background: rgb(0 0 0 / 0.08);
53
- }
54
- `];
52
+ .minimize-btn:hover {
53
+ opacity: 1;
54
+ background: rgb(0 0 0 / 0.08);
55
+ }
56
+ `];
55
57
  }
56
58
  prepare(e, t, n = !1, r = !0) {
57
59
  this.summaryRect = e, this.owner = t, this.hideIndicator = n, this.backdrop = r;
@@ -150,30 +152,31 @@ var b = class extends n(e) {
150
152
  render() {
151
153
  return this.isOpen ? g`
152
154
  ${this.backdrop ? g`
153
- <div
154
- ${y(this.backdropRef)}
155
- class="fixed inset-0 z-9998 backdrop-blur-sm backdrop-saturate-150 backdrop-brightness-105 bg-black/[0.07] will-change-[opacity]"
156
- @click=${() => this.owner?.close?.()}
157
- ></div>
158
- ` : _}
159
- <schmancy-surface
160
- ${y(this.panelRef)}
161
- class="portal-panel"
162
- type=${this.type}
163
- style="overflow-y: auto;"
164
- >
155
+ <div
156
+ ${y(this.backdropRef)}
157
+ class="fixed inset-0 z-9998 backdrop-blur-sm backdrop-saturate-150 backdrop-brightness-105 bg-black/[0.07] will-change-[opacity]"
158
+ @click=${() => this.owner?.close?.()}
159
+ ></div>
160
+ ` : _}
161
+ <schmancy-surface ${y(this.panelRef)} class="portal-panel" type=${this.type} style="overflow-y: auto;">
165
162
  ${this.hideIndicator ? _ : g`
166
- <button
167
- ${y(this.btnRef)}
168
- class="minimize-btn"
169
- aria-label="Minimize"
170
- @click=${() => this.owner?.close?.()}
171
- >
172
- <svg width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true">
173
- <path d="M19 9L12 16L5 9" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
174
- </svg>
175
- </button>
176
- `}
163
+ <button
164
+ ${y(this.btnRef)}
165
+ class="minimize-btn"
166
+ aria-label="Minimize"
167
+ @click=${() => this.owner?.close?.()}
168
+ >
169
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true">
170
+ <path
171
+ d="M19 9L12 16L5 9"
172
+ stroke="currentColor"
173
+ stroke-width="2"
174
+ stroke-linecap="round"
175
+ stroke-linejoin="round"
176
+ />
177
+ </svg>
178
+ </button>
179
+ `}
177
180
  <slot></slot>
178
181
  </schmancy-surface>
179
182
  ` : _;
@@ -186,38 +189,39 @@ var x = "schmancy-expand-request-close", S = class extends e {
186
189
  }
187
190
  static {
188
191
  this.styles = [h`
189
- :host {
190
- display: block;
191
- }
192
+ :host {
193
+ display: block;
194
+ }
192
195
 
193
- summary::-webkit-details-marker {
194
- display: none;
195
- }
196
+ summary::-webkit-details-marker {
197
+ display: none;
198
+ }
196
199
 
197
- summary {
198
- list-style: none;
199
- color: inherit;
200
- }
200
+ summary {
201
+ list-style: none;
202
+ color: inherit;
203
+ }
201
204
 
202
- .inline-grid {
203
- display: grid;
204
- grid-template-rows: 0fr;
205
- overflow: hidden;
206
- transition: grid-template-rows 300ms cubic-bezier(0.22, 1.25, 0.36, 1),
207
- opacity 300ms cubic-bezier(0.22, 1.25, 0.36, 1);
208
- opacity: 0;
209
- }
205
+ .inline-grid {
206
+ display: grid;
207
+ grid-template-rows: 0fr;
208
+ overflow: hidden;
209
+ transition:
210
+ grid-template-rows 300ms cubic-bezier(0.22, 1.25, 0.36, 1),
211
+ opacity 300ms cubic-bezier(0.22, 1.25, 0.36, 1);
212
+ opacity: 0;
213
+ }
210
214
 
211
- .inline-grid[data-open] {
212
- grid-template-rows: 1fr;
213
- opacity: 1;
214
- }
215
+ .inline-grid[data-open] {
216
+ grid-template-rows: 1fr;
217
+ opacity: 1;
218
+ }
215
219
 
216
- .inline-grid > .inner {
217
- min-height: 0;
218
- overflow: hidden;
219
- }
220
- `];
220
+ .inline-grid > .inner {
221
+ min-height: 0;
222
+ overflow: hidden;
223
+ }
224
+ `];
221
225
  }
222
226
  connectedCallback() {
223
227
  super.connectedCallback(), s(window, "keydown").pipe(o((e) => e.key === "Escape"), o(() => this.open), u(() => {
@@ -293,7 +297,9 @@ var x = "schmancy-expand-request-close", S = class extends e {
293
297
  }}
294
298
  >
295
299
  ${this.hideIndicator ? _ : g`
296
- <span class="indicator flex items-center justify-center w-5 h-5 rounded-full shrink-0 opacity-70 group-hover:opacity-100 will-change-transform">
300
+ <span
301
+ class="indicator flex items-center justify-center w-5 h-5 rounded-full shrink-0 opacity-70 group-hover:opacity-100 will-change-transform"
302
+ >
297
303
  <svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true">
298
304
  <path
299
305
  d="M9 6L15 12L9 18"
@@ -314,16 +320,16 @@ var x = "schmancy-expand-request-close", S = class extends e {
314
320
  </div>
315
321
 
316
322
  ${this.inline ? g`
317
- <div class="inline-grid" ?data-open=${this.open}>
318
- <div class="inner">
323
+ <div class="inline-grid" ?data-open=${this.open}>
324
+ <div class="inner">
325
+ <slot ${y(this.contentSlotRef)}></slot>
326
+ </div>
327
+ </div>
328
+ ` : g`
329
+ <div style=${d(this.open ? {} : { display: "none" })}>
319
330
  <slot ${y(this.contentSlotRef)}></slot>
320
331
  </div>
321
- </div>
322
- ` : g`
323
- <div style=${d(this.open ? {} : { display: "none" })}>
324
- <slot ${y(this.contentSlotRef)}></slot>
325
- </div>
326
- `}
332
+ `}
327
333
  </div>
328
334
  `;
329
335
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expand-BT8mOu8Q.js","names":[],"sources":["../src/expand/expand-root.component.ts","../src/expand/expand.component.ts"],"sourcesContent":["import { css, html, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { SchmancyElement, SurfaceMixin } from '@mixins/index'\nimport type { TSurfaceColor } from '@schmancy/types'\nimport { SPRING_SMOOTH } from '../utils/animation.js'\nimport { reducedMotion$ } from '../directives/reduced-motion'\nimport '../surface/surface.js'\n\n@customElement('schmancy-expand-root')\nexport class SchmancyExpandRoot extends SurfaceMixin(SchmancyElement) {\n\tstatic styles = [\n\t\tcss`\n\t\t\t:host {\n\t\t\t\tdisplay: contents;\n\t\t\t}\n\n\t\t\t.portal-panel {\n\t\t\t\tposition: fixed;\n\t\t\t\ttransform-origin: top left;\n\t\t\t\twill-change: clip-path, opacity;\n\t\t\t\tborder-radius: 1rem;\n\t\t\t\tbox-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.5);\n\t\t\t\tz-index: 9999;\n\t\t\t}\n\n\t\t\t.minimize-btn {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 0.5rem;\n\t\t\t\tright: 0.5rem;\n\t\t\t\tz-index: 1;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\twidth: 2rem;\n\t\t\t\theight: 2rem;\n\t\t\t\tborder-radius: 9999px;\n\t\t\t\tborder: none;\n\t\t\t\tbackground: transparent;\n\t\t\t\tcursor: pointer;\n\t\t\t\topacity: 0.5;\n\t\t\t\ttransition:\n\t\t\t\t\topacity 150ms,\n\t\t\t\t\tbackground 150ms;\n\t\t\t\tcolor: inherit;\n\t\t\t}\n\n\t\t\t.minimize-btn:hover {\n\t\t\t\topacity: 1;\n\t\t\t\tbackground: rgb(0 0 0 / 0.08);\n\t\t\t}\n\t\t`,\n\t]\n\t@property({ reflect: true }) override type: TSurfaceColor = 'containerLowest'\n\t@state() isOpen = false\n\tprivate summaryRect: DOMRect | null = null\n\n\tprivate panelRef = createRef<HTMLElement>()\n\tprivate backdropRef = createRef<HTMLDivElement>()\n\tprivate btnRef = createRef<HTMLButtonElement>()\n\tprivate owner: (Element & { close?: () => void }) | null = null\n\tprivate hideIndicator = false\n\tprivate backdrop = true\n\n\t/** Called by schmancy-expand before nodes are moved */\n\tprepare(rect: DOMRect, owner: Element, hideIndicator = false, backdrop = true) {\n\t\tthis.summaryRect = rect\n\t\tthis.owner = owner as Element & { close?: () => void }\n\t\tthis.hideIndicator = hideIndicator\n\t\tthis.backdrop = backdrop\n\t}\n\n\t/** Called by schmancy-expand after nodes are moved in */\n\tasync triggerOpen() {\n\t\tthis.isOpen = true\n\t\tawait this.updateComplete\n\n\t\tconst panel = this.panelRef.value\n\t\tif (!panel) return\n\n\t\tconst src = this.summaryRect!\n\n\t\t// 1. Anchor at summary's top-left, measure natural content size\n\t\t// Use nearly full viewport height for measurement so content near the bottom\n\t\t// of the screen isn't artificially capped — the positioning step will move the panel up.\n\t\tObject.assign(panel.style, {\n\t\t\tvisibility: 'hidden',\n\t\t\ttop: `${src.top}px`,\n\t\t\tleft: `${src.left}px`,\n\t\t\tminWidth: `${src.width}px`,\n\t\t\twidth: 'max-content',\n\t\t\tmaxWidth: `${window.innerWidth - src.left}px`,\n\t\t\theight: 'auto',\n\t\t\tmaxHeight: `${window.innerHeight - 32}px`,\n\t\t\toverflowY: 'auto',\n\t\t})\n\n\t\tconst measured = panel.getBoundingClientRect()\n\t\tconst finalW = measured.width\n\t\tconst finalH = measured.height\n\n\t\t// 2. Adjust position so panel stays within viewport\n\t\tlet finalTop = src.top\n\t\tlet finalLeft = src.left\n\t\tif (finalTop + finalH > window.innerHeight) {\n\t\t\tfinalTop = Math.max(0, src.bottom - finalH)\n\t\t}\n\t\tif (finalLeft + finalW > window.innerWidth) {\n\t\t\tfinalLeft = Math.max(0, window.innerWidth - finalW)\n\t\t}\n\n\t\t// 3. Compute clip-path insets — summary rect expressed relative to panel final position\n\t\t// These insets shrink the visible area down to exactly the summary box\n\t\tconst insetTop = Math.max(0, src.top - finalTop)\n\t\tconst insetLeft = Math.max(0, src.left - finalLeft)\n\t\tconst insetRight = Math.max(0, finalLeft + finalW - (src.left + src.width))\n\t\tconst insetBottom = Math.max(0, finalTop + finalH - (src.top + src.height))\n\n\t\t// 4. Place panel at final size + position, masked to summary bounds (no flash)\n\t\tObject.assign(panel.style, {\n\t\t\tvisibility: '',\n\t\t\ttop: `${finalTop}px`,\n\t\t\tleft: `${finalLeft}px`,\n\t\t\tminWidth: `${src.width}px`,\n\t\t\twidth: `${finalW}px`,\n\t\t\theight: `${finalH}px`,\n\t\t\tmaxWidth: '',\n\t\t\tmaxHeight: '',\n\t\t\tclipPath: `inset(${insetTop}px ${insetRight}px ${insetBottom}px ${insetLeft}px round 0.5rem)`,\n\t\t})\n\n\t\t// 5. Animate the mask open — content revealed, not stretched\n\t\tthis.animateOpen(insetTop, insetRight, insetBottom, insetLeft, finalTop)\n\t}\n\n\t/** Animate close, return Promise resolving when done */\n\tasync triggerClose(targetRect: DOMRect): Promise<void> {\n\t\tawait this.animateClose(targetRect)\n\t\tthis.isOpen = false\n\t\tthis.summaryRect = null\n\t}\n\n\tprivate animateOpen(insetTop: number, insetRight: number, insetBottom: number, insetLeft: number, finalTop: number) {\n\t\tconst panel = this.panelRef.value\n\t\tif (!panel) return\n\n\t\tif (reducedMotion$.value) {\n\t\t\tpanel.style.clipPath = ''\n\t\t\treturn\n\t\t}\n\n\t\tconst backdrop = this.backdropRef.value\n\t\tif (backdrop) {\n\t\t\tbackdrop.animate([{ opacity: 0 }, { opacity: 1 }], {\n\t\t\t\tduration: SPRING_SMOOTH.duration,\n\t\t\t\teasing: SPRING_SMOOTH.easingFallback,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t}\n\n\t\tconst keyframes: Keyframe[] = [\n\t\t\t{\n\t\t\t\tclipPath: `inset(${insetTop}px ${insetRight}px ${insetBottom}px ${insetLeft}px round 0.5rem)`,\n\t\t\t\topacity: 0.9,\n\t\t\t},\n\t\t\t{\n\t\t\t\tclipPath: 'inset(0px 0px 0px 0px round 1rem)',\n\t\t\t\topacity: 1,\n\t\t\t},\n\t\t]\n\n\t\tconst anim = panel.animate(keyframes, {\n\t\t\tduration: SPRING_SMOOTH.duration,\n\t\t\teasing: SPRING_SMOOTH.easingFallback,\n\t\t\tfill: 'forwards',\n\t\t})\n\n\t\t// Clear clip-path and fixed dimensions after animation so content can grow naturally,\n\t\t// but cap at viewport height so overflow-y: auto can scroll\n\t\tanim.finished.then(() => {\n\t\t\tif (panel.isConnected) {\n\t\t\t\tpanel.style.clipPath = ''\n\t\t\t\tpanel.style.height = 'auto'\n\t\t\t\tpanel.style.maxHeight = `${window.innerHeight - finalTop - 16}px`\n\t\t\t}\n\t\t\treturn\n\t\t})\n\n\t\tconst btn = this.btnRef.value\n\t\tif (btn) {\n\t\t\tbtn.animate([{ transform: 'rotate(0deg)' }, { transform: 'rotate(180deg)' }], {\n\t\t\t\tduration: SPRING_SMOOTH.duration,\n\t\t\t\teasing: SPRING_SMOOTH.easingFallback,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate animateClose(targetRect: DOMRect): Promise<void> {\n\t\tconst panel = this.panelRef.value\n\t\tif (!panel) return Promise.resolve()\n\t\tif (reducedMotion$.value) return Promise.resolve()\n\n\t\t// Compute insets to mask panel back down to the summary box\n\t\tconst panelRect = panel.getBoundingClientRect()\n\t\tconst insetTop = Math.max(0, targetRect.top - panelRect.top)\n\t\tconst insetLeft = Math.max(0, targetRect.left - panelRect.left)\n\t\tconst insetRight = Math.max(0, panelRect.right - targetRect.right)\n\t\tconst insetBottom = Math.max(0, panelRect.bottom - targetRect.bottom)\n\n\t\tconst closeDuration = Math.round(SPRING_SMOOTH.duration * 0.4)\n\t\tconst closeEasing = 'cubic-bezier(0.4, 0, 1, 1)'\n\n\t\tconst closeKeyframes: Keyframe[] = [\n\t\t\t{ clipPath: 'inset(0px 0px 0px 0px round 1rem)', opacity: 1 },\n\t\t\t{\n\t\t\t\tclipPath: `inset(${insetTop}px ${insetRight}px ${insetBottom}px ${insetLeft}px round 0.5rem)`,\n\t\t\t\topacity: 0.6,\n\t\t\t},\n\t\t]\n\n\t\tconst anim = panel.animate(closeKeyframes, { duration: closeDuration, easing: closeEasing, fill: 'forwards' })\n\n\t\tconst backdrop = this.backdropRef.value\n\t\tif (backdrop) {\n\t\t\tbackdrop.animate([{ opacity: 1 }, { opacity: 0 }], {\n\t\t\t\tduration: closeDuration,\n\t\t\t\teasing: closeEasing,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t}\n\n\t\tconst btn = this.btnRef.value\n\t\tif (btn) {\n\t\t\tbtn.animate([{ transform: 'rotate(180deg)' }, { transform: 'rotate(0deg)' }], {\n\t\t\t\tduration: closeDuration,\n\t\t\t\teasing: closeEasing,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t}\n\n\t\treturn anim.finished as unknown as Promise<void>\n\t}\n\n\trender() {\n\t\tif (!this.isOpen) return nothing\n\n\t\treturn html`\n\t\t\t${this.backdrop\n\t\t\t\t? html`\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t${ref(this.backdropRef)}\n\t\t\t\t\t\t\tclass=\"fixed inset-0 z-9998 backdrop-blur-sm backdrop-saturate-150 backdrop-brightness-105 bg-black/[0.07] will-change-[opacity]\"\n\t\t\t\t\t\t\t@click=${() => this.owner?.close?.()}\n\t\t\t\t\t\t></div>\n\t\t\t\t\t`\n\t\t\t\t: nothing}\n\t\t\t<schmancy-surface ${ref(this.panelRef)} class=\"portal-panel\" type=${this.type} style=\"overflow-y: auto;\">\n\t\t\t\t${!this.hideIndicator\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t${ref(this.btnRef)}\n\t\t\t\t\t\t\t\tclass=\"minimize-btn\"\n\t\t\t\t\t\t\t\taria-label=\"Minimize\"\n\t\t\t\t\t\t\t\t@click=${() => this.owner?.close?.()}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\td=\"M19 9L12 16L5 9\"\n\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t: nothing}\n\t\t\t\t<slot></slot>\n\t\t\t</schmancy-surface>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-expand-root': SchmancyExpandRoot\n\t}\n}\n","import { css, html, nothing } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { styleMap } from 'lit/directives/style-map.js'\nimport { filter, fromEvent, lastValueFrom } from 'rxjs'\nimport { tap, takeUntil } from 'rxjs/operators'\nimport { SchmancyElement } from '@mixins/index'\nimport { SPRING_SNAPPY } from '../utils/animation.js'\nimport { reducedMotion$ } from '../directives/reduced-motion'\nimport { SchmancyExpandRoot } from './expand-root.component.js'\n\n/** Dispatch this event on window to close whichever schmancy-expand is currently open */\nexport const SCHMANCY_EXPAND_REQUEST_CLOSE = 'schmancy-expand-request-close'\n\n@customElement('schmancy-expand')\nexport default class SchmancyExpand extends SchmancyElement {\n\tstatic styles = [\n\t\tcss`\n\t\t\t:host {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\tsummary::-webkit-details-marker {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\tsummary {\n\t\t\t\tlist-style: none;\n\t\t\t\tcolor: inherit;\n\t\t\t}\n\n\t\t\t.inline-grid {\n\t\t\t\tdisplay: grid;\n\t\t\t\tgrid-template-rows: 0fr;\n\t\t\t\toverflow: hidden;\n\t\t\t\ttransition:\n\t\t\t\t\tgrid-template-rows 300ms cubic-bezier(0.22, 1.25, 0.36, 1),\n\t\t\t\t\topacity 300ms cubic-bezier(0.22, 1.25, 0.36, 1);\n\t\t\t\topacity: 0;\n\t\t\t}\n\n\t\t\t.inline-grid[data-open] {\n\t\t\t\tgrid-template-rows: 1fr;\n\t\t\t\topacity: 1;\n\t\t\t}\n\n\t\t\t.inline-grid > .inner {\n\t\t\t\tmin-height: 0;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t`,\n\t]\n\t@property() summary = ''\n\n\t@property({ type: Boolean, reflect: true }) open = false\n\n\t@property({ attribute: 'summary-padding' }) summaryPadding = ''\n\n\t@property({ attribute: 'content-padding' }) contentPadding = ''\n\n\t@property({ type: Boolean, attribute: 'hide-indicator' }) hideIndicator = false\n\n\t@property({ type: Number, attribute: 'indicator-rotate' }) indicatorRotate = 90\n\n\t@property({ type: Boolean }) backdrop = true\n\n\t@property({ type: Boolean }) inline = false\n\n\tprivate summaryRef = createRef<HTMLElement>()\n\tprivate contentSlotRef = createRef<HTMLSlotElement>()\n\tprivate root: SchmancyExpandRoot | null = null\n\tprivate movedNodes: Element[] = []\n\tprivate currentIndicatorAnim: Animation | undefined\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Close on Escape key\n\t\tfromEvent<KeyboardEvent>(window, 'keydown')\n\t\t\t.pipe(\n\t\t\t\tfilter(e => e.key === 'Escape'),\n\t\t\t\tfilter(() => this.open),\n\t\t\t\ttap(() => void this.handleClose()),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\n\t\t// Close on click outside the portal panel\n\t\tfromEvent<PointerEvent>(document, 'pointerdown')\n\t\t\t.pipe(\n\t\t\t\tfilter(() => this.open),\n\t\t\t\tfilter(e => !!this.root && !e.composedPath().includes(this.root)),\n\t\t\t\ttap(() => void this.handleClose()),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tif (this.movedNodes.length > 0) {\n\t\t\tthis.movedNodes.forEach(n => this.appendChild(n))\n\t\t\tthis.movedNodes = []\n\t\t}\n\t\tif (this.root && this.root.children.length === 0) {\n\t\t\tthis.root.remove()\n\t\t\tthis.root = null\n\t\t}\n\t}\n\n\tprivate async getOrCreateRoot(): Promise<SchmancyExpandRoot> {\n\t\tconst theme = await lastValueFrom(this.discover<HTMLElement>('schmancy-theme'))\n\t\tconst container: HTMLElement = theme ?? document.querySelector('schmancy-theme') ?? document.body\n\t\tlet root = container.querySelector('schmancy-expand-root') as SchmancyExpandRoot | null\n\t\tif (!root) {\n\t\t\troot = new SchmancyExpandRoot()\n\t\t\tcontainer.appendChild(root)\n\t\t}\n\t\treturn root\n\t}\n\n\t/** Close the expand portal, animating back to the summary position. */\n\tpublic close(): void {\n\t\tvoid this.handleClose()\n\t}\n\n\t/** Programmatically open the expand portal. */\n\tpublic expand(): void {\n\t\tif (this.open) return\n\t\tvoid this.expandPortal()\n\t}\n\n\tprotected override updated(changed: Map<PropertyKey, unknown>) {\n\t\tsuper.updated(changed)\n\t\tif (changed.has('open') && this.open && !this.inline && !this.root) {\n\t\t\tvoid this.expandPortal()\n\t\t}\n\t}\n\n\tprivate toggle() {\n\t\tif (this.inline) {\n\t\t\tthis.open = !this.open\n\t\t\tthis.animateIndicator(this.open)\n\t\t} else if (!this.open) {\n\t\t\tvoid this.expandPortal()\n\t\t}\n\t}\n\n\tprivate handleSummaryClick(e: MouseEvent) {\n\t\te.preventDefault()\n\t\tthis.toggle()\n\t}\n\n\tprivate async expandPortal() {\n\t\tif (this.inline) {\n\t\t\tthis.open = true\n\t\t\tthis.animateIndicator(true)\n\t\t\treturn\n\t\t}\n\n\t\tconst root = await this.getOrCreateRoot()\n\t\tthis.root = root\n\t\tconst summary = this.summaryRef.value\n\t\tconst contentSlot = this.contentSlotRef.value\n\t\tif (!summary || !contentSlot) return\n\n\t\tconst summaryRect = summary.getBoundingClientRect()\n\t\tconst nodes = contentSlot.assignedElements({ flatten: true })\n\t\tif (nodes.length === 0) return\n\n\t\troot.prepare(summaryRect, this, this.hideIndicator, this.backdrop)\n\n\t\tthis.movedNodes = [...nodes]\n\t\tthis.movedNodes.forEach(n => root.appendChild(n))\n\n\t\troot.triggerOpen()\n\n\t\tthis.animateIndicator(true)\n\t\tthis.open = true\n\t}\n\n\tasync handleClose() {\n\t\tif (this.inline) {\n\t\t\tthis.animateIndicator(false)\n\t\t\tthis.open = false\n\t\t\treturn\n\t\t}\n\n\t\tconst root = this.root\n\t\tconst summary = this.summaryRef.value\n\t\tif (!root || !summary) return\n\n\t\tconst summaryRect = summary.getBoundingClientRect()\n\t\tthis.animateIndicator(false)\n\n\t\tawait root.triggerClose(summaryRect)\n\n\t\tthis.movedNodes.forEach(n => this.appendChild(n))\n\t\tthis.movedNodes = []\n\t\tthis.open = false\n\t}\n\n\tprivate animateIndicator(isOpen: boolean) {\n\t\tif (reducedMotion$.value) return\n\n\t\tconst indicator = this.shadowRoot?.querySelector('.indicator') as HTMLElement | null\n\t\tif (!indicator) return\n\n\t\tthis.currentIndicatorAnim?.cancel()\n\t\tthis.currentIndicatorAnim = indicator.animate(\n\t\t\t[\n\t\t\t\t{ transform: `rotate(${isOpen ? '0deg' : `${this.indicatorRotate}deg`})` },\n\t\t\t\t{ transform: `rotate(${isOpen ? `${this.indicatorRotate}deg` : '0deg'})` },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: SPRING_SNAPPY.duration,\n\t\t\t\teasing: SPRING_SNAPPY.easingFallback,\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t)\n\t}\n\n\trender() {\n\t\tconst summaryClasses = this.classMap({\n\t\t\t[this.summaryPadding]: true,\n\t\t\t'select-none relative flex items-center gap-2 rounded-xl transition-all duration-150': true,\n\t\t\t'hover:brightness-[0.92] active:brightness-[0.85] cursor-pointer group': true,\n\t\t\t'flex-row-reverse': true,\n\t\t})\n\n\t\treturn html`\n\t\t\t<div class=\"w-full rounded-xl\">\n\t\t\t\t<div\n\t\t\t\t\t${ref(this.summaryRef)}\n\t\t\t\t\tclass=${summaryClasses}\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\trole=\"button\"\n\t\t\t\t\t@click=${this.handleSummaryClick}\n\t\t\t\t\t@keydown=${(e: KeyboardEvent) => {\n\t\t\t\t\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\tthis.toggle()\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t${!this.hideIndicator\n\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclass=\"indicator flex items-center justify-center w-5 h-5 rounded-full shrink-0 opacity-70 group-hover:opacity-100 will-change-transform\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\td=\"M9 6L15 12L9 18\"\n\t\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t: nothing}\n\n\t\t\t\t\t<span class=\"flex-1 font-medium text-base min-w-0\">\n\t\t\t\t\t\t<slot name=\"summary\">${this.summary}</slot>\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<slot name=\"actions\"></slot>\n\t\t\t\t</div>\n\n\t\t\t\t${this.inline\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<div class=\"inline-grid\" ?data-open=${this.open}>\n\t\t\t\t\t\t\t\t<div class=\"inner\">\n\t\t\t\t\t\t\t\t\t<slot ${ref(this.contentSlotRef)}></slot>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`\n\t\t\t\t\t: html`\n\t\t\t\t\t\t\t<div style=${styleMap(this.open ? {} : { display: 'none' })}>\n\t\t\t\t\t\t\t\t<slot ${ref(this.contentSlotRef)}></slot>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`}\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-expand': SchmancyExpand\n\t}\n}\n"],"mappings":"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"}
@@ -0,0 +1,147 @@
1
+ require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-CeKrBW2j.cjs`),t=require(`./mixins-Cjn20BQH.cjs`),n=require(`./animation-CCOIW4wJ.cjs`),r=require(`./reduced-motion-Ds-HjMzn.cjs`);require(`./surface-COBvWWFb.cjs`);let i=require(`rxjs`),a=require(`rxjs/operators`),o=require(`lit/directives/style-map.js`),s=require(`lit/decorators.js`),c=require(`lit`),l=require(`lit/directives/ref.js`);var u=class extends t.t(e.t){constructor(...e){super(...e),this.type=`containerLowest`,this.isOpen=!1,this.summaryRect=null,this.panelRef=(0,l.createRef)(),this.backdropRef=(0,l.createRef)(),this.btnRef=(0,l.createRef)(),this.owner=null,this.hideIndicator=!1,this.backdrop=!0}static{this.styles=[c.css`
2
+ :host {
3
+ display: contents;
4
+ }
5
+
6
+ .portal-panel {
7
+ position: fixed;
8
+ transform-origin: top left;
9
+ will-change: clip-path, opacity;
10
+ border-radius: 1rem;
11
+ box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.5);
12
+ z-index: 9999;
13
+ }
14
+
15
+ .minimize-btn {
16
+ position: absolute;
17
+ top: 0.5rem;
18
+ right: 0.5rem;
19
+ z-index: 1;
20
+ display: flex;
21
+ align-items: center;
22
+ justify-content: center;
23
+ width: 2rem;
24
+ height: 2rem;
25
+ border-radius: 9999px;
26
+ border: none;
27
+ background: transparent;
28
+ cursor: pointer;
29
+ opacity: 0.5;
30
+ transition:
31
+ opacity 150ms,
32
+ background 150ms;
33
+ color: inherit;
34
+ }
35
+
36
+ .minimize-btn:hover {
37
+ opacity: 1;
38
+ background: rgb(0 0 0 / 0.08);
39
+ }
40
+ `]}prepare(e,t,n=!1,r=!0){this.summaryRect=e,this.owner=t,this.hideIndicator=n,this.backdrop=r}async triggerOpen(){this.isOpen=!0,await this.updateComplete;let e=this.panelRef.value;if(!e)return;let t=this.summaryRect;Object.assign(e.style,{visibility:`hidden`,top:`${t.top}px`,left:`${t.left}px`,minWidth:`${t.width}px`,width:`max-content`,maxWidth:window.innerWidth-t.left+`px`,height:`auto`,maxHeight:window.innerHeight-32+`px`,overflowY:`auto`});let n=e.getBoundingClientRect(),r=n.width,i=n.height,a=t.top,o=t.left;a+i>window.innerHeight&&(a=Math.max(0,t.bottom-i)),o+r>window.innerWidth&&(o=Math.max(0,window.innerWidth-r));let s=Math.max(0,t.top-a),c=Math.max(0,t.left-o),l=Math.max(0,o+r-(t.left+t.width)),u=Math.max(0,a+i-(t.top+t.height));Object.assign(e.style,{visibility:``,top:`${a}px`,left:`${o}px`,minWidth:`${t.width}px`,width:`${r}px`,height:`${i}px`,maxWidth:``,maxHeight:``,clipPath:`inset(${s}px ${l}px ${u}px ${c}px round 0.5rem)`}),this.animateOpen(s,l,u,c,a)}async triggerClose(e){await this.animateClose(e),this.isOpen=!1,this.summaryRect=null}animateOpen(e,t,i,a,o){let s=this.panelRef.value;if(!s)return;if(r.t.value)return void(s.style.clipPath=``);let c=this.backdropRef.value;c&&c.animate([{opacity:0},{opacity:1}],{duration:n.d.duration,easing:n.d.easingFallback,fill:`forwards`});let l=[{clipPath:`inset(${e}px ${t}px ${i}px ${a}px round 0.5rem)`,opacity:.9},{clipPath:`inset(0px 0px 0px 0px round 1rem)`,opacity:1}];s.animate(l,{duration:n.d.duration,easing:n.d.easingFallback,fill:`forwards`}).finished.then(()=>{s.isConnected&&(s.style.clipPath=``,s.style.height=`auto`,s.style.maxHeight=window.innerHeight-o-16+`px`)});let u=this.btnRef.value;u&&u.animate([{transform:`rotate(0deg)`},{transform:`rotate(180deg)`}],{duration:n.d.duration,easing:n.d.easingFallback,fill:`forwards`})}animateClose(e){let t=this.panelRef.value;if(!t||r.t.value)return Promise.resolve();let i=t.getBoundingClientRect(),a=Math.max(0,e.top-i.top),o=Math.max(0,e.left-i.left),s=Math.max(0,i.right-e.right),c=Math.max(0,i.bottom-e.bottom),l=Math.round(.4*n.d.duration),u=`cubic-bezier(0.4, 0, 1, 1)`,d=[{clipPath:`inset(0px 0px 0px 0px round 1rem)`,opacity:1},{clipPath:`inset(${a}px ${s}px ${c}px ${o}px round 0.5rem)`,opacity:.6}],f=t.animate(d,{duration:l,easing:u,fill:`forwards`}),p=this.backdropRef.value;p&&p.animate([{opacity:1},{opacity:0}],{duration:l,easing:u,fill:`forwards`});let m=this.btnRef.value;return m&&m.animate([{transform:`rotate(180deg)`},{transform:`rotate(0deg)`}],{duration:l,easing:u,fill:`forwards`}),f.finished}render(){return this.isOpen?c.html`
41
+ ${this.backdrop?c.html`
42
+ <div
43
+ ${(0,l.ref)(this.backdropRef)}
44
+ class="fixed inset-0 z-9998 backdrop-blur-sm backdrop-saturate-150 backdrop-brightness-105 bg-black/[0.07] will-change-[opacity]"
45
+ @click=${()=>this.owner?.close?.()}
46
+ ></div>
47
+ `:c.nothing}
48
+ <schmancy-surface ${(0,l.ref)(this.panelRef)} class="portal-panel" type=${this.type} style="overflow-y: auto;">
49
+ ${this.hideIndicator?c.nothing:c.html`
50
+ <button
51
+ ${(0,l.ref)(this.btnRef)}
52
+ class="minimize-btn"
53
+ aria-label="Minimize"
54
+ @click=${()=>this.owner?.close?.()}
55
+ >
56
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true">
57
+ <path
58
+ d="M19 9L12 16L5 9"
59
+ stroke="currentColor"
60
+ stroke-width="2"
61
+ stroke-linecap="round"
62
+ stroke-linejoin="round"
63
+ />
64
+ </svg>
65
+ </button>
66
+ `}
67
+ <slot></slot>
68
+ </schmancy-surface>
69
+ `:c.nothing}};e.u([(0,s.property)({reflect:!0})],u.prototype,`type`,void 0),e.u([(0,s.state)()],u.prototype,`isOpen`,void 0),u=e.u([(0,s.customElement)(`schmancy-expand-root`)],u);var d=class extends e.t{constructor(...e){super(...e),this.summary=``,this.open=!1,this.summaryPadding=``,this.contentPadding=``,this.hideIndicator=!1,this.indicatorRotate=90,this.backdrop=!0,this.inline=!1,this.summaryRef=(0,l.createRef)(),this.contentSlotRef=(0,l.createRef)(),this.root=null,this.movedNodes=[]}static{this.styles=[c.css`
70
+ :host {
71
+ display: block;
72
+ }
73
+
74
+ summary::-webkit-details-marker {
75
+ display: none;
76
+ }
77
+
78
+ summary {
79
+ list-style: none;
80
+ color: inherit;
81
+ }
82
+
83
+ .inline-grid {
84
+ display: grid;
85
+ grid-template-rows: 0fr;
86
+ overflow: hidden;
87
+ transition:
88
+ grid-template-rows 300ms cubic-bezier(0.22, 1.25, 0.36, 1),
89
+ opacity 300ms cubic-bezier(0.22, 1.25, 0.36, 1);
90
+ opacity: 0;
91
+ }
92
+
93
+ .inline-grid[data-open] {
94
+ grid-template-rows: 1fr;
95
+ opacity: 1;
96
+ }
97
+
98
+ .inline-grid > .inner {
99
+ min-height: 0;
100
+ overflow: hidden;
101
+ }
102
+ `]}connectedCallback(){super.connectedCallback(),(0,i.fromEvent)(window,`keydown`).pipe((0,i.filter)(e=>e.key===`Escape`),(0,i.filter)(()=>this.open),(0,a.tap)(()=>{this.handleClose()}),(0,a.takeUntil)(this.disconnecting)).subscribe(),(0,i.fromEvent)(document,`pointerdown`).pipe((0,i.filter)(()=>this.open),(0,i.filter)(e=>!!this.root&&!e.composedPath().includes(this.root)),(0,a.tap)(()=>{this.handleClose()}),(0,a.takeUntil)(this.disconnecting)).subscribe()}disconnectedCallback(){super.disconnectedCallback(),this.movedNodes.length>0&&(this.movedNodes.forEach(e=>this.appendChild(e)),this.movedNodes=[]),this.root&&this.root.children.length===0&&(this.root.remove(),this.root=null)}async getOrCreateRoot(){let e=await(0,i.lastValueFrom)(this.discover(`schmancy-theme`))??document.querySelector(`schmancy-theme`)??document.body,t=e.querySelector(`schmancy-expand-root`);return t||(t=new u,e.appendChild(t)),t}close(){this.handleClose()}expand(){this.open||this.expandPortal()}updated(e){super.updated(e),e.has(`open`)&&this.open&&!this.inline&&!this.root&&this.expandPortal()}toggle(){this.inline?(this.open=!this.open,this.animateIndicator(this.open)):this.open||this.expandPortal()}handleSummaryClick(e){e.preventDefault(),this.toggle()}async expandPortal(){if(this.inline)return this.open=!0,void this.animateIndicator(!0);let e=await this.getOrCreateRoot();this.root=e;let t=this.summaryRef.value,n=this.contentSlotRef.value;if(!t||!n)return;let r=t.getBoundingClientRect(),i=n.assignedElements({flatten:!0});i.length!==0&&(e.prepare(r,this,this.hideIndicator,this.backdrop),this.movedNodes=[...i],this.movedNodes.forEach(t=>e.appendChild(t)),e.triggerOpen(),this.animateIndicator(!0),this.open=!0)}async handleClose(){if(this.inline)return this.animateIndicator(!1),void(this.open=!1);let e=this.root,t=this.summaryRef.value;if(!e||!t)return;let n=t.getBoundingClientRect();this.animateIndicator(!1),await e.triggerClose(n),this.movedNodes.forEach(e=>this.appendChild(e)),this.movedNodes=[],this.open=!1}animateIndicator(e){if(r.t.value)return;let t=this.shadowRoot?.querySelector(`.indicator`);t&&(this.currentIndicatorAnim?.cancel(),this.currentIndicatorAnim=t.animate([{transform:`rotate(${e?`0deg`:`${this.indicatorRotate}deg`})`},{transform:`rotate(${e?`${this.indicatorRotate}deg`:`0deg`})`}],{duration:n.f.duration,easing:n.f.easingFallback,fill:`forwards`}))}render(){let e=this.classMap({[this.summaryPadding]:!0,"select-none relative flex items-center gap-2 rounded-xl transition-all duration-150":!0,"hover:brightness-[0.92] active:brightness-[0.85] cursor-pointer group":!0,"flex-row-reverse":!0});return c.html`
103
+ <div class="w-full rounded-xl">
104
+ <div
105
+ ${(0,l.ref)(this.summaryRef)}
106
+ class=${e}
107
+ tabindex="0"
108
+ role="button"
109
+ @click=${this.handleSummaryClick}
110
+ @keydown=${e=>{e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),this.toggle())}}
111
+ >
112
+ ${this.hideIndicator?c.nothing:c.html`
113
+ <span
114
+ class="indicator flex items-center justify-center w-5 h-5 rounded-full shrink-0 opacity-70 group-hover:opacity-100 will-change-transform"
115
+ >
116
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true">
117
+ <path
118
+ d="M9 6L15 12L9 18"
119
+ stroke="currentColor"
120
+ stroke-width="2"
121
+ stroke-linecap="round"
122
+ stroke-linejoin="round"
123
+ />
124
+ </svg>
125
+ </span>
126
+ `}
127
+
128
+ <span class="flex-1 font-medium text-base min-w-0">
129
+ <slot name="summary">${this.summary}</slot>
130
+ </span>
131
+
132
+ <slot name="actions"></slot>
133
+ </div>
134
+
135
+ ${this.inline?c.html`
136
+ <div class="inline-grid" ?data-open=${this.open}>
137
+ <div class="inner">
138
+ <slot ${(0,l.ref)(this.contentSlotRef)}></slot>
139
+ </div>
140
+ </div>
141
+ `:c.html`
142
+ <div style=${(0,o.styleMap)(this.open?{}:{display:`none`})}>
143
+ <slot ${(0,l.ref)(this.contentSlotRef)}></slot>
144
+ </div>
145
+ `}
146
+ </div>
147
+ `}};e.u([(0,s.property)()],d.prototype,`summary`,void 0),e.u([(0,s.property)({type:Boolean,reflect:!0})],d.prototype,`open`,void 0),e.u([(0,s.property)({attribute:`summary-padding`})],d.prototype,`summaryPadding`,void 0),e.u([(0,s.property)({attribute:`content-padding`})],d.prototype,`contentPadding`,void 0),e.u([(0,s.property)({type:Boolean,attribute:`hide-indicator`})],d.prototype,`hideIndicator`,void 0),e.u([(0,s.property)({type:Number,attribute:`indicator-rotate`})],d.prototype,`indicatorRotate`,void 0),e.u([(0,s.property)({type:Boolean})],d.prototype,`backdrop`,void 0),e.u([(0,s.property)({type:Boolean})],d.prototype,`inline`,void 0),d=e.u([(0,s.customElement)(`schmancy-expand`)],d),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return`schmancy-expand-request-close`}});
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expand-D0YdR9nR.cjs","names":[],"sources":["../src/expand/expand-root.component.ts","../src/expand/expand.component.ts"],"sourcesContent":["import { css, html, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { SchmancyElement, SurfaceMixin } from '@mixins/index'\nimport type { TSurfaceColor } from '@schmancy/types'\nimport { SPRING_SMOOTH } from '../utils/animation.js'\nimport { reducedMotion$ } from '../directives/reduced-motion'\nimport '../surface/surface.js'\n\n@customElement('schmancy-expand-root')\nexport class SchmancyExpandRoot extends SurfaceMixin(SchmancyElement) {\n\tstatic styles = [\n\t\tcss`\n\t\t\t:host {\n\t\t\t\tdisplay: contents;\n\t\t\t}\n\n\t\t\t.portal-panel {\n\t\t\t\tposition: fixed;\n\t\t\t\ttransform-origin: top left;\n\t\t\t\twill-change: clip-path, opacity;\n\t\t\t\tborder-radius: 1rem;\n\t\t\t\tbox-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.5);\n\t\t\t\tz-index: 9999;\n\t\t\t}\n\n\t\t\t.minimize-btn {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 0.5rem;\n\t\t\t\tright: 0.5rem;\n\t\t\t\tz-index: 1;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\twidth: 2rem;\n\t\t\t\theight: 2rem;\n\t\t\t\tborder-radius: 9999px;\n\t\t\t\tborder: none;\n\t\t\t\tbackground: transparent;\n\t\t\t\tcursor: pointer;\n\t\t\t\topacity: 0.5;\n\t\t\t\ttransition:\n\t\t\t\t\topacity 150ms,\n\t\t\t\t\tbackground 150ms;\n\t\t\t\tcolor: inherit;\n\t\t\t}\n\n\t\t\t.minimize-btn:hover {\n\t\t\t\topacity: 1;\n\t\t\t\tbackground: rgb(0 0 0 / 0.08);\n\t\t\t}\n\t\t`,\n\t]\n\t@property({ reflect: true }) override type: TSurfaceColor = 'containerLowest'\n\t@state() isOpen = false\n\tprivate summaryRect: DOMRect | null = null\n\n\tprivate panelRef = createRef<HTMLElement>()\n\tprivate backdropRef = createRef<HTMLDivElement>()\n\tprivate btnRef = createRef<HTMLButtonElement>()\n\tprivate owner: (Element & { close?: () => void }) | null = null\n\tprivate hideIndicator = false\n\tprivate backdrop = true\n\n\t/** Called by schmancy-expand before nodes are moved */\n\tprepare(rect: DOMRect, owner: Element, hideIndicator = false, backdrop = true) {\n\t\tthis.summaryRect = rect\n\t\tthis.owner = owner as Element & { close?: () => void }\n\t\tthis.hideIndicator = hideIndicator\n\t\tthis.backdrop = backdrop\n\t}\n\n\t/** Called by schmancy-expand after nodes are moved in */\n\tasync triggerOpen() {\n\t\tthis.isOpen = true\n\t\tawait this.updateComplete\n\n\t\tconst panel = this.panelRef.value\n\t\tif (!panel) return\n\n\t\tconst src = this.summaryRect!\n\n\t\t// 1. Anchor at summary's top-left, measure natural content size\n\t\t// Use nearly full viewport height for measurement so content near the bottom\n\t\t// of the screen isn't artificially capped — the positioning step will move the panel up.\n\t\tObject.assign(panel.style, {\n\t\t\tvisibility: 'hidden',\n\t\t\ttop: `${src.top}px`,\n\t\t\tleft: `${src.left}px`,\n\t\t\tminWidth: `${src.width}px`,\n\t\t\twidth: 'max-content',\n\t\t\tmaxWidth: `${window.innerWidth - src.left}px`,\n\t\t\theight: 'auto',\n\t\t\tmaxHeight: `${window.innerHeight - 32}px`,\n\t\t\toverflowY: 'auto',\n\t\t})\n\n\t\tconst measured = panel.getBoundingClientRect()\n\t\tconst finalW = measured.width\n\t\tconst finalH = measured.height\n\n\t\t// 2. Adjust position so panel stays within viewport\n\t\tlet finalTop = src.top\n\t\tlet finalLeft = src.left\n\t\tif (finalTop + finalH > window.innerHeight) {\n\t\t\tfinalTop = Math.max(0, src.bottom - finalH)\n\t\t}\n\t\tif (finalLeft + finalW > window.innerWidth) {\n\t\t\tfinalLeft = Math.max(0, window.innerWidth - finalW)\n\t\t}\n\n\t\t// 3. Compute clip-path insets — summary rect expressed relative to panel final position\n\t\t// These insets shrink the visible area down to exactly the summary box\n\t\tconst insetTop = Math.max(0, src.top - finalTop)\n\t\tconst insetLeft = Math.max(0, src.left - finalLeft)\n\t\tconst insetRight = Math.max(0, finalLeft + finalW - (src.left + src.width))\n\t\tconst insetBottom = Math.max(0, finalTop + finalH - (src.top + src.height))\n\n\t\t// 4. Place panel at final size + position, masked to summary bounds (no flash)\n\t\tObject.assign(panel.style, {\n\t\t\tvisibility: '',\n\t\t\ttop: `${finalTop}px`,\n\t\t\tleft: `${finalLeft}px`,\n\t\t\tminWidth: `${src.width}px`,\n\t\t\twidth: `${finalW}px`,\n\t\t\theight: `${finalH}px`,\n\t\t\tmaxWidth: '',\n\t\t\tmaxHeight: '',\n\t\t\tclipPath: `inset(${insetTop}px ${insetRight}px ${insetBottom}px ${insetLeft}px round 0.5rem)`,\n\t\t})\n\n\t\t// 5. Animate the mask open — content revealed, not stretched\n\t\tthis.animateOpen(insetTop, insetRight, insetBottom, insetLeft, finalTop)\n\t}\n\n\t/** Animate close, return Promise resolving when done */\n\tasync triggerClose(targetRect: DOMRect): Promise<void> {\n\t\tawait this.animateClose(targetRect)\n\t\tthis.isOpen = false\n\t\tthis.summaryRect = null\n\t}\n\n\tprivate animateOpen(insetTop: number, insetRight: number, insetBottom: number, insetLeft: number, finalTop: number) {\n\t\tconst panel = this.panelRef.value\n\t\tif (!panel) return\n\n\t\tif (reducedMotion$.value) {\n\t\t\tpanel.style.clipPath = ''\n\t\t\treturn\n\t\t}\n\n\t\tconst backdrop = this.backdropRef.value\n\t\tif (backdrop) {\n\t\t\tbackdrop.animate([{ opacity: 0 }, { opacity: 1 }], {\n\t\t\t\tduration: SPRING_SMOOTH.duration,\n\t\t\t\teasing: SPRING_SMOOTH.easingFallback,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t}\n\n\t\tconst keyframes: Keyframe[] = [\n\t\t\t{\n\t\t\t\tclipPath: `inset(${insetTop}px ${insetRight}px ${insetBottom}px ${insetLeft}px round 0.5rem)`,\n\t\t\t\topacity: 0.9,\n\t\t\t},\n\t\t\t{\n\t\t\t\tclipPath: 'inset(0px 0px 0px 0px round 1rem)',\n\t\t\t\topacity: 1,\n\t\t\t},\n\t\t]\n\n\t\tconst anim = panel.animate(keyframes, {\n\t\t\tduration: SPRING_SMOOTH.duration,\n\t\t\teasing: SPRING_SMOOTH.easingFallback,\n\t\t\tfill: 'forwards',\n\t\t})\n\n\t\t// Clear clip-path and fixed dimensions after animation so content can grow naturally,\n\t\t// but cap at viewport height so overflow-y: auto can scroll\n\t\tanim.finished.then(() => {\n\t\t\tif (panel.isConnected) {\n\t\t\t\tpanel.style.clipPath = ''\n\t\t\t\tpanel.style.height = 'auto'\n\t\t\t\tpanel.style.maxHeight = `${window.innerHeight - finalTop - 16}px`\n\t\t\t}\n\t\t\treturn\n\t\t})\n\n\t\tconst btn = this.btnRef.value\n\t\tif (btn) {\n\t\t\tbtn.animate([{ transform: 'rotate(0deg)' }, { transform: 'rotate(180deg)' }], {\n\t\t\t\tduration: SPRING_SMOOTH.duration,\n\t\t\t\teasing: SPRING_SMOOTH.easingFallback,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate animateClose(targetRect: DOMRect): Promise<void> {\n\t\tconst panel = this.panelRef.value\n\t\tif (!panel) return Promise.resolve()\n\t\tif (reducedMotion$.value) return Promise.resolve()\n\n\t\t// Compute insets to mask panel back down to the summary box\n\t\tconst panelRect = panel.getBoundingClientRect()\n\t\tconst insetTop = Math.max(0, targetRect.top - panelRect.top)\n\t\tconst insetLeft = Math.max(0, targetRect.left - panelRect.left)\n\t\tconst insetRight = Math.max(0, panelRect.right - targetRect.right)\n\t\tconst insetBottom = Math.max(0, panelRect.bottom - targetRect.bottom)\n\n\t\tconst closeDuration = Math.round(SPRING_SMOOTH.duration * 0.4)\n\t\tconst closeEasing = 'cubic-bezier(0.4, 0, 1, 1)'\n\n\t\tconst closeKeyframes: Keyframe[] = [\n\t\t\t{ clipPath: 'inset(0px 0px 0px 0px round 1rem)', opacity: 1 },\n\t\t\t{\n\t\t\t\tclipPath: `inset(${insetTop}px ${insetRight}px ${insetBottom}px ${insetLeft}px round 0.5rem)`,\n\t\t\t\topacity: 0.6,\n\t\t\t},\n\t\t]\n\n\t\tconst anim = panel.animate(closeKeyframes, { duration: closeDuration, easing: closeEasing, fill: 'forwards' })\n\n\t\tconst backdrop = this.backdropRef.value\n\t\tif (backdrop) {\n\t\t\tbackdrop.animate([{ opacity: 1 }, { opacity: 0 }], {\n\t\t\t\tduration: closeDuration,\n\t\t\t\teasing: closeEasing,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t}\n\n\t\tconst btn = this.btnRef.value\n\t\tif (btn) {\n\t\t\tbtn.animate([{ transform: 'rotate(180deg)' }, { transform: 'rotate(0deg)' }], {\n\t\t\t\tduration: closeDuration,\n\t\t\t\teasing: closeEasing,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t}\n\n\t\treturn anim.finished as unknown as Promise<void>\n\t}\n\n\trender() {\n\t\tif (!this.isOpen) return nothing\n\n\t\treturn html`\n\t\t\t${this.backdrop\n\t\t\t\t? html`\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t${ref(this.backdropRef)}\n\t\t\t\t\t\t\tclass=\"fixed inset-0 z-9998 backdrop-blur-sm backdrop-saturate-150 backdrop-brightness-105 bg-black/[0.07] will-change-[opacity]\"\n\t\t\t\t\t\t\t@click=${() => this.owner?.close?.()}\n\t\t\t\t\t\t></div>\n\t\t\t\t\t`\n\t\t\t\t: nothing}\n\t\t\t<schmancy-surface ${ref(this.panelRef)} class=\"portal-panel\" type=${this.type} style=\"overflow-y: auto;\">\n\t\t\t\t${!this.hideIndicator\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t${ref(this.btnRef)}\n\t\t\t\t\t\t\t\tclass=\"minimize-btn\"\n\t\t\t\t\t\t\t\taria-label=\"Minimize\"\n\t\t\t\t\t\t\t\t@click=${() => this.owner?.close?.()}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\td=\"M19 9L12 16L5 9\"\n\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t: nothing}\n\t\t\t\t<slot></slot>\n\t\t\t</schmancy-surface>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-expand-root': SchmancyExpandRoot\n\t}\n}\n","import { css, html, nothing } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { styleMap } from 'lit/directives/style-map.js'\nimport { filter, fromEvent, lastValueFrom } from 'rxjs'\nimport { tap, takeUntil } from 'rxjs/operators'\nimport { SchmancyElement } from '@mixins/index'\nimport { SPRING_SNAPPY } from '../utils/animation.js'\nimport { reducedMotion$ } from '../directives/reduced-motion'\nimport { SchmancyExpandRoot } from './expand-root.component.js'\n\n/** Dispatch this event on window to close whichever schmancy-expand is currently open */\nexport const SCHMANCY_EXPAND_REQUEST_CLOSE = 'schmancy-expand-request-close'\n\n@customElement('schmancy-expand')\nexport default class SchmancyExpand extends SchmancyElement {\n\tstatic styles = [\n\t\tcss`\n\t\t\t:host {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\tsummary::-webkit-details-marker {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\tsummary {\n\t\t\t\tlist-style: none;\n\t\t\t\tcolor: inherit;\n\t\t\t}\n\n\t\t\t.inline-grid {\n\t\t\t\tdisplay: grid;\n\t\t\t\tgrid-template-rows: 0fr;\n\t\t\t\toverflow: hidden;\n\t\t\t\ttransition:\n\t\t\t\t\tgrid-template-rows 300ms cubic-bezier(0.22, 1.25, 0.36, 1),\n\t\t\t\t\topacity 300ms cubic-bezier(0.22, 1.25, 0.36, 1);\n\t\t\t\topacity: 0;\n\t\t\t}\n\n\t\t\t.inline-grid[data-open] {\n\t\t\t\tgrid-template-rows: 1fr;\n\t\t\t\topacity: 1;\n\t\t\t}\n\n\t\t\t.inline-grid > .inner {\n\t\t\t\tmin-height: 0;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t`,\n\t]\n\t@property() summary = ''\n\n\t@property({ type: Boolean, reflect: true }) open = false\n\n\t@property({ attribute: 'summary-padding' }) summaryPadding = ''\n\n\t@property({ attribute: 'content-padding' }) contentPadding = ''\n\n\t@property({ type: Boolean, attribute: 'hide-indicator' }) hideIndicator = false\n\n\t@property({ type: Number, attribute: 'indicator-rotate' }) indicatorRotate = 90\n\n\t@property({ type: Boolean }) backdrop = true\n\n\t@property({ type: Boolean }) inline = false\n\n\tprivate summaryRef = createRef<HTMLElement>()\n\tprivate contentSlotRef = createRef<HTMLSlotElement>()\n\tprivate root: SchmancyExpandRoot | null = null\n\tprivate movedNodes: Element[] = []\n\tprivate currentIndicatorAnim: Animation | undefined\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Close on Escape key\n\t\tfromEvent<KeyboardEvent>(window, 'keydown')\n\t\t\t.pipe(\n\t\t\t\tfilter(e => e.key === 'Escape'),\n\t\t\t\tfilter(() => this.open),\n\t\t\t\ttap(() => void this.handleClose()),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\n\t\t// Close on click outside the portal panel\n\t\tfromEvent<PointerEvent>(document, 'pointerdown')\n\t\t\t.pipe(\n\t\t\t\tfilter(() => this.open),\n\t\t\t\tfilter(e => !!this.root && !e.composedPath().includes(this.root)),\n\t\t\t\ttap(() => void this.handleClose()),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tif (this.movedNodes.length > 0) {\n\t\t\tthis.movedNodes.forEach(n => this.appendChild(n))\n\t\t\tthis.movedNodes = []\n\t\t}\n\t\tif (this.root && this.root.children.length === 0) {\n\t\t\tthis.root.remove()\n\t\t\tthis.root = null\n\t\t}\n\t}\n\n\tprivate async getOrCreateRoot(): Promise<SchmancyExpandRoot> {\n\t\tconst theme = await lastValueFrom(this.discover<HTMLElement>('schmancy-theme'))\n\t\tconst container: HTMLElement = theme ?? document.querySelector('schmancy-theme') ?? document.body\n\t\tlet root = container.querySelector('schmancy-expand-root') as SchmancyExpandRoot | null\n\t\tif (!root) {\n\t\t\troot = new SchmancyExpandRoot()\n\t\t\tcontainer.appendChild(root)\n\t\t}\n\t\treturn root\n\t}\n\n\t/** Close the expand portal, animating back to the summary position. */\n\tpublic close(): void {\n\t\tvoid this.handleClose()\n\t}\n\n\t/** Programmatically open the expand portal. */\n\tpublic expand(): void {\n\t\tif (this.open) return\n\t\tvoid this.expandPortal()\n\t}\n\n\tprotected override updated(changed: Map<PropertyKey, unknown>) {\n\t\tsuper.updated(changed)\n\t\tif (changed.has('open') && this.open && !this.inline && !this.root) {\n\t\t\tvoid this.expandPortal()\n\t\t}\n\t}\n\n\tprivate toggle() {\n\t\tif (this.inline) {\n\t\t\tthis.open = !this.open\n\t\t\tthis.animateIndicator(this.open)\n\t\t} else if (!this.open) {\n\t\t\tvoid this.expandPortal()\n\t\t}\n\t}\n\n\tprivate handleSummaryClick(e: MouseEvent) {\n\t\te.preventDefault()\n\t\tthis.toggle()\n\t}\n\n\tprivate async expandPortal() {\n\t\tif (this.inline) {\n\t\t\tthis.open = true\n\t\t\tthis.animateIndicator(true)\n\t\t\treturn\n\t\t}\n\n\t\tconst root = await this.getOrCreateRoot()\n\t\tthis.root = root\n\t\tconst summary = this.summaryRef.value\n\t\tconst contentSlot = this.contentSlotRef.value\n\t\tif (!summary || !contentSlot) return\n\n\t\tconst summaryRect = summary.getBoundingClientRect()\n\t\tconst nodes = contentSlot.assignedElements({ flatten: true })\n\t\tif (nodes.length === 0) return\n\n\t\troot.prepare(summaryRect, this, this.hideIndicator, this.backdrop)\n\n\t\tthis.movedNodes = [...nodes]\n\t\tthis.movedNodes.forEach(n => root.appendChild(n))\n\n\t\troot.triggerOpen()\n\n\t\tthis.animateIndicator(true)\n\t\tthis.open = true\n\t}\n\n\tasync handleClose() {\n\t\tif (this.inline) {\n\t\t\tthis.animateIndicator(false)\n\t\t\tthis.open = false\n\t\t\treturn\n\t\t}\n\n\t\tconst root = this.root\n\t\tconst summary = this.summaryRef.value\n\t\tif (!root || !summary) return\n\n\t\tconst summaryRect = summary.getBoundingClientRect()\n\t\tthis.animateIndicator(false)\n\n\t\tawait root.triggerClose(summaryRect)\n\n\t\tthis.movedNodes.forEach(n => this.appendChild(n))\n\t\tthis.movedNodes = []\n\t\tthis.open = false\n\t}\n\n\tprivate animateIndicator(isOpen: boolean) {\n\t\tif (reducedMotion$.value) return\n\n\t\tconst indicator = this.shadowRoot?.querySelector('.indicator') as HTMLElement | null\n\t\tif (!indicator) return\n\n\t\tthis.currentIndicatorAnim?.cancel()\n\t\tthis.currentIndicatorAnim = indicator.animate(\n\t\t\t[\n\t\t\t\t{ transform: `rotate(${isOpen ? '0deg' : `${this.indicatorRotate}deg`})` },\n\t\t\t\t{ transform: `rotate(${isOpen ? `${this.indicatorRotate}deg` : '0deg'})` },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: SPRING_SNAPPY.duration,\n\t\t\t\teasing: SPRING_SNAPPY.easingFallback,\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t)\n\t}\n\n\trender() {\n\t\tconst summaryClasses = this.classMap({\n\t\t\t[this.summaryPadding]: true,\n\t\t\t'select-none relative flex items-center gap-2 rounded-xl transition-all duration-150': true,\n\t\t\t'hover:brightness-[0.92] active:brightness-[0.85] cursor-pointer group': true,\n\t\t\t'flex-row-reverse': true,\n\t\t})\n\n\t\treturn html`\n\t\t\t<div class=\"w-full rounded-xl\">\n\t\t\t\t<div\n\t\t\t\t\t${ref(this.summaryRef)}\n\t\t\t\t\tclass=${summaryClasses}\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\trole=\"button\"\n\t\t\t\t\t@click=${this.handleSummaryClick}\n\t\t\t\t\t@keydown=${(e: KeyboardEvent) => {\n\t\t\t\t\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\tthis.toggle()\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t${!this.hideIndicator\n\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclass=\"indicator flex items-center justify-center w-5 h-5 rounded-full shrink-0 opacity-70 group-hover:opacity-100 will-change-transform\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\td=\"M9 6L15 12L9 18\"\n\t\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t: nothing}\n\n\t\t\t\t\t<span class=\"flex-1 font-medium text-base min-w-0\">\n\t\t\t\t\t\t<slot name=\"summary\">${this.summary}</slot>\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<slot name=\"actions\"></slot>\n\t\t\t\t</div>\n\n\t\t\t\t${this.inline\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<div class=\"inline-grid\" ?data-open=${this.open}>\n\t\t\t\t\t\t\t\t<div class=\"inner\">\n\t\t\t\t\t\t\t\t\t<slot ${ref(this.contentSlotRef)}></slot>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`\n\t\t\t\t\t: html`\n\t\t\t\t\t\t\t<div style=${styleMap(this.open ? {} : { display: 'none' })}>\n\t\t\t\t\t\t\t\t<slot ${ref(this.contentSlotRef)}></slot>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`}\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-expand': SchmancyExpand\n\t}\n}\n"],"mappings":"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"}
package/dist/expand.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./expand-B9IUGVtc.cjs`);exports.SCHMANCY_EXPAND_REQUEST_CLOSE=e.t,Object.defineProperty(exports,`SchmancyExpandRoot`,{enumerable:!0,get:function(){return e.n}});
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./expand-D0YdR9nR.cjs`);exports.SCHMANCY_EXPAND_REQUEST_CLOSE=e.t,Object.defineProperty(exports,`SchmancyExpandRoot`,{enumerable:!0,get:function(){return e.n}});
package/dist/expand.js CHANGED
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "./expand-cZ8rfCWP.js";
1
+ import { n as e, t } from "./expand-BT8mOu8Q.js";
2
2
  export { t as SCHMANCY_EXPAND_REQUEST_CLOSE, e as SchmancyExpandRoot };
package/dist/fab.cjs CHANGED
@@ -1,4 +1,4 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-PS1u0j1B.cjs`);require(`./mixins-BoMURWag.cjs`);const t=require(`./magnetic-DKtc4umC.cjs`);let n=require(`lit/decorators.js`),r=require(`lit`),i=require(`lit/directives/if-defined.js`),a=require(`lit/directives/when.js`);var o=class extends e.t{constructor(...e){super(...e),this.variant=`surface`,this.size=`medium`,this.label=``,this.extended=!1,this.lowered=!1}static{this.styles=[r.css`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-CeKrBW2j.cjs`);require(`./mixins-Cjn20BQH.cjs`);const t=require(`./magnetic-DKtc4umC.cjs`);let n=require(`lit/decorators.js`),r=require(`lit`),i=require(`lit/directives/if-defined.js`),a=require(`lit/directives/when.js`);var o=class extends e.t{constructor(...e){super(...e),this.variant=`surface`,this.size=`medium`,this.label=``,this.extended=!1,this.lowered=!1}static{this.styles=[r.css`
2
2
  :host {
3
3
  /* M3 FAB (medium) — 16dp shape, 24dp icon, resting level 3 */
4
4
  display: inline-flex;