@mhmo91/schmancy 0.9.20 → 0.9.22

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 (342) hide show
  1. package/dist/agent/{flow-3RrZM-e7.js.map → flow-CvG1fLW5.js.map} +1 -1
  2. package/dist/agent/schmancy.agent.js +2172 -2168
  3. package/dist/agent/schmancy.agent.js.map +1 -1
  4. package/dist/agent/{vendor-highlight-BmnMldIa.js.map → vendor-highlight-Dow87ZL_.js.map} +1 -1
  5. package/dist/agent/{vendor-jsqr-1wQ5xc49.js.map → vendor-jsqr-Bl4iAtKC.js.map} +1 -1
  6. package/dist/agent/{vendor-material-color-33Mj762T.js.map → vendor-material-color-DcL7ZPxx.js.map} +1 -1
  7. package/dist/{area-DBjAhgjP.cjs → area-CFLFXu0Z.cjs} +1 -1
  8. package/dist/{area-DBjAhgjP.cjs.map → area-CFLFXu0Z.cjs.map} +1 -1
  9. package/dist/{area-Dr4I9R2p.js → area-CfozaCAZ.js} +1 -1
  10. package/dist/{area-Dr4I9R2p.js.map → area-CfozaCAZ.js.map} +1 -1
  11. package/dist/area.cjs +1 -1
  12. package/dist/area.js +1 -1
  13. package/dist/{autocomplete-CgWUCUU-.js → autocomplete-BNjcQ743.js} +2 -2
  14. package/dist/{autocomplete-CgWUCUU-.js.map → autocomplete-BNjcQ743.js.map} +1 -1
  15. package/dist/{autocomplete-EM0jE7X2.cjs → autocomplete-NDvRW_Xs.cjs} +1 -1
  16. package/dist/{autocomplete-EM0jE7X2.cjs.map → autocomplete-NDvRW_Xs.cjs.map} +1 -1
  17. package/dist/autocomplete.cjs +1 -1
  18. package/dist/autocomplete.js +1 -1
  19. package/dist/badge.cjs +1 -1
  20. package/dist/badge.js +1 -1
  21. package/dist/{boat-Dw8TmOzN.js → boat-DxplbTDW.js} +1 -1
  22. package/dist/{boat-Dw8TmOzN.js.map → boat-DxplbTDW.js.map} +1 -1
  23. package/dist/{boat-BjYJI1HS.cjs → boat-ZA47HbKj.cjs} +1 -1
  24. package/dist/{boat-BjYJI1HS.cjs.map → boat-ZA47HbKj.cjs.map} +1 -1
  25. package/dist/boat.cjs +1 -1
  26. package/dist/boat.js +1 -1
  27. package/dist/breadcrumb.cjs +1 -1
  28. package/dist/breadcrumb.js +1 -1
  29. package/dist/{busy-BmiumJpB.cjs → busy-BuHEz1uo.cjs} +1 -1
  30. package/dist/{busy-BmiumJpB.cjs.map → busy-BuHEz1uo.cjs.map} +1 -1
  31. package/dist/{busy-D2hP3fOy.js → busy-QZxs4u8B.js} +1 -1
  32. package/dist/{busy-D2hP3fOy.js.map → busy-QZxs4u8B.js.map} +1 -1
  33. package/dist/busy.cjs +1 -1
  34. package/dist/busy.js +1 -1
  35. package/dist/button.cjs +1 -1
  36. package/dist/button.js +3 -3
  37. package/dist/{card-CEdgK9nb.js → card-CTUaARLm.js} +1 -1
  38. package/dist/{card-CEdgK9nb.js.map → card-CTUaARLm.js.map} +1 -1
  39. package/dist/{card-BslSqOsf.cjs → card-DtN6p1Jq.cjs} +1 -1
  40. package/dist/{card-BslSqOsf.cjs.map → card-DtN6p1Jq.cjs.map} +1 -1
  41. package/dist/card.cjs +1 -1
  42. package/dist/card.js +1 -1
  43. package/dist/charts.cjs +1 -1
  44. package/dist/charts.js +1 -1
  45. package/dist/{checkbox-Br84TiCs.js → checkbox-D4cUb1T3.js} +1 -1
  46. package/dist/{checkbox-Br84TiCs.js.map → checkbox-D4cUb1T3.js.map} +1 -1
  47. package/dist/{checkbox-DtcFMgZL.cjs → checkbox-DEKQLJYR.cjs} +1 -1
  48. package/dist/{checkbox-DtcFMgZL.cjs.map → checkbox-DEKQLJYR.cjs.map} +1 -1
  49. package/dist/checkbox.cjs +1 -1
  50. package/dist/checkbox.js +1 -1
  51. package/dist/{chips-DoCu5YQb.cjs → chips-B-27tj7O.cjs} +1 -1
  52. package/dist/{chips-DoCu5YQb.cjs.map → chips-B-27tj7O.cjs.map} +1 -1
  53. package/dist/{chips-BNYOweGm.js → chips-DhAWrSgi.js} +3 -3
  54. package/dist/{chips-BNYOweGm.js.map → chips-DhAWrSgi.js.map} +1 -1
  55. package/dist/chips.cjs +1 -1
  56. package/dist/chips.js +2 -2
  57. package/dist/{code-highlight-CI_gqXYX.js → code-highlight-DgZKqo4P.js} +1 -1
  58. package/dist/{code-highlight-CI_gqXYX.js.map → code-highlight-DgZKqo4P.js.map} +1 -1
  59. package/dist/{code-highlight-B_l8vDzn.cjs → code-highlight-_ZK6FEjF.cjs} +1 -1
  60. package/dist/{code-highlight-B_l8vDzn.cjs.map → code-highlight-_ZK6FEjF.cjs.map} +1 -1
  61. package/dist/code-highlight.cjs +1 -1
  62. package/dist/code-highlight.js +1 -1
  63. package/dist/{components-TJT8-tva.cjs → components-DUiF-_Ul.cjs} +1 -1
  64. package/dist/{components-TJT8-tva.cjs.map → components-DUiF-_Ul.cjs.map} +1 -1
  65. package/dist/{components-DjKNS9R_.js → components-JHIoVqFd.js} +1 -1
  66. package/dist/{components-DjKNS9R_.js.map → components-JHIoVqFd.js.map} +1 -1
  67. package/dist/components.cjs +1 -1
  68. package/dist/components.js +1 -1
  69. package/dist/connectivity.cjs +1 -1
  70. package/dist/connectivity.js +1 -1
  71. package/dist/content-drawer.cjs +1 -1
  72. package/dist/content-drawer.js +1 -1
  73. package/dist/context-6t-yayy3.cjs +1 -0
  74. package/dist/{context-CAYQh-mx.cjs.map → context-6t-yayy3.cjs.map} +1 -1
  75. package/dist/context-BCFNNkes.js +3 -0
  76. package/dist/{context-D8Q66KPe.js.map → context-BCFNNkes.js.map} +1 -1
  77. package/dist/{date-range-sGkC0KF3.js → date-range-B1FDRGRB.js} +2 -2
  78. package/dist/{date-range-sGkC0KF3.js.map → date-range-B1FDRGRB.js.map} +1 -1
  79. package/dist/{date-range-CIWYm3eS.cjs → date-range-CrAIk8dg.cjs} +1 -1
  80. package/dist/{date-range-CIWYm3eS.cjs.map → date-range-CrAIk8dg.cjs.map} +1 -1
  81. package/dist/date-range.cjs +1 -1
  82. package/dist/date-range.js +1 -1
  83. package/dist/{delay-DwX65fSc.js → delay-Cs0i_CpQ.js} +3 -3
  84. package/dist/{delay-DwX65fSc.js.map → delay-Cs0i_CpQ.js.map} +1 -1
  85. package/dist/{delay-Bu4WMQlV.cjs → delay-DCp_QEct.cjs} +1 -1
  86. package/dist/{delay-Bu4WMQlV.cjs.map → delay-DCp_QEct.cjs.map} +1 -1
  87. package/dist/delay.cjs +1 -1
  88. package/dist/delay.js +1 -1
  89. package/dist/{details-B8p62xmR.cjs → details-BJTR16AV.cjs} +1 -1
  90. package/dist/{details-B8p62xmR.cjs.map → details-BJTR16AV.cjs.map} +1 -1
  91. package/dist/{details-CCW52lzz.js → details-CBoXUDlQ.js} +1 -1
  92. package/dist/{details-CCW52lzz.js.map → details-CBoXUDlQ.js.map} +1 -1
  93. package/dist/details.cjs +1 -1
  94. package/dist/details.js +1 -1
  95. package/dist/dialog.cjs +1 -1
  96. package/dist/dialog.js +1 -1
  97. package/dist/{divider-JyyFw_3J.cjs → divider-D6MRonTS.cjs} +1 -1
  98. package/dist/{divider-JyyFw_3J.cjs.map → divider-D6MRonTS.cjs.map} +1 -1
  99. package/dist/{divider-CbEWg3G_.js → divider-DivkYKa_.js} +1 -1
  100. package/dist/{divider-CbEWg3G_.js.map → divider-DivkYKa_.js.map} +1 -1
  101. package/dist/divider.cjs +1 -1
  102. package/dist/divider.js +1 -1
  103. package/dist/dropdown.cjs +1 -1
  104. package/dist/dropdown.js +2 -2
  105. package/dist/{expand-bFa_qVDT.js → expand-BvAVo29n.js} +2 -2
  106. package/dist/{expand-bFa_qVDT.js.map → expand-BvAVo29n.js.map} +1 -1
  107. package/dist/{expand-BmwIPNjq.cjs → expand-Dd0H6y8Z.cjs} +1 -1
  108. package/dist/{expand-BmwIPNjq.cjs.map → expand-Dd0H6y8Z.cjs.map} +1 -1
  109. package/dist/expand.cjs +1 -1
  110. package/dist/expand.js +1 -1
  111. package/dist/{extra-HwbaUnCD.js → extra-0MZSXbOH.js} +1 -1
  112. package/dist/{extra-HwbaUnCD.js.map → extra-0MZSXbOH.js.map} +1 -1
  113. package/dist/{extra-BUgyMgjl.cjs → extra-CdOUiB0K.cjs} +1 -1
  114. package/dist/{extra-BUgyMgjl.cjs.map → extra-CdOUiB0K.cjs.map} +1 -1
  115. package/dist/extra.cjs +1 -1
  116. package/dist/extra.js +1 -1
  117. package/dist/{float-BQwhfibw.cjs → float-ByW-Gth3.cjs} +1 -1
  118. package/dist/{float-BQwhfibw.cjs.map → float-ByW-Gth3.cjs.map} +1 -1
  119. package/dist/{float-D5ezUurt.js → float-D_u8mDNa.js} +1 -1
  120. package/dist/{float-D5ezUurt.js.map → float-D_u8mDNa.js.map} +1 -1
  121. package/dist/float.cjs +1 -1
  122. package/dist/float.js +1 -1
  123. package/dist/handover/agent-runtime-followups.md +1 -1
  124. package/dist/handover/agent-runtime-v1.md +3 -3
  125. package/dist/handover/agent-runtime-v2-loopback.md +71 -0
  126. package/dist/handover/claude-design-brief.md +131 -0
  127. package/dist/handover/claude-design-v2-paste.md +42 -0
  128. package/dist/{icons-C5-DIjet.js → icons-24zlLf1q.js} +2 -2
  129. package/dist/{icons-C5-DIjet.js.map → icons-24zlLf1q.js.map} +1 -1
  130. package/dist/{icons-B6V3nZ4-.cjs → icons-BpHN4Z8q.cjs} +1 -1
  131. package/dist/{icons-B6V3nZ4-.cjs.map → icons-BpHN4Z8q.cjs.map} +1 -1
  132. package/dist/icons.cjs +1 -1
  133. package/dist/icons.js +1 -1
  134. package/dist/{iframe-C7sHg7RC.cjs → iframe-BXzYZu9_.cjs} +1 -1
  135. package/dist/{iframe-C7sHg7RC.cjs.map → iframe-BXzYZu9_.cjs.map} +1 -1
  136. package/dist/{iframe-BXBsuLwt.js → iframe-B_QrvTmj.js} +1 -1
  137. package/dist/{iframe-BXBsuLwt.js.map → iframe-B_QrvTmj.js.map} +1 -1
  138. package/dist/iframe.cjs +1 -1
  139. package/dist/iframe.js +1 -1
  140. package/dist/index.cjs +1 -1
  141. package/dist/index.js +30 -30
  142. package/dist/{input-chip-CiG61y-N.js → input-chip-C09B0L1y.js} +1 -1
  143. package/dist/{input-chip-CiG61y-N.js.map → input-chip-C09B0L1y.js.map} +1 -1
  144. package/dist/{input-chip-p24lkYtY.cjs → input-chip-FZEpuSaX.cjs} +1 -1
  145. package/dist/{input-chip-p24lkYtY.cjs.map → input-chip-FZEpuSaX.cjs.map} +1 -1
  146. package/dist/json.cjs +1 -1
  147. package/dist/json.js +2 -2
  148. package/dist/kbd.cjs +1 -1
  149. package/dist/kbd.js +1 -1
  150. package/dist/{layout-B0_IXfov.cjs → layout-Bst19YG8.cjs} +1 -1
  151. package/dist/{layout-B0_IXfov.cjs.map → layout-Bst19YG8.cjs.map} +1 -1
  152. package/dist/{layout-Cqghi_rx.js → layout-aTtUdGAi.js} +2 -2
  153. package/dist/{layout-Cqghi_rx.js.map → layout-aTtUdGAi.js.map} +1 -1
  154. package/dist/layout.cjs +1 -1
  155. package/dist/layout.js +2 -2
  156. package/dist/{lightbox-CnCTvqSu.js → lightbox-Cb5-XPWV.js} +2 -2
  157. package/dist/{lightbox-CnCTvqSu.js.map → lightbox-Cb5-XPWV.js.map} +1 -1
  158. package/dist/{lightbox-BWKTzA03.cjs → lightbox-Dk2ICCBB.cjs} +1 -1
  159. package/dist/{lightbox-BWKTzA03.cjs.map → lightbox-Dk2ICCBB.cjs.map} +1 -1
  160. package/dist/lightbox.cjs +1 -1
  161. package/dist/lightbox.js +1 -1
  162. package/dist/{list-CMWHu6cV.cjs → list-DBiecR1i.cjs} +1 -1
  163. package/dist/{list-CMWHu6cV.cjs.map → list-DBiecR1i.cjs.map} +1 -1
  164. package/dist/{list-BpjKUOzM.js → list-DZWoCb3V.js} +2 -2
  165. package/dist/{list-BpjKUOzM.js.map → list-DZWoCb3V.js.map} +1 -1
  166. package/dist/list.cjs +1 -1
  167. package/dist/list.js +1 -1
  168. package/dist/{litElement.mixin-BnNYZ24e.js → litElement.mixin-BuZ28ZzP.js} +1 -1
  169. package/dist/{litElement.mixin-BnNYZ24e.js.map → litElement.mixin-BuZ28ZzP.js.map} +1 -1
  170. package/dist/{litElement.mixin-CtQOmwq6.cjs → litElement.mixin-lYlKxxjR.cjs} +1 -1
  171. package/dist/{litElement.mixin-CtQOmwq6.cjs.map → litElement.mixin-lYlKxxjR.cjs.map} +1 -1
  172. package/dist/{mailbox-Tg1CROVz.cjs → mailbox-BYNmcNIM.cjs} +1 -1
  173. package/dist/{mailbox-Tg1CROVz.cjs.map → mailbox-BYNmcNIM.cjs.map} +1 -1
  174. package/dist/{mailbox-CHIpxS3W.js → mailbox-laG7nvXl.js} +4 -4
  175. package/dist/{mailbox-CHIpxS3W.js.map → mailbox-laG7nvXl.js.map} +1 -1
  176. package/dist/mailbox.cjs +1 -1
  177. package/dist/mailbox.js +1 -1
  178. package/dist/{map-Z_dsu-dv.cjs → map-7_cexh1e.cjs} +1 -1
  179. package/dist/{map-Z_dsu-dv.cjs.map → map-7_cexh1e.cjs.map} +1 -1
  180. package/dist/{map-YY1Q4FWO.js → map-YSAPFrH9.js} +1 -1
  181. package/dist/{map-YY1Q4FWO.js.map → map-YSAPFrH9.js.map} +1 -1
  182. package/dist/map.cjs +1 -1
  183. package/dist/map.js +1 -1
  184. package/dist/{menu-BIBUgS1T.js → menu-DeNdlsSV.js} +1 -1
  185. package/dist/{menu-BIBUgS1T.js.map → menu-DeNdlsSV.js.map} +1 -1
  186. package/dist/{menu-DS8Iz4fJ.cjs → menu-RaeiF4Ja.cjs} +1 -1
  187. package/dist/{menu-DS8Iz4fJ.cjs.map → menu-RaeiF4Ja.cjs.map} +1 -1
  188. package/dist/menu.cjs +1 -1
  189. package/dist/menu.js +1 -1
  190. package/dist/mixins.cjs +1 -1
  191. package/dist/mixins.js +2 -2
  192. package/dist/nav-drawer.cjs +1 -1
  193. package/dist/nav-drawer.js +1 -1
  194. package/dist/navigation-bar.cjs +1 -1
  195. package/dist/navigation-bar.js +1 -1
  196. package/dist/navigation-rail.cjs +1 -1
  197. package/dist/navigation-rail.js +1 -1
  198. package/dist/{notification-ChAvNXf3.js → notification-DRPjMDli.js} +2 -2
  199. package/dist/{notification-ChAvNXf3.js.map → notification-DRPjMDli.js.map} +1 -1
  200. package/dist/{notification-DPUkuifB.cjs → notification-DqWW2oh9.cjs} +1 -1
  201. package/dist/{notification-DPUkuifB.cjs.map → notification-DqWW2oh9.cjs.map} +1 -1
  202. package/dist/notification.cjs +1 -1
  203. package/dist/notification.js +1 -1
  204. package/dist/{option-OIp0joyN.cjs → option-1lYctKVI.cjs} +1 -1
  205. package/dist/{option-OIp0joyN.cjs.map → option-1lYctKVI.cjs.map} +1 -1
  206. package/dist/{option-Ci7C8xxh.js → option-N3wlHTc9.js} +1 -1
  207. package/dist/{option-Ci7C8xxh.js.map → option-N3wlHTc9.js.map} +1 -1
  208. package/dist/option.cjs +1 -1
  209. package/dist/option.js +1 -1
  210. package/dist/overlay.cjs +1 -1
  211. package/dist/overlay.js +1 -1
  212. package/dist/page.cjs +1 -1
  213. package/dist/page.js +2 -2
  214. package/dist/{progress-DGkwPgDX.js → progress-DhcXo8r-.js} +1 -1
  215. package/dist/{progress-DGkwPgDX.js.map → progress-DhcXo8r-.js.map} +1 -1
  216. package/dist/{progress-32Cad1NX.cjs → progress-YOuASkdz.cjs} +1 -1
  217. package/dist/{progress-32Cad1NX.cjs.map → progress-YOuASkdz.cjs.map} +1 -1
  218. package/dist/progress.cjs +1 -1
  219. package/dist/progress.js +1 -1
  220. package/dist/{provide-MvHcXKzT.cjs → provide-B7b5TOCD.cjs} +1 -1
  221. package/dist/{provide-MvHcXKzT.cjs.map → provide-B7b5TOCD.cjs.map} +1 -1
  222. package/dist/{provide-BuzyBLGj.js → provide-uCFRzgWs.js} +1 -1
  223. package/dist/{provide-BuzyBLGj.js.map → provide-uCFRzgWs.js.map} +1 -1
  224. package/dist/qr-scanner.cjs +5 -5
  225. package/dist/qr-scanner.cjs.map +1 -1
  226. package/dist/qr-scanner.js +11 -7
  227. package/dist/qr-scanner.js.map +1 -1
  228. package/dist/{radio-group-B7DuNxUq.cjs → radio-group-DYvIgv3P.cjs} +1 -1
  229. package/dist/{radio-group-B7DuNxUq.cjs.map → radio-group-DYvIgv3P.cjs.map} +1 -1
  230. package/dist/{radio-group-B72sYGnS.js → radio-group-DchZApJl.js} +1 -1
  231. package/dist/{radio-group-B72sYGnS.js.map → radio-group-DchZApJl.js.map} +1 -1
  232. package/dist/radio-group.cjs +1 -1
  233. package/dist/radio-group.js +1 -1
  234. package/dist/range.cjs +1 -1
  235. package/dist/range.js +1 -1
  236. package/dist/{scroll-V1rAZ9fK.cjs → scroll-BKn4essm.cjs} +1 -1
  237. package/dist/{scroll-V1rAZ9fK.cjs.map → scroll-BKn4essm.cjs.map} +1 -1
  238. package/dist/{scroll-CdmXRXh2.js → scroll-G2YnteF9.js} +1 -1
  239. package/dist/{scroll-CdmXRXh2.js.map → scroll-G2YnteF9.js.map} +1 -1
  240. package/dist/{select-wFDKDLQI.js → select-Bydjuia9.js} +1 -1
  241. package/dist/{select-wFDKDLQI.js.map → select-Bydjuia9.js.map} +1 -1
  242. package/dist/{select-DFxoBgEf.cjs → select-CQGKkEZc.cjs} +1 -1
  243. package/dist/{select-DFxoBgEf.cjs.map → select-CQGKkEZc.cjs.map} +1 -1
  244. package/dist/select.cjs +1 -1
  245. package/dist/select.js +1 -1
  246. package/dist/{sheet-DdlZhnDG.cjs → sheet-BCxpHT62.cjs} +1 -1
  247. package/dist/{sheet-DdlZhnDG.cjs.map → sheet-BCxpHT62.cjs.map} +1 -1
  248. package/dist/{sheet-LFVo5iN4.js → sheet-DGfh9VSs.js} +3 -3
  249. package/dist/{sheet-LFVo5iN4.js.map → sheet-DGfh9VSs.js.map} +1 -1
  250. package/dist/sheet.cjs +1 -1
  251. package/dist/sheet.js +2 -2
  252. package/dist/{sheet.service-BfNDB0K0.cjs → sheet.service-B-RxqhpO.cjs} +1 -1
  253. package/dist/{sheet.service-BfNDB0K0.cjs.map → sheet.service-B-RxqhpO.cjs.map} +1 -1
  254. package/dist/{sheet.service-DQE7-_wq.js → sheet.service-Dy_fwQqQ.js} +1 -1
  255. package/dist/{sheet.service-DQE7-_wq.js.map → sheet.service-Dy_fwQqQ.js.map} +1 -1
  256. package/dist/skeleton.cjs +1 -1
  257. package/dist/skeleton.js +1 -1
  258. package/dist/skills/SKILL.md +1 -1
  259. package/dist/skills/schmancy/SKILL.md +1 -1
  260. package/dist/slider.cjs +1 -1
  261. package/dist/slider.js +1 -1
  262. package/dist/{splash-screen-DteUfSV3.cjs → splash-screen-C2xsOEdx.cjs} +1 -1
  263. package/dist/{splash-screen-DteUfSV3.cjs.map → splash-screen-C2xsOEdx.cjs.map} +1 -1
  264. package/dist/{splash-screen-BHgb3c3Q.js → splash-screen-Clv-5vsb.js} +1 -1
  265. package/dist/{splash-screen-BHgb3c3Q.js.map → splash-screen-Clv-5vsb.js.map} +1 -1
  266. package/dist/splash-screen.cjs +1 -1
  267. package/dist/splash-screen.js +1 -1
  268. package/dist/{src-Dw-PjtMH.js → src-B0jLOpqn.js} +39 -39
  269. package/dist/{src-Dw-PjtMH.js.map → src-B0jLOpqn.js.map} +1 -1
  270. package/dist/{src-sG7Ihf0e.cjs → src-C9DpHCWF.cjs} +1 -1
  271. package/dist/{src-sG7Ihf0e.cjs.map → src-C9DpHCWF.cjs.map} +1 -1
  272. package/dist/steps.cjs +1 -1
  273. package/dist/steps.js +3 -3
  274. package/dist/{surface-0XM4DBaT.js → surface-BWcq30OL.js} +2 -2
  275. package/dist/{surface-0XM4DBaT.js.map → surface-BWcq30OL.js.map} +1 -1
  276. package/dist/{surface-B6DA01kL.cjs → surface-fEmoN08Y.cjs} +1 -1
  277. package/dist/{surface-B6DA01kL.cjs.map → surface-fEmoN08Y.cjs.map} +1 -1
  278. package/dist/surface.cjs +1 -1
  279. package/dist/surface.js +1 -1
  280. package/dist/switch.cjs +1 -1
  281. package/dist/switch.js +1 -1
  282. package/dist/{table-Dwt66SR6.js → table-B8H-zioX.js} +1 -1
  283. package/dist/{table-Dwt66SR6.js.map → table-B8H-zioX.js.map} +1 -1
  284. package/dist/{table-DFlJhG5E.cjs → table-ChHS4xby.cjs} +1 -1
  285. package/dist/{table-DFlJhG5E.cjs.map → table-ChHS4xby.cjs.map} +1 -1
  286. package/dist/table.cjs +1 -1
  287. package/dist/table.js +1 -1
  288. package/dist/{tabs-C7r4TqcX.js → tabs-DB5kSuGL.js} +2 -2
  289. package/dist/{tabs-C7r4TqcX.js.map → tabs-DB5kSuGL.js.map} +1 -1
  290. package/dist/{tabs-DZaLZUBy.cjs → tabs-DGmbqqBD.cjs} +1 -1
  291. package/dist/{tabs-DZaLZUBy.cjs.map → tabs-DGmbqqBD.cjs.map} +1 -1
  292. package/dist/tabs.cjs +1 -1
  293. package/dist/tabs.js +1 -1
  294. package/dist/tailwind.mixin-BHX99hgX.cjs +2 -0
  295. package/dist/{tailwind.mixin-Bh58QnlW.cjs.map → tailwind.mixin-BHX99hgX.cjs.map} +1 -1
  296. package/dist/tailwind.mixin-DIEGVcl3.js +219 -0
  297. package/dist/{tailwind.mixin-H5Pn7vSJ.js.map → tailwind.mixin-DIEGVcl3.js.map} +1 -1
  298. package/dist/teleport.cjs +1 -1
  299. package/dist/teleport.js +1 -1
  300. package/dist/{textarea-B2544vx9.cjs → textarea-CfQnghhD.cjs} +1 -1
  301. package/dist/{textarea-B2544vx9.cjs.map → textarea-CfQnghhD.cjs.map} +1 -1
  302. package/dist/{textarea-CS-KdSLz.js → textarea-O9A58OZA.js} +1 -1
  303. package/dist/{textarea-CS-KdSLz.js.map → textarea-O9A58OZA.js.map} +1 -1
  304. package/dist/textarea.cjs +1 -1
  305. package/dist/textarea.js +1 -1
  306. package/dist/{theme-DU5yXaV-.cjs → theme-BjnQjhR0.cjs} +1 -1
  307. package/dist/{theme-DU5yXaV-.cjs.map → theme-BjnQjhR0.cjs.map} +1 -1
  308. package/dist/{theme-Cq_c9IO3.js → theme-DvCKLRkt.js} +3 -3
  309. package/dist/{theme-Cq_c9IO3.js.map → theme-DvCKLRkt.js.map} +1 -1
  310. package/dist/{theme-button-OJl2ma0u.js → theme-button-ByImreDw.js} +1 -1
  311. package/dist/{theme-button-OJl2ma0u.js.map → theme-button-ByImreDw.js.map} +1 -1
  312. package/dist/{theme-button-CPujUbgV.cjs → theme-button-CaxDEneM.cjs} +1 -1
  313. package/dist/{theme-button-CPujUbgV.cjs.map → theme-button-CaxDEneM.cjs.map} +1 -1
  314. package/dist/theme-button.cjs +1 -1
  315. package/dist/theme-button.js +1 -1
  316. package/dist/theme.cjs +1 -1
  317. package/dist/theme.js +2 -2
  318. package/dist/tree.cjs +1 -1
  319. package/dist/tree.js +1 -1
  320. package/dist/typewriter.cjs +1 -1
  321. package/dist/typewriter.js +3 -3
  322. package/dist/typography.cjs +1 -1
  323. package/dist/typography.js +1 -1
  324. package/dist/visually-hidden.cjs +1 -1
  325. package/dist/visually-hidden.js +1 -1
  326. package/dist/{window-Cjv2GqSN.cjs → window-BhrSdbk2.cjs} +1 -1
  327. package/dist/{window-Cjv2GqSN.cjs.map → window-BhrSdbk2.cjs.map} +1 -1
  328. package/dist/{window-BWecg8Ih.js → window-C8kImMiI.js} +1 -1
  329. package/dist/{window-BWecg8Ih.js.map → window-C8kImMiI.js.map} +1 -1
  330. package/dist/window.cjs +1 -1
  331. package/dist/window.js +1 -1
  332. package/package.json +1 -1
  333. package/skills/schmancy/SKILL.md +1 -1
  334. package/src/qr-scanner/qr-scanner.ts +27 -2
  335. package/dist/context-CAYQh-mx.cjs +0 -1
  336. package/dist/context-D8Q66KPe.js +0 -3
  337. package/dist/tailwind.mixin-Bh58QnlW.cjs +0 -2
  338. package/dist/tailwind.mixin-H5Pn7vSJ.js +0 -219
  339. /package/dist/agent/{flow-3RrZM-e7.js → flow-CvG1fLW5.js} +0 -0
  340. /package/dist/agent/{vendor-highlight-BmnMldIa.js → vendor-highlight-Dow87ZL_.js} +0 -0
  341. /package/dist/agent/{vendor-jsqr-1wQ5xc49.js → vendor-jsqr-Bl4iAtKC.js} +0 -0
  342. /package/dist/agent/{vendor-material-color-33Mj762T.js → vendor-material-color-DcL7ZPxx.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"delay-Bu4WMQlV.cjs","names":["i","o","s","t"],"sources":["../node_modules/@lit-labs/motion/animate-controller.js","../node_modules/@lit-labs/motion/animate.js","../node_modules/@lit-labs/motion/position.js","../src/delay/delay.ts"],"sourcesContent":["const i=new WeakMap;class t{constructor(t,s){this.startPaused=!1,this.disabled=!1,this.clients=new Set,this.pendingComplete=!1,this.host=t,this.defaultOptions=s.defaultOptions||{},this.startPaused=!!s.startPaused,this.disabled=!!s.disabled,this.onComplete=s.onComplete,i.set(this.host,this)}async add(i){this.clients.add(i),this.startPaused&&i.webAnimation?.pause(),this.pendingComplete=!0,await i.finished,this.pendingComplete&&!this.isAnimating&&(this.pendingComplete=!1,this.onComplete?.())}remove(i){this.clients.delete(i)}pause(){this.clients.forEach(i=>i.webAnimation?.pause())}play(){this.clients.forEach(i=>i.webAnimation?.play())}cancel(){this.clients.forEach(i=>i.webAnimation?.cancel()),this.clients.clear()}finish(){this.clients.forEach(i=>i.webAnimation?.finish()),this.clients.clear()}togglePlay(){this.isPlaying?this.pause():this.play()}get isAnimating(){return this.clients.size>0}get isPlaying(){return Array.from(this.clients).some(i=>\"running\"===i.webAnimation?.playState)}async finished(){await Promise.all(Array.from(this.clients).map(i=>i.finished))}}export{t as AnimateController,i as controllerMap};\n//# sourceMappingURL=animate-controller.js.map\n","import{nothing as t}from\"lit/html.js\";import{directive as i,PartType as s}from\"lit/directive.js\";import{AsyncDirective as e}from\"lit/async-directive.js\";import{controllerMap as h}from\"./animate-controller.js\";export{AnimateController}from\"./animate-controller.js\";let o=0;const r=new Map,n=new WeakSet,a=()=>new Promise(t=>requestAnimationFrame(t)),c=[{transform:\"translateY(100%) scale(0)\",opacity:0}],l=[{transform:\"translateY(-100%) scale(0)\",opacity:0}],d=[{transform:\"translateX(-100%) scale(0)\",opacity:0}],u=[{transform:\"translateX(100%) scale(0)\",opacity:0}],m=[{}],f=[{opacity:0}],p=f,v=[{opacity:0},{opacity:1}],y=[{opacity:0},{opacity:.25,offset:.75},{opacity:1}],g=(t,i)=>{const s=t-i;return 0===s?void 0:s},w=(t,i)=>{const s=t/i;return 1===s?void 0:s},N={left:(t,i)=>{const s=g(t,i);return{value:s,transform:null==s||isNaN(s)?void 0:`translateX(${s}px)`}},top:(t,i)=>{const s=g(t,i);return{value:s,transform:null==s||isNaN(s)?void 0:`translateY(${s}px)`}},width:(t,i)=>{let s;0===i&&(i=1,s={width:\"1px\"});const e=w(t,i);return{value:e,overrideFrom:s,transform:null==e||isNaN(e)?void 0:`scaleX(${e})`}},height:(t,i)=>{let s;0===i&&(i=1,s={height:\"1px\"});const e=w(t,i);return{value:e,overrideFrom:s,transform:null==e||isNaN(e)?void 0:`scaleY(${e})`}}},A={duration:333,easing:\"ease-in-out\"},b=[\"left\",\"top\",\"width\",\"height\",\"opacity\",\"color\",\"background\"],j=new WeakMap;class x extends e{constructor(t){if(super(t),this.t=!1,this.i=null,this.o=null,this.h=!0,this.shouldLog=!1,t.type===s.CHILD)throw Error(\"The `animate` directive must be used in attribute position.\");this.createFinished()}createFinished(){this.resolveFinished?.(),this.finished=new Promise(t=>{this.l=t})}async resolveFinished(){this.l?.(),this.l=void 0}render(i){return t}getController(){return h.get(this.u)}isDisabled(){return this.options.disabled||this.getController()?.disabled}update(t,[i]){const s=void 0===this.u;return s&&(this.u=t.options?.host,this.u.addController(this),this.u.updateComplete.then(t=>this.t=!0),this.element=t.element,j.set(this.element,this)),this.optionsOrCallback=i,(s||\"function\"!=typeof i)&&this.m(i),this.render(i)}m(t){t=t??{};const i=this.getController();void 0!==i&&((t={...i.defaultOptions,...t}).keyframeOptions={...i.defaultOptions.keyframeOptions,...t.keyframeOptions}),t.properties??=b,this.options=t}p(){const t={},i=this.element.getBoundingClientRect(),s=getComputedStyle(this.element);return this.options.properties.forEach(e=>{const h=i[e]??(N[e]?void 0:s[e]),o=Number(h);t[e]=isNaN(o)?h+\"\":o}),t}v(){let t,i=!0;return this.options.guard&&(t=this.options.guard(),i=((t,i)=>{if(Array.isArray(t)){if(Array.isArray(i)&&i.length===t.length&&t.every((t,s)=>t===i[s]))return!1}else if(i===t)return!1;return!0})(t,this._)),this.h=this.t&&!this.isDisabled()&&!this.isAnimating()&&i&&this.element.isConnected,this.h&&(this._=Array.isArray(t)?Array.from(t):t),this.h}hostUpdate(){\"function\"==typeof this.optionsOrCallback&&this.m(this.optionsOrCallback()),this.v()&&(this.A=this.p(),this.i=this.i??this.element.parentNode,this.o=this.element.nextSibling)}async hostUpdated(){if(!this.h||!this.element.isConnected||this.options.skipInitial&&!this.isHostRendered)return;let t;this.prepare(),await a;const i=this.P(),s=this.V(this.options.keyframeOptions,i),e=this.p();if(void 0!==this.A){const{from:s,to:h}=this.O(this.A,e,i);this.log(\"measured\",[this.A,e,s,h]),t=this.calculateKeyframes(s,h)}else{const s=r.get(this.options.inId);if(s){r.delete(this.options.inId);const{from:h,to:n}=this.O(s,e,i);t=this.calculateKeyframes(h,n),t=this.options.in?[{...this.options.in[0],...t[0]},...this.options.in.slice(1),t[1]]:t,o++,t.forEach(t=>t.zIndex=o)}else this.options.in&&(t=[...this.options.in,{}])}this.animate(t,s)}resetStyles(){void 0!==this.j&&(this.element.setAttribute(\"style\",this.j??\"\"),this.j=void 0)}commitStyles(){this.j=this.element.getAttribute(\"style\"),this.webAnimation?.commitStyles(),this.webAnimation?.cancel()}reconnected(){}async disconnected(){if(!this.h)return;if(void 0!==this.options.id&&r.set(this.options.id,this.A),void 0===this.options.out)return;if(this.prepare(),await a(),this.i?.isConnected){const t=this.o&&this.o.parentNode===this.i?this.o:null;if(this.i.insertBefore(this.element,t),this.options.stabilizeOut){const t=this.p();this.log(\"stabilizing out\");const i=this.A.left-t.left,s=this.A.top-t.top;!(\"static\"===getComputedStyle(this.element).position)||0===i&&0===s||(this.element.style.position=\"relative\"),0!==i&&(this.element.style.left=i+\"px\"),0!==s&&(this.element.style.top=s+\"px\")}}const t=this.V(this.options.keyframeOptions);await this.animate(this.options.out,t),this.element.remove()}prepare(){this.createFinished()}start(){this.options.onStart?.(this)}didFinish(t){t&&this.options.onComplete?.(this),this.A=void 0,this.animatingProperties=void 0,this.frames=void 0,this.resolveFinished()}P(){const t=[];for(let i=this.element.parentNode;i;i=i?.parentNode){const s=j.get(i);s&&!s.isDisabled()&&s&&t.push(s)}return t}get isHostRendered(){const t=n.has(this.u);return t||this.u.updateComplete.then(()=>{n.add(this.u)}),t}V(t,i=this.P()){const s={...A};return i.forEach(t=>Object.assign(s,t.options.keyframeOptions)),Object.assign(s,t),s}O(t,i,s){t={...t},i={...i};const e=s.map(t=>t.animatingProperties).filter(t=>void 0!==t);let h=1,o=1;return e.length>0&&(e.forEach(t=>{t.width&&(h/=t.width),t.height&&(o/=t.height)}),void 0!==t.left&&void 0!==i.left&&(t.left=h*t.left,i.left=h*i.left),void 0!==t.top&&void 0!==i.top&&(t.top=o*t.top,i.top=o*i.top)),{from:t,to:i}}calculateKeyframes(t,i,s=!1){const e={},h={};let o=!1;const r={};for(const s in i){const n=t[s],a=i[s];if(s in N){const t=N[s];if(void 0===n||void 0===a)continue;const i=t(n,a);void 0!==i.transform&&(r[s]=i.value,o=!0,e.transform=`${e.transform??\"\"} ${i.transform}`,void 0!==i.overrideFrom&&Object.assign(e,i.overrideFrom))}else n!==a&&void 0!==n&&void 0!==a&&(o=!0,e[s]=n,h[s]=a)}return e.transformOrigin=h.transformOrigin=s?\"center center\":\"top left\",this.animatingProperties=r,o?[e,h]:void 0}async animate(t,i=this.options.keyframeOptions){this.start(),this.frames=t;let s=!1;if(!this.isAnimating()&&!this.isDisabled()&&(this.options.onFrames&&(this.frames=t=this.options.onFrames(this),this.log(\"modified frames\",t)),void 0!==t)){this.log(\"animate\",[t,i]),s=!0,this.webAnimation=this.element.animate(t,i);const e=this.getController();e?.add(this);try{await this.webAnimation.finished}catch(t){}e?.remove(this)}return this.didFinish(s),s}isAnimating(){return\"running\"===this.webAnimation?.playState||this.webAnimation?.pending}log(t,i){this.shouldLog&&!this.isDisabled()&&console.log(t,this.options.id,i)}}const F=i(x);export{x as Animate,F as animate,a as animationFrame,b as defaultCssProperties,A as defaultKeyframeOptions,p as fade,v as fadeIn,y as fadeInSlow,f as fadeOut,l as flyAbove,c as flyBelow,d as flyLeft,u as flyRight,m as none,N as transformProps};\n//# sourceMappingURL=animate.js.map\n","import{nothing as t}from\"lit/html.js\";import{directive as i,PartType as s}from\"lit/directive.js\";import{AsyncDirective as o}from\"lit/async-directive.js\";const r=[\"top\",\"right\",\"bottom\",\"left\"];class e extends o{constructor(t){if(super(t),t.type!==s.ELEMENT)throw Error(\"The `position` directive must be used in attribute position.\")}render(i,s){return t}update(t,[i,s]){return void 0===this.u&&(this.u=t.options?.host,this.u.addController(this)),this.C=t.element,this.N=i,this.S=s??[\"left\",\"top\",\"width\",\"height\"],this.render(i,s)}hostUpdated(){this.F()}F(){const t=\"function\"==typeof this.N?this.N():this.N?.value,i=t.offsetParent;if(void 0===t||!i)return;const s=t.getBoundingClientRect(),o=i.getBoundingClientRect();this.S?.forEach(t=>{const i=r.includes(t)?s[t]-o[t]:s[t];this.C.style[t]=i+\"px\"})}}const h=i(e);export{e as Position,h as position};\n//# sourceMappingURL=position.js.map\n","import { animate, fadeIn, flyAbove, flyBelow } from '@lit-labs/motion'\nimport { consume, createContext, provide } from '@lit/context'\nimport { $LitElement } from '@mixins/litElement.mixin'\nimport hashContent from '@schmancy/utils/hashContent'\nimport { html } from 'lit'\nimport { customElement, property, queryAssignedElements, state } from 'lit/decorators.js'\nimport { cache } from 'lit/directives/cache.js'\nimport { timer } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nexport const delayContext = createContext<number>('delay-context')\n\n@customElement('schmancy-delay')\nexport class SchmancyDelay extends $LitElement() {\n\t@property({ type: Number, reflect: true }) delay = 0 // Delay in milliseconds\n\t@property({ type: String }) motion = 'flyBelow' // Motion type (default: flyBelow)\n\t@state() private rendered = false // Tracks if the content is rendered\n\t@consume({ context: delayContext, subscribe: true }) parentDelay = 0 // Consumes the parent's delay value\n\t@provide({ context: delayContext }) effectiveDelay = 0 // Provides the effective delay to children\n\n\t@property({ type: Boolean }) once? = true // Only render once per session\n\n\tprivate sessionKey = '' // Unique session key\n\tprivate mutationObserver?: MutationObserver\n\n\t@queryAssignedElements({\n\t\tflatten: true,\n\t})\n\tassignedElements: HTMLElement[]\n\tfirstUpdated() {\n\t\tthis.observeSlotChanges()\n\t\tthis.updateRenderState()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.mutationObserver?.disconnect() // Clean up the observer\n\t}\n\n\tprivate observeSlotChanges() {\n\t\tconst slot = this.shadowRoot?.querySelector('slot')\n\t\tif (!slot) return\n\n\t\tthis.mutationObserver = new MutationObserver(() => {\n\t\t\t// Update session key when children change\n\t\t\tthis.sessionKey = this.generateSessionKey()\n\t\t})\n\n\t\tthis.mutationObserver.observe(slot, { childList: true, subtree: true })\n\t}\n\n\tprivate getTotalSiblingDelay(element: HTMLElement | null): number {\n\t\tif (!element || !(element instanceof HTMLElement)) return 0\n\n\t\tlet totalDelay = 0\n\t\tlet sibling = element.previousElementSibling // Start with the previous sibling\n\n\t\twhile (sibling) {\n\t\t\t// Check if the sibling is a `schmancy-delay` and add its delay\n\t\t\tif (sibling instanceof SchmancyDelay) {\n\t\t\t\ttotalDelay += sibling.delay\n\t\t\t}\n\t\t\t// Move to the previous sibling\n\t\t\tsibling = sibling.previousElementSibling\n\t\t}\n\n\t\t// Traverse up the tree and repeat for the parent node\n\t\tif (element.parentElement) {\n\t\t\ttotalDelay += this.getTotalSiblingDelay(element.parentElement)\n\t\t}\n\n\t\treturn totalDelay\n\t}\n\n\tprivate updateRenderState() {\n\t\tthis.sessionKey = this.generateSessionKey()\n\n\t\tif (this.once && sessionStorage.getItem(this.sessionKey) === 'true') {\n\t\t\t// Skip delay and render immediately if once is set and already rendered\n\t\t\tthis.rendered = true\n\t\t\treturn\n\t\t}\n\n\t\t// Calculate the effective delay (parent + self + all preceding siblings)\n\t\tconst siblingDelay = this.getTotalSiblingDelay(this)\n\t\tthis.effectiveDelay = this.delay + this.parentDelay + siblingDelay\n\n\t\t// Start the delay timer\n\t\ttimer(this.effectiveDelay)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.rendered = true // Render content after delay\n\t\t\t\tif (this.once) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsessionStorage.setItem(this.sessionKey, 'true')\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('Error saving to session storage:', error)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\tprivate generateSessionKey(): string {\n\t\tconst slotContent = this.assignedElements.map(el => el.outerHTML).join('')\n\t\treturn this.once ? hashContent(slotContent) : ''\n\t}\n\n\tprivate get motionLit(): any {\n\t\treturn this.motion === 'flyBelow' ? flyBelow : this.motion === 'flyAbove' ? flyAbove : fadeIn\n\t}\n\n\trender() {\n\t\treturn cache(\n\t\t\tthis.rendered\n\t\t\t\t? html`<div\n\t\t\t\t\t\t${animate({\n\t\t\t\t\t\t\tin: this.motionLit, // Use the provided motion type\n\t\t\t\t\t\t\tkeyframeOptions: { duration: 300, easing: 'ease-out' },\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</div>`\n\t\t\t\t: html`\n\t\t\t\t\t\t<section style=\"display: none;\">\n\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t</section>\n\t\t\t\t\t`,\n\t\t)\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-delay': SchmancyDelay\n\t}\n}\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
1
+ {"version":3,"file":"delay-DCp_QEct.cjs","names":["i","o","s","t"],"sources":["../node_modules/@lit-labs/motion/animate-controller.js","../node_modules/@lit-labs/motion/animate.js","../node_modules/@lit-labs/motion/position.js","../src/delay/delay.ts"],"sourcesContent":["const i=new WeakMap;class t{constructor(t,s){this.startPaused=!1,this.disabled=!1,this.clients=new Set,this.pendingComplete=!1,this.host=t,this.defaultOptions=s.defaultOptions||{},this.startPaused=!!s.startPaused,this.disabled=!!s.disabled,this.onComplete=s.onComplete,i.set(this.host,this)}async add(i){this.clients.add(i),this.startPaused&&i.webAnimation?.pause(),this.pendingComplete=!0,await i.finished,this.pendingComplete&&!this.isAnimating&&(this.pendingComplete=!1,this.onComplete?.())}remove(i){this.clients.delete(i)}pause(){this.clients.forEach(i=>i.webAnimation?.pause())}play(){this.clients.forEach(i=>i.webAnimation?.play())}cancel(){this.clients.forEach(i=>i.webAnimation?.cancel()),this.clients.clear()}finish(){this.clients.forEach(i=>i.webAnimation?.finish()),this.clients.clear()}togglePlay(){this.isPlaying?this.pause():this.play()}get isAnimating(){return this.clients.size>0}get isPlaying(){return Array.from(this.clients).some(i=>\"running\"===i.webAnimation?.playState)}async finished(){await Promise.all(Array.from(this.clients).map(i=>i.finished))}}export{t as AnimateController,i as controllerMap};\n//# sourceMappingURL=animate-controller.js.map\n","import{nothing as t}from\"lit/html.js\";import{directive as i,PartType as s}from\"lit/directive.js\";import{AsyncDirective as e}from\"lit/async-directive.js\";import{controllerMap as h}from\"./animate-controller.js\";export{AnimateController}from\"./animate-controller.js\";let o=0;const r=new Map,n=new WeakSet,a=()=>new Promise(t=>requestAnimationFrame(t)),c=[{transform:\"translateY(100%) scale(0)\",opacity:0}],l=[{transform:\"translateY(-100%) scale(0)\",opacity:0}],d=[{transform:\"translateX(-100%) scale(0)\",opacity:0}],u=[{transform:\"translateX(100%) scale(0)\",opacity:0}],m=[{}],f=[{opacity:0}],p=f,v=[{opacity:0},{opacity:1}],y=[{opacity:0},{opacity:.25,offset:.75},{opacity:1}],g=(t,i)=>{const s=t-i;return 0===s?void 0:s},w=(t,i)=>{const s=t/i;return 1===s?void 0:s},N={left:(t,i)=>{const s=g(t,i);return{value:s,transform:null==s||isNaN(s)?void 0:`translateX(${s}px)`}},top:(t,i)=>{const s=g(t,i);return{value:s,transform:null==s||isNaN(s)?void 0:`translateY(${s}px)`}},width:(t,i)=>{let s;0===i&&(i=1,s={width:\"1px\"});const e=w(t,i);return{value:e,overrideFrom:s,transform:null==e||isNaN(e)?void 0:`scaleX(${e})`}},height:(t,i)=>{let s;0===i&&(i=1,s={height:\"1px\"});const e=w(t,i);return{value:e,overrideFrom:s,transform:null==e||isNaN(e)?void 0:`scaleY(${e})`}}},A={duration:333,easing:\"ease-in-out\"},b=[\"left\",\"top\",\"width\",\"height\",\"opacity\",\"color\",\"background\"],j=new WeakMap;class x extends e{constructor(t){if(super(t),this.t=!1,this.i=null,this.o=null,this.h=!0,this.shouldLog=!1,t.type===s.CHILD)throw Error(\"The `animate` directive must be used in attribute position.\");this.createFinished()}createFinished(){this.resolveFinished?.(),this.finished=new Promise(t=>{this.l=t})}async resolveFinished(){this.l?.(),this.l=void 0}render(i){return t}getController(){return h.get(this.u)}isDisabled(){return this.options.disabled||this.getController()?.disabled}update(t,[i]){const s=void 0===this.u;return s&&(this.u=t.options?.host,this.u.addController(this),this.u.updateComplete.then(t=>this.t=!0),this.element=t.element,j.set(this.element,this)),this.optionsOrCallback=i,(s||\"function\"!=typeof i)&&this.m(i),this.render(i)}m(t){t=t??{};const i=this.getController();void 0!==i&&((t={...i.defaultOptions,...t}).keyframeOptions={...i.defaultOptions.keyframeOptions,...t.keyframeOptions}),t.properties??=b,this.options=t}p(){const t={},i=this.element.getBoundingClientRect(),s=getComputedStyle(this.element);return this.options.properties.forEach(e=>{const h=i[e]??(N[e]?void 0:s[e]),o=Number(h);t[e]=isNaN(o)?h+\"\":o}),t}v(){let t,i=!0;return this.options.guard&&(t=this.options.guard(),i=((t,i)=>{if(Array.isArray(t)){if(Array.isArray(i)&&i.length===t.length&&t.every((t,s)=>t===i[s]))return!1}else if(i===t)return!1;return!0})(t,this._)),this.h=this.t&&!this.isDisabled()&&!this.isAnimating()&&i&&this.element.isConnected,this.h&&(this._=Array.isArray(t)?Array.from(t):t),this.h}hostUpdate(){\"function\"==typeof this.optionsOrCallback&&this.m(this.optionsOrCallback()),this.v()&&(this.A=this.p(),this.i=this.i??this.element.parentNode,this.o=this.element.nextSibling)}async hostUpdated(){if(!this.h||!this.element.isConnected||this.options.skipInitial&&!this.isHostRendered)return;let t;this.prepare(),await a;const i=this.P(),s=this.V(this.options.keyframeOptions,i),e=this.p();if(void 0!==this.A){const{from:s,to:h}=this.O(this.A,e,i);this.log(\"measured\",[this.A,e,s,h]),t=this.calculateKeyframes(s,h)}else{const s=r.get(this.options.inId);if(s){r.delete(this.options.inId);const{from:h,to:n}=this.O(s,e,i);t=this.calculateKeyframes(h,n),t=this.options.in?[{...this.options.in[0],...t[0]},...this.options.in.slice(1),t[1]]:t,o++,t.forEach(t=>t.zIndex=o)}else this.options.in&&(t=[...this.options.in,{}])}this.animate(t,s)}resetStyles(){void 0!==this.j&&(this.element.setAttribute(\"style\",this.j??\"\"),this.j=void 0)}commitStyles(){this.j=this.element.getAttribute(\"style\"),this.webAnimation?.commitStyles(),this.webAnimation?.cancel()}reconnected(){}async disconnected(){if(!this.h)return;if(void 0!==this.options.id&&r.set(this.options.id,this.A),void 0===this.options.out)return;if(this.prepare(),await a(),this.i?.isConnected){const t=this.o&&this.o.parentNode===this.i?this.o:null;if(this.i.insertBefore(this.element,t),this.options.stabilizeOut){const t=this.p();this.log(\"stabilizing out\");const i=this.A.left-t.left,s=this.A.top-t.top;!(\"static\"===getComputedStyle(this.element).position)||0===i&&0===s||(this.element.style.position=\"relative\"),0!==i&&(this.element.style.left=i+\"px\"),0!==s&&(this.element.style.top=s+\"px\")}}const t=this.V(this.options.keyframeOptions);await this.animate(this.options.out,t),this.element.remove()}prepare(){this.createFinished()}start(){this.options.onStart?.(this)}didFinish(t){t&&this.options.onComplete?.(this),this.A=void 0,this.animatingProperties=void 0,this.frames=void 0,this.resolveFinished()}P(){const t=[];for(let i=this.element.parentNode;i;i=i?.parentNode){const s=j.get(i);s&&!s.isDisabled()&&s&&t.push(s)}return t}get isHostRendered(){const t=n.has(this.u);return t||this.u.updateComplete.then(()=>{n.add(this.u)}),t}V(t,i=this.P()){const s={...A};return i.forEach(t=>Object.assign(s,t.options.keyframeOptions)),Object.assign(s,t),s}O(t,i,s){t={...t},i={...i};const e=s.map(t=>t.animatingProperties).filter(t=>void 0!==t);let h=1,o=1;return e.length>0&&(e.forEach(t=>{t.width&&(h/=t.width),t.height&&(o/=t.height)}),void 0!==t.left&&void 0!==i.left&&(t.left=h*t.left,i.left=h*i.left),void 0!==t.top&&void 0!==i.top&&(t.top=o*t.top,i.top=o*i.top)),{from:t,to:i}}calculateKeyframes(t,i,s=!1){const e={},h={};let o=!1;const r={};for(const s in i){const n=t[s],a=i[s];if(s in N){const t=N[s];if(void 0===n||void 0===a)continue;const i=t(n,a);void 0!==i.transform&&(r[s]=i.value,o=!0,e.transform=`${e.transform??\"\"} ${i.transform}`,void 0!==i.overrideFrom&&Object.assign(e,i.overrideFrom))}else n!==a&&void 0!==n&&void 0!==a&&(o=!0,e[s]=n,h[s]=a)}return e.transformOrigin=h.transformOrigin=s?\"center center\":\"top left\",this.animatingProperties=r,o?[e,h]:void 0}async animate(t,i=this.options.keyframeOptions){this.start(),this.frames=t;let s=!1;if(!this.isAnimating()&&!this.isDisabled()&&(this.options.onFrames&&(this.frames=t=this.options.onFrames(this),this.log(\"modified frames\",t)),void 0!==t)){this.log(\"animate\",[t,i]),s=!0,this.webAnimation=this.element.animate(t,i);const e=this.getController();e?.add(this);try{await this.webAnimation.finished}catch(t){}e?.remove(this)}return this.didFinish(s),s}isAnimating(){return\"running\"===this.webAnimation?.playState||this.webAnimation?.pending}log(t,i){this.shouldLog&&!this.isDisabled()&&console.log(t,this.options.id,i)}}const F=i(x);export{x as Animate,F as animate,a as animationFrame,b as defaultCssProperties,A as defaultKeyframeOptions,p as fade,v as fadeIn,y as fadeInSlow,f as fadeOut,l as flyAbove,c as flyBelow,d as flyLeft,u as flyRight,m as none,N as transformProps};\n//# sourceMappingURL=animate.js.map\n","import{nothing as t}from\"lit/html.js\";import{directive as i,PartType as s}from\"lit/directive.js\";import{AsyncDirective as o}from\"lit/async-directive.js\";const r=[\"top\",\"right\",\"bottom\",\"left\"];class e extends o{constructor(t){if(super(t),t.type!==s.ELEMENT)throw Error(\"The `position` directive must be used in attribute position.\")}render(i,s){return t}update(t,[i,s]){return void 0===this.u&&(this.u=t.options?.host,this.u.addController(this)),this.C=t.element,this.N=i,this.S=s??[\"left\",\"top\",\"width\",\"height\"],this.render(i,s)}hostUpdated(){this.F()}F(){const t=\"function\"==typeof this.N?this.N():this.N?.value,i=t.offsetParent;if(void 0===t||!i)return;const s=t.getBoundingClientRect(),o=i.getBoundingClientRect();this.S?.forEach(t=>{const i=r.includes(t)?s[t]-o[t]:s[t];this.C.style[t]=i+\"px\"})}}const h=i(e);export{e as Position,h as position};\n//# sourceMappingURL=position.js.map\n","import { animate, fadeIn, flyAbove, flyBelow } from '@lit-labs/motion'\nimport { consume, createContext, provide } from '@lit/context'\nimport { $LitElement } from '@mixins/litElement.mixin'\nimport hashContent from '@schmancy/utils/hashContent'\nimport { html } from 'lit'\nimport { customElement, property, queryAssignedElements, state } from 'lit/decorators.js'\nimport { cache } from 'lit/directives/cache.js'\nimport { timer } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nexport const delayContext = createContext<number>('delay-context')\n\n@customElement('schmancy-delay')\nexport class SchmancyDelay extends $LitElement() {\n\t@property({ type: Number, reflect: true }) delay = 0 // Delay in milliseconds\n\t@property({ type: String }) motion = 'flyBelow' // Motion type (default: flyBelow)\n\t@state() private rendered = false // Tracks if the content is rendered\n\t@consume({ context: delayContext, subscribe: true }) parentDelay = 0 // Consumes the parent's delay value\n\t@provide({ context: delayContext }) effectiveDelay = 0 // Provides the effective delay to children\n\n\t@property({ type: Boolean }) once? = true // Only render once per session\n\n\tprivate sessionKey = '' // Unique session key\n\tprivate mutationObserver?: MutationObserver\n\n\t@queryAssignedElements({\n\t\tflatten: true,\n\t})\n\tassignedElements: HTMLElement[]\n\tfirstUpdated() {\n\t\tthis.observeSlotChanges()\n\t\tthis.updateRenderState()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.mutationObserver?.disconnect() // Clean up the observer\n\t}\n\n\tprivate observeSlotChanges() {\n\t\tconst slot = this.shadowRoot?.querySelector('slot')\n\t\tif (!slot) return\n\n\t\tthis.mutationObserver = new MutationObserver(() => {\n\t\t\t// Update session key when children change\n\t\t\tthis.sessionKey = this.generateSessionKey()\n\t\t})\n\n\t\tthis.mutationObserver.observe(slot, { childList: true, subtree: true })\n\t}\n\n\tprivate getTotalSiblingDelay(element: HTMLElement | null): number {\n\t\tif (!element || !(element instanceof HTMLElement)) return 0\n\n\t\tlet totalDelay = 0\n\t\tlet sibling = element.previousElementSibling // Start with the previous sibling\n\n\t\twhile (sibling) {\n\t\t\t// Check if the sibling is a `schmancy-delay` and add its delay\n\t\t\tif (sibling instanceof SchmancyDelay) {\n\t\t\t\ttotalDelay += sibling.delay\n\t\t\t}\n\t\t\t// Move to the previous sibling\n\t\t\tsibling = sibling.previousElementSibling\n\t\t}\n\n\t\t// Traverse up the tree and repeat for the parent node\n\t\tif (element.parentElement) {\n\t\t\ttotalDelay += this.getTotalSiblingDelay(element.parentElement)\n\t\t}\n\n\t\treturn totalDelay\n\t}\n\n\tprivate updateRenderState() {\n\t\tthis.sessionKey = this.generateSessionKey()\n\n\t\tif (this.once && sessionStorage.getItem(this.sessionKey) === 'true') {\n\t\t\t// Skip delay and render immediately if once is set and already rendered\n\t\t\tthis.rendered = true\n\t\t\treturn\n\t\t}\n\n\t\t// Calculate the effective delay (parent + self + all preceding siblings)\n\t\tconst siblingDelay = this.getTotalSiblingDelay(this)\n\t\tthis.effectiveDelay = this.delay + this.parentDelay + siblingDelay\n\n\t\t// Start the delay timer\n\t\ttimer(this.effectiveDelay)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.rendered = true // Render content after delay\n\t\t\t\tif (this.once) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsessionStorage.setItem(this.sessionKey, 'true')\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('Error saving to session storage:', error)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\tprivate generateSessionKey(): string {\n\t\tconst slotContent = this.assignedElements.map(el => el.outerHTML).join('')\n\t\treturn this.once ? hashContent(slotContent) : ''\n\t}\n\n\tprivate get motionLit(): any {\n\t\treturn this.motion === 'flyBelow' ? flyBelow : this.motion === 'flyAbove' ? flyAbove : fadeIn\n\t}\n\n\trender() {\n\t\treturn cache(\n\t\t\tthis.rendered\n\t\t\t\t? html`<div\n\t\t\t\t\t\t${animate({\n\t\t\t\t\t\t\tin: this.motionLit, // Use the provided motion type\n\t\t\t\t\t\t\tkeyframeOptions: { duration: 300, easing: 'ease-out' },\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</div>`\n\t\t\t\t: html`\n\t\t\t\t\t\t<section style=\"display: none;\">\n\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t</section>\n\t\t\t\t\t`,\n\t\t)\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-delay': SchmancyDelay\n\t}\n}\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
package/dist/delay.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./delay-Bu4WMQlV.cjs`);Object.defineProperty(exports,`SchmancyDelay`,{enumerable:!0,get:function(){return e.t}}),exports.delayContext=e.n;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./delay-DCp_QEct.cjs`);Object.defineProperty(exports,`SchmancyDelay`,{enumerable:!0,get:function(){return e.t}}),exports.delayContext=e.n;
package/dist/delay.js CHANGED
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "./delay-DwX65fSc.js";
1
+ import { n as e, t } from "./delay-Cs0i_CpQ.js";
2
2
  export { t as SchmancyDelay, e as delayContext };
@@ -1,4 +1,4 @@
1
- require(`./chunk-CncqDLb2.cjs`);const e=require(`./tailwind.mixin-Bh58QnlW.cjs`),t=require(`./decorate-F9CuyeHg.cjs`),n=require(`./surface.mixin-DxOi-xo0.cjs`);require(`./mixins.cjs`);const r=require(`./animation-CQRdLgzX.cjs`),i=require(`./reduced-motion-9RjNnhIg.cjs`),a=require(`./cursor-glow-Duw9jHmh.cjs`),o=require(`./magnetic-CVXEkYTA.cjs`);let s=require(`rxjs`),c=require(`rxjs/operators`),l=require(`lit/decorators.js`),u=require(`lit`),d=require(`lit/directives/ref.js`);var f=class extends n.t(e.t(u.css`
1
+ require(`./chunk-CncqDLb2.cjs`);const e=require(`./tailwind.mixin-BHX99hgX.cjs`),t=require(`./decorate-F9CuyeHg.cjs`),n=require(`./surface.mixin-DxOi-xo0.cjs`);require(`./mixins.cjs`);const r=require(`./animation-CQRdLgzX.cjs`),i=require(`./reduced-motion-9RjNnhIg.cjs`),a=require(`./cursor-glow-Duw9jHmh.cjs`),o=require(`./magnetic-CVXEkYTA.cjs`);let s=require(`rxjs`),c=require(`rxjs/operators`),l=require(`lit/decorators.js`),u=require(`lit`),d=require(`lit/directives/ref.js`);var f=class extends n.t(e.t(u.css`
2
2
  :host {
3
3
  display: block;
4
4
  transition: box-shadow 400ms cubic-bezier(0.34, 1.2, 0.64, 1);
@@ -1 +1 @@
1
- {"version":3,"file":"details-B8p62xmR.cjs","names":[],"sources":["../src/details/details.ts"],"sourcesContent":["import { TailwindElement, SurfaceMixin } from '@mixins/index'\nimport { css, html, LitElement, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { cursorGlow } from '../directives/cursor-glow'\nimport { magnetic } from '../directives/magnetic'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport { BehaviorSubject, fromEvent, Subscription } from 'rxjs'\nimport { distinctUntilChanged, filter, take, takeUntil, tap } from 'rxjs/operators'\nimport { SPRING_SNAPPY } from '../utils/animation.js'\nimport { reducedMotion$ } from '../directives/reduced-motion'\n\n/**\n * Expandable disclosure panel — a styled `<details>` / `<summary>` pair with animated expand + overlay options.\n *\n * @element schmancy-details\n * @summary Use for progressive-disclosure content: FAQs, collapsible settings sections, accordion-style lists. Prefer schmancy-expand for full-page accordions where only one section can be open at a time.\n * @example\n * <schmancy-details summary=\"Shipping details\">\n * <p>Order ships in 2 business days.</p>\n * </schmancy-details>\n * @platform details toggle - Wraps native `<details>`/`<summary>`. Degrades to the native element if the tag never registers — same keyboard accessibility, just no animation.\n * @fires toggle - When the open state changes (bubbles from the native `<details>`).\n */\n@customElement('schmancy-details')\nexport default class SchmancyDetails extends SurfaceMixin(\n\tTailwindElement(css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\ttransition: box-shadow 400ms cubic-bezier(0.34, 1.2, 0.64, 1);\n\t\t}\n\n\t\t:host([overlay]) {\n\t\t\tposition: relative;\n\t\t}\n\n\t\t:host([open]) {\n\t\t\tbox-shadow:\n\t\t\t\t0 2px 12px -2px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent),\n\t\t\t\t0 8px 32px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 8%, transparent);\n\t\t\tz-index: 10;\n\t\t}\n\n\t\tdetails {\n\t\t\tbackground: inherit;\n\t\t\tcolor: inherit;\n\t\t\tborder-radius: inherit;\n\t\t}\n\n\t\tsummary::-webkit-details-marker {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\tsummary {\n\t\t\tlist-style: none;\n\t\t\tcolor: inherit;\n\t\t}\n\n\t\t/*\n\t\t * Blackbird 2.1 — CSS-driven collapse/expand\n\t\t *\n\t\t * Single animation system: CSS grid transition handles height,\n\t\t * coordinated opacity fade for buttery smooth feel.\n\t\t * No competing Web Animations API on content.\n\t\t */\n\n\t\t.content-wrapper {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: 0fr;\n\t\t\toverflow: hidden;\n\t\t\topacity: 0;\n\t\t\ttransition:\n\t\t\t\tgrid-template-rows 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\topacity 250ms ease;\n\t\t}\n\n\t\t/* Spring easing when linear() is supported */\n\t\t@supports (animation-timing-function: linear(0, 1)) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition:\n\t\t\t\t\tgrid-template-rows 400ms linear(\n\t\t\t\t\t\t0, 0.006, 0.025 2.8%, 0.101 6.1%, 0.539 18.9%, 0.721 25.3%, 0.849 31.5%,\n\t\t\t\t\t\t0.937 38.1%, 0.968 41.8%, 0.991 45.7%, 1.006 50%, 1.015 54.8%,\n\t\t\t\t\t\t1.017 63.3%, 1.001\n\t\t\t\t\t),\n\t\t\t\t\topacity 250ms ease;\n\t\t\t}\n\t\t}\n\n\t\t.content-wrapper[data-open='true'] {\n\t\t\tgrid-template-rows: 1fr;\n\t\t\topacity: 1;\n\t\t}\n\n\t\t.content-inner {\n\t\t\tmin-height: 0;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t/*\n\t\t * Progressive Enhancement: ::details-content (Chrome 131+)\n\t\t *\n\t\t * When both ::details-content AND interpolate-size are supported,\n\t\t * the browser handles height animation natively — including animated\n\t\t * close via transition-behavior: allow-discrete on content-visibility.\n\t\t * The grid wrapper becomes transparent (display: contents).\n\t\t */\n\t\t@supports selector(::details-content) and (interpolate-size: allow-keywords) {\n\t\t\t:host {\n\t\t\t\tinterpolate-size: allow-keywords;\n\t\t\t}\n\n\t\t\t.content-wrapper {\n\t\t\t\tdisplay: contents;\n\t\t\t}\n\n\t\t\tdetails::details-content {\n\t\t\t\tblock-size: 0;\n\t\t\t\toverflow-y: clip;\n\t\t\t\topacity: 0;\n\t\t\t\ttransition:\n\t\t\t\t\tblock-size 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\t\topacity 250ms ease,\n\t\t\t\t\tcontent-visibility 400ms;\n\t\t\t\ttransition-behavior: allow-discrete;\n\t\t\t}\n\n\t\t\tdetails[open]::details-content {\n\t\t\t\tblock-size: auto;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t\tdetails::details-content {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t}\n\t`),\n) {\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open' as const,\n\t\tdelegatesFocus: true,\n\t}\n\n\t@property() summary = ''\n\n\t@property({ type: Boolean, reflect: true })\n\tget open() {\n\t\treturn this._open$.value\n\t}\n\tset open(value: boolean) {\n\t\tif (this._open$.value !== value) {\n\t\t\tthis._open$.next(value)\n\t\t}\n\t}\n\n\t@property({ attribute: 'indicator-placement', reflect: true })\n\tindicatorPlacement: 'start' | 'end' = 'end'\n\n\t@property({ type: Boolean, attribute: 'hide-indicator' })\n\thideIndicator = false\n\n\t@property({ type: Number, attribute: 'indicator-rotate' })\n\tindicatorRotate: number = 90\n\n\t@property({ type: Boolean, reflect: true })\n\tlocked = false\n\n\t@property({ type: Boolean, reflect: true })\n\toverlay = false\n\n\t@property({ attribute: 'summary-padding' })\n\tsummaryPadding = 'p-3'\n\n\t@property({ attribute: 'content-padding' })\n\tcontentPadding = 'p-3'\n\n\tprivate _open$ = new BehaviorSubject<boolean>(false)\n\tprivate _indicatorRef: Ref<HTMLElement> = createRef()\n\tprivate _contentRef: Ref<HTMLDivElement> = createRef()\n\tprivate _currentAnimation?: Animation\n\tprivate _indicatorIsOpen = false\n\tprivate _closing = false\n\tprivate _closeSub?: Subscription\n\n\t/** True when browser handles close animation natively via ::details-content */\n\tprivate _nativeAnim =\n\t\ttypeof CSS !== 'undefined' &&\n\t\t!!CSS.supports?.('selector(::details-content)') &&\n\t\t!!CSS.supports?.('interpolate-size', 'allow-keywords')\n\n\t/**\n\t * Lazy rendering: tracks if content has ever been opened.\n\t * Once true, content stays rendered (even when closed) for smooth animations.\n\t */\n\t@state() private _hasOpened = false\n\n\tconstructor() {\n\t\tsuper()\n\t\tthis.type = 'solid'\n\t\tthis.rounded = 'all'\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tthis._open$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(isOpen => {\n\t\t\t\t\tif (isOpen && !this._hasOpened) {\n\t\t\t\t\t\tthis._hasOpened = true\n\t\t\t\t\t}\n\t\t\t\t\tthis._animateIndicator(isOpen)\n\t\t\t\t\tthis._updateIndicatorSlot()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => this.requestUpdate())\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis._closeSub?.unsubscribe()\n\t}\n\n\trender() {\n\t\tconst isOpen = this._open$.value\n\n\t\tconst detailsClasses = this.classMap({\n\t\t\t'w-full rounded-xl transition-shadow duration-200 ease-out': true,\n\t\t\t'overflow-hidden': !this.overlay,\n\t\t\t'overflow-visible relative': this.overlay,\n\t\t})\n\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': true,\n\t\t\t'transition-colors duration-150': true,\n\t\t\t'ring-1 ring-inset ring-transparent': true,\n\t\t\t'hover:bg-surface-on/5 active:bg-surface-on/8 hover:ring-outline-variant/40': !this.locked,\n\t\t\t'focus-visible:ring-2 focus-visible:ring-primary-default/50 focus-visible:ring-offset-1': !this.locked,\n\t\t\t'cursor-pointer group': !this.locked,\n\t\t\t'cursor-default': this.locked,\n\t\t\t'flex-row': this.indicatorPlacement === 'start',\n\t\t\t'flex-row-reverse': this.indicatorPlacement === 'end',\n\t\t})\n\n\t\tconst contentClasses = this.classMap({\n\t\t\t[this.contentPadding]: true,\n\t\t\t'text-sm': true,\n\t\t\t'absolute inset-x-0 bg-surface-lowest/55 backdrop-blur-[16px] shadow-2xl rounded-b-xl z-20 border border-surface-on/10':\n\t\t\t\tthis.overlay,\n\t\t})\n\n\t\treturn html`\n\t\t\t<details ?open=${isOpen} @toggle=${this._handleToggle} class=${detailsClasses}>\n\t\t\t\t<summary ${this.locked ? '' : magnetic({ strength: 2, radius: 50 })} ${this.locked ? '' : cursorGlow({ radius: 250, intensity: 0.08 })} class=${summaryClasses} tabindex=${this.locked ? -1 : 0} @click=${this._handleSummaryClick}>\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\t${ref(this._indicatorRef)}\n\t\t\t\t\t\t\t\t\tclass=\"flex items-center justify-center w-5 h-5 rounded-full shrink-0 opacity-70 group-hover:opacity-100\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<slot name=\"indicator\" @slotchange=${this._handleIndicatorSlotChange}>\n\t\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"w-5 h-5\"\n\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<path\n\t\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\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t</slot>\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: ''}\n\n\t\t\t\t\t<span class=\"flex-1 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</summary>\n\n\t\t\t\t<div\n\t\t\t\t\t${ref(this._contentRef)}\n\t\t\t\t\tclass=\"content-wrapper\"\n\t\t\t\t\tdata-open=${isOpen && !this._closing}\n\t\t\t\t\taria-hidden=${isOpen ? 'false' : 'true'}\n\t\t\t\t>\n\t\t\t\t\t<div class=\"content-inner\">\n\t\t\t\t\t\t${this._hasOpened\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div class=${contentClasses}>\n\t\t\t\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t\t\t\t\t<slot name=\"details\"></slot>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t: nothing}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</details>\n\t\t`\n\t}\n\n\tprivate _handleSummaryClick(e: MouseEvent) {\n\t\tif ((e.target as HTMLElement).closest('[slot=\"actions\"]')) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this.locked) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this._closing) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\n\t\t// Native animated path (Chromium 131+): browser handles everything via CSS\n\t\tif (this._nativeAnim) return\n\n\t\t// Fallback: manually animate close via CSS transition, then close native details\n\t\tif (this._open$.value) {\n\t\t\te.preventDefault()\n\t\t\tthis._startClose()\n\t\t}\n\t\t// If closed, let native open happen (handled by _handleToggle)\n\t}\n\n\tprivate _handleToggle(e: Event) {\n\t\te.stopPropagation()\n\n\t\tconst ownDetails = this.shadowRoot?.querySelector('details')\n\t\tif (e.target !== ownDetails) return\n\n\t\tconst newState = ownDetails.open\n\n\t\tif (this._nativeAnim) {\n\t\t\t// Native path: handle both open and close\n\t\t\tif (this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t} else {\n\t\t\t// Fallback path: only handle OPEN (close is driven by _startClose)\n\t\t\tif (newState && this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Fallback close: trigger CSS grid+opacity transition, then close native <details>.\n\t * The CSS transition (400ms) handles the visual collapse — no WAAPI needed.\n\t */\n\tprivate _startClose() {\n\t\tthis._closing = true\n\t\tthis._closeSub?.unsubscribe()\n\n\t\t// Immediately collapse the grid wrapper via DOM attribute\n\t\tthis._contentRef.value?.setAttribute('data-open', 'false')\n\n\t\t// Animate indicator immediately\n\t\tthis._animateIndicator(false)\n\n\t\t// After CSS transition completes, close native details and update state\n\t\tconst wrapper = this._contentRef.value\n\t\tif (!wrapper) return\n\n\t\tthis._closeSub = fromEvent<TransitionEvent>(wrapper, 'transitionend').pipe(\n\t\t\tfilter(e => e.propertyName === 'grid-template-rows'),\n\t\t\ttake(1),\n\t\t\ttap(() => {\n\t\t\t\tthis._closing = false\n\t\t\t\tthis.open = false\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: false })\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\t}\n\n\tprivate _handleIndicatorSlotChange(e: Event) {\n\t\tconst slot = e.target as HTMLSlotElement\n\t\tslot.assignedElements().forEach(el => {\n\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t})\n\t}\n\n\tprivate _updateIndicatorSlot() {\n\t\tconst slot = this.shadowRoot?.querySelector('slot[name=\"indicator\"]') as HTMLSlotElement | null\n\t\tif (slot) {\n\t\t\tslot.assignedElements().forEach(el => {\n\t\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t\t})\n\t\t}\n\t}\n\n\t/** Idempotent indicator rotation — skips if already at target state */\n\tprivate _animateIndicator(isOpen: boolean) {\n\t\tif (this._indicatorIsOpen === isOpen) return\n\t\tthis._indicatorIsOpen = isOpen\n\n\t\tconst indicator = this._indicatorRef.value\n\t\tif (!indicator || reducedMotion$.value) return\n\n\t\tthis._currentAnimation?.cancel()\n\n\t\tthis._currentAnimation = 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\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-details': SchmancyDetails\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"details-BJTR16AV.cjs","names":[],"sources":["../src/details/details.ts"],"sourcesContent":["import { TailwindElement, SurfaceMixin } from '@mixins/index'\nimport { css, html, LitElement, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { cursorGlow } from '../directives/cursor-glow'\nimport { magnetic } from '../directives/magnetic'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport { BehaviorSubject, fromEvent, Subscription } from 'rxjs'\nimport { distinctUntilChanged, filter, take, takeUntil, tap } from 'rxjs/operators'\nimport { SPRING_SNAPPY } from '../utils/animation.js'\nimport { reducedMotion$ } from '../directives/reduced-motion'\n\n/**\n * Expandable disclosure panel — a styled `<details>` / `<summary>` pair with animated expand + overlay options.\n *\n * @element schmancy-details\n * @summary Use for progressive-disclosure content: FAQs, collapsible settings sections, accordion-style lists. Prefer schmancy-expand for full-page accordions where only one section can be open at a time.\n * @example\n * <schmancy-details summary=\"Shipping details\">\n * <p>Order ships in 2 business days.</p>\n * </schmancy-details>\n * @platform details toggle - Wraps native `<details>`/`<summary>`. Degrades to the native element if the tag never registers — same keyboard accessibility, just no animation.\n * @fires toggle - When the open state changes (bubbles from the native `<details>`).\n */\n@customElement('schmancy-details')\nexport default class SchmancyDetails extends SurfaceMixin(\n\tTailwindElement(css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\ttransition: box-shadow 400ms cubic-bezier(0.34, 1.2, 0.64, 1);\n\t\t}\n\n\t\t:host([overlay]) {\n\t\t\tposition: relative;\n\t\t}\n\n\t\t:host([open]) {\n\t\t\tbox-shadow:\n\t\t\t\t0 2px 12px -2px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent),\n\t\t\t\t0 8px 32px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 8%, transparent);\n\t\t\tz-index: 10;\n\t\t}\n\n\t\tdetails {\n\t\t\tbackground: inherit;\n\t\t\tcolor: inherit;\n\t\t\tborder-radius: inherit;\n\t\t}\n\n\t\tsummary::-webkit-details-marker {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\tsummary {\n\t\t\tlist-style: none;\n\t\t\tcolor: inherit;\n\t\t}\n\n\t\t/*\n\t\t * Blackbird 2.1 — CSS-driven collapse/expand\n\t\t *\n\t\t * Single animation system: CSS grid transition handles height,\n\t\t * coordinated opacity fade for buttery smooth feel.\n\t\t * No competing Web Animations API on content.\n\t\t */\n\n\t\t.content-wrapper {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: 0fr;\n\t\t\toverflow: hidden;\n\t\t\topacity: 0;\n\t\t\ttransition:\n\t\t\t\tgrid-template-rows 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\topacity 250ms ease;\n\t\t}\n\n\t\t/* Spring easing when linear() is supported */\n\t\t@supports (animation-timing-function: linear(0, 1)) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition:\n\t\t\t\t\tgrid-template-rows 400ms linear(\n\t\t\t\t\t\t0, 0.006, 0.025 2.8%, 0.101 6.1%, 0.539 18.9%, 0.721 25.3%, 0.849 31.5%,\n\t\t\t\t\t\t0.937 38.1%, 0.968 41.8%, 0.991 45.7%, 1.006 50%, 1.015 54.8%,\n\t\t\t\t\t\t1.017 63.3%, 1.001\n\t\t\t\t\t),\n\t\t\t\t\topacity 250ms ease;\n\t\t\t}\n\t\t}\n\n\t\t.content-wrapper[data-open='true'] {\n\t\t\tgrid-template-rows: 1fr;\n\t\t\topacity: 1;\n\t\t}\n\n\t\t.content-inner {\n\t\t\tmin-height: 0;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t/*\n\t\t * Progressive Enhancement: ::details-content (Chrome 131+)\n\t\t *\n\t\t * When both ::details-content AND interpolate-size are supported,\n\t\t * the browser handles height animation natively — including animated\n\t\t * close via transition-behavior: allow-discrete on content-visibility.\n\t\t * The grid wrapper becomes transparent (display: contents).\n\t\t */\n\t\t@supports selector(::details-content) and (interpolate-size: allow-keywords) {\n\t\t\t:host {\n\t\t\t\tinterpolate-size: allow-keywords;\n\t\t\t}\n\n\t\t\t.content-wrapper {\n\t\t\t\tdisplay: contents;\n\t\t\t}\n\n\t\t\tdetails::details-content {\n\t\t\t\tblock-size: 0;\n\t\t\t\toverflow-y: clip;\n\t\t\t\topacity: 0;\n\t\t\t\ttransition:\n\t\t\t\t\tblock-size 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\t\topacity 250ms ease,\n\t\t\t\t\tcontent-visibility 400ms;\n\t\t\t\ttransition-behavior: allow-discrete;\n\t\t\t}\n\n\t\t\tdetails[open]::details-content {\n\t\t\t\tblock-size: auto;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t\tdetails::details-content {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t}\n\t`),\n) {\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open' as const,\n\t\tdelegatesFocus: true,\n\t}\n\n\t@property() summary = ''\n\n\t@property({ type: Boolean, reflect: true })\n\tget open() {\n\t\treturn this._open$.value\n\t}\n\tset open(value: boolean) {\n\t\tif (this._open$.value !== value) {\n\t\t\tthis._open$.next(value)\n\t\t}\n\t}\n\n\t@property({ attribute: 'indicator-placement', reflect: true })\n\tindicatorPlacement: 'start' | 'end' = 'end'\n\n\t@property({ type: Boolean, attribute: 'hide-indicator' })\n\thideIndicator = false\n\n\t@property({ type: Number, attribute: 'indicator-rotate' })\n\tindicatorRotate: number = 90\n\n\t@property({ type: Boolean, reflect: true })\n\tlocked = false\n\n\t@property({ type: Boolean, reflect: true })\n\toverlay = false\n\n\t@property({ attribute: 'summary-padding' })\n\tsummaryPadding = 'p-3'\n\n\t@property({ attribute: 'content-padding' })\n\tcontentPadding = 'p-3'\n\n\tprivate _open$ = new BehaviorSubject<boolean>(false)\n\tprivate _indicatorRef: Ref<HTMLElement> = createRef()\n\tprivate _contentRef: Ref<HTMLDivElement> = createRef()\n\tprivate _currentAnimation?: Animation\n\tprivate _indicatorIsOpen = false\n\tprivate _closing = false\n\tprivate _closeSub?: Subscription\n\n\t/** True when browser handles close animation natively via ::details-content */\n\tprivate _nativeAnim =\n\t\ttypeof CSS !== 'undefined' &&\n\t\t!!CSS.supports?.('selector(::details-content)') &&\n\t\t!!CSS.supports?.('interpolate-size', 'allow-keywords')\n\n\t/**\n\t * Lazy rendering: tracks if content has ever been opened.\n\t * Once true, content stays rendered (even when closed) for smooth animations.\n\t */\n\t@state() private _hasOpened = false\n\n\tconstructor() {\n\t\tsuper()\n\t\tthis.type = 'solid'\n\t\tthis.rounded = 'all'\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tthis._open$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(isOpen => {\n\t\t\t\t\tif (isOpen && !this._hasOpened) {\n\t\t\t\t\t\tthis._hasOpened = true\n\t\t\t\t\t}\n\t\t\t\t\tthis._animateIndicator(isOpen)\n\t\t\t\t\tthis._updateIndicatorSlot()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => this.requestUpdate())\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis._closeSub?.unsubscribe()\n\t}\n\n\trender() {\n\t\tconst isOpen = this._open$.value\n\n\t\tconst detailsClasses = this.classMap({\n\t\t\t'w-full rounded-xl transition-shadow duration-200 ease-out': true,\n\t\t\t'overflow-hidden': !this.overlay,\n\t\t\t'overflow-visible relative': this.overlay,\n\t\t})\n\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': true,\n\t\t\t'transition-colors duration-150': true,\n\t\t\t'ring-1 ring-inset ring-transparent': true,\n\t\t\t'hover:bg-surface-on/5 active:bg-surface-on/8 hover:ring-outline-variant/40': !this.locked,\n\t\t\t'focus-visible:ring-2 focus-visible:ring-primary-default/50 focus-visible:ring-offset-1': !this.locked,\n\t\t\t'cursor-pointer group': !this.locked,\n\t\t\t'cursor-default': this.locked,\n\t\t\t'flex-row': this.indicatorPlacement === 'start',\n\t\t\t'flex-row-reverse': this.indicatorPlacement === 'end',\n\t\t})\n\n\t\tconst contentClasses = this.classMap({\n\t\t\t[this.contentPadding]: true,\n\t\t\t'text-sm': true,\n\t\t\t'absolute inset-x-0 bg-surface-lowest/55 backdrop-blur-[16px] shadow-2xl rounded-b-xl z-20 border border-surface-on/10':\n\t\t\t\tthis.overlay,\n\t\t})\n\n\t\treturn html`\n\t\t\t<details ?open=${isOpen} @toggle=${this._handleToggle} class=${detailsClasses}>\n\t\t\t\t<summary ${this.locked ? '' : magnetic({ strength: 2, radius: 50 })} ${this.locked ? '' : cursorGlow({ radius: 250, intensity: 0.08 })} class=${summaryClasses} tabindex=${this.locked ? -1 : 0} @click=${this._handleSummaryClick}>\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\t${ref(this._indicatorRef)}\n\t\t\t\t\t\t\t\t\tclass=\"flex items-center justify-center w-5 h-5 rounded-full shrink-0 opacity-70 group-hover:opacity-100\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<slot name=\"indicator\" @slotchange=${this._handleIndicatorSlotChange}>\n\t\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"w-5 h-5\"\n\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<path\n\t\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\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t</slot>\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: ''}\n\n\t\t\t\t\t<span class=\"flex-1 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</summary>\n\n\t\t\t\t<div\n\t\t\t\t\t${ref(this._contentRef)}\n\t\t\t\t\tclass=\"content-wrapper\"\n\t\t\t\t\tdata-open=${isOpen && !this._closing}\n\t\t\t\t\taria-hidden=${isOpen ? 'false' : 'true'}\n\t\t\t\t>\n\t\t\t\t\t<div class=\"content-inner\">\n\t\t\t\t\t\t${this._hasOpened\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div class=${contentClasses}>\n\t\t\t\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t\t\t\t\t<slot name=\"details\"></slot>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t: nothing}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</details>\n\t\t`\n\t}\n\n\tprivate _handleSummaryClick(e: MouseEvent) {\n\t\tif ((e.target as HTMLElement).closest('[slot=\"actions\"]')) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this.locked) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this._closing) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\n\t\t// Native animated path (Chromium 131+): browser handles everything via CSS\n\t\tif (this._nativeAnim) return\n\n\t\t// Fallback: manually animate close via CSS transition, then close native details\n\t\tif (this._open$.value) {\n\t\t\te.preventDefault()\n\t\t\tthis._startClose()\n\t\t}\n\t\t// If closed, let native open happen (handled by _handleToggle)\n\t}\n\n\tprivate _handleToggle(e: Event) {\n\t\te.stopPropagation()\n\n\t\tconst ownDetails = this.shadowRoot?.querySelector('details')\n\t\tif (e.target !== ownDetails) return\n\n\t\tconst newState = ownDetails.open\n\n\t\tif (this._nativeAnim) {\n\t\t\t// Native path: handle both open and close\n\t\t\tif (this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t} else {\n\t\t\t// Fallback path: only handle OPEN (close is driven by _startClose)\n\t\t\tif (newState && this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Fallback close: trigger CSS grid+opacity transition, then close native <details>.\n\t * The CSS transition (400ms) handles the visual collapse — no WAAPI needed.\n\t */\n\tprivate _startClose() {\n\t\tthis._closing = true\n\t\tthis._closeSub?.unsubscribe()\n\n\t\t// Immediately collapse the grid wrapper via DOM attribute\n\t\tthis._contentRef.value?.setAttribute('data-open', 'false')\n\n\t\t// Animate indicator immediately\n\t\tthis._animateIndicator(false)\n\n\t\t// After CSS transition completes, close native details and update state\n\t\tconst wrapper = this._contentRef.value\n\t\tif (!wrapper) return\n\n\t\tthis._closeSub = fromEvent<TransitionEvent>(wrapper, 'transitionend').pipe(\n\t\t\tfilter(e => e.propertyName === 'grid-template-rows'),\n\t\t\ttake(1),\n\t\t\ttap(() => {\n\t\t\t\tthis._closing = false\n\t\t\t\tthis.open = false\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: false })\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\t}\n\n\tprivate _handleIndicatorSlotChange(e: Event) {\n\t\tconst slot = e.target as HTMLSlotElement\n\t\tslot.assignedElements().forEach(el => {\n\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t})\n\t}\n\n\tprivate _updateIndicatorSlot() {\n\t\tconst slot = this.shadowRoot?.querySelector('slot[name=\"indicator\"]') as HTMLSlotElement | null\n\t\tif (slot) {\n\t\t\tslot.assignedElements().forEach(el => {\n\t\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t\t})\n\t\t}\n\t}\n\n\t/** Idempotent indicator rotation — skips if already at target state */\n\tprivate _animateIndicator(isOpen: boolean) {\n\t\tif (this._indicatorIsOpen === isOpen) return\n\t\tthis._indicatorIsOpen = isOpen\n\n\t\tconst indicator = this._indicatorRef.value\n\t\tif (!indicator || reducedMotion$.value) return\n\n\t\tthis._currentAnimation?.cancel()\n\n\t\tthis._currentAnimation = 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\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-details': SchmancyDetails\n\t}\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./tailwind.mixin-H5Pn7vSJ.js";
1
+ import { t as e } from "./tailwind.mixin-DIEGVcl3.js";
2
2
  import { t } from "./decorate-D_utPUsC.js";
3
3
  import { t as n } from "./surface.mixin-DqMwoddO.js";
4
4
  import "./mixins.js";
@@ -1 +1 @@
1
- {"version":3,"file":"details-CCW52lzz.js","names":[],"sources":["../src/details/details.ts"],"sourcesContent":["import { TailwindElement, SurfaceMixin } from '@mixins/index'\nimport { css, html, LitElement, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { cursorGlow } from '../directives/cursor-glow'\nimport { magnetic } from '../directives/magnetic'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport { BehaviorSubject, fromEvent, Subscription } from 'rxjs'\nimport { distinctUntilChanged, filter, take, takeUntil, tap } from 'rxjs/operators'\nimport { SPRING_SNAPPY } from '../utils/animation.js'\nimport { reducedMotion$ } from '../directives/reduced-motion'\n\n/**\n * Expandable disclosure panel — a styled `<details>` / `<summary>` pair with animated expand + overlay options.\n *\n * @element schmancy-details\n * @summary Use for progressive-disclosure content: FAQs, collapsible settings sections, accordion-style lists. Prefer schmancy-expand for full-page accordions where only one section can be open at a time.\n * @example\n * <schmancy-details summary=\"Shipping details\">\n * <p>Order ships in 2 business days.</p>\n * </schmancy-details>\n * @platform details toggle - Wraps native `<details>`/`<summary>`. Degrades to the native element if the tag never registers — same keyboard accessibility, just no animation.\n * @fires toggle - When the open state changes (bubbles from the native `<details>`).\n */\n@customElement('schmancy-details')\nexport default class SchmancyDetails extends SurfaceMixin(\n\tTailwindElement(css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\ttransition: box-shadow 400ms cubic-bezier(0.34, 1.2, 0.64, 1);\n\t\t}\n\n\t\t:host([overlay]) {\n\t\t\tposition: relative;\n\t\t}\n\n\t\t:host([open]) {\n\t\t\tbox-shadow:\n\t\t\t\t0 2px 12px -2px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent),\n\t\t\t\t0 8px 32px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 8%, transparent);\n\t\t\tz-index: 10;\n\t\t}\n\n\t\tdetails {\n\t\t\tbackground: inherit;\n\t\t\tcolor: inherit;\n\t\t\tborder-radius: inherit;\n\t\t}\n\n\t\tsummary::-webkit-details-marker {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\tsummary {\n\t\t\tlist-style: none;\n\t\t\tcolor: inherit;\n\t\t}\n\n\t\t/*\n\t\t * Blackbird 2.1 — CSS-driven collapse/expand\n\t\t *\n\t\t * Single animation system: CSS grid transition handles height,\n\t\t * coordinated opacity fade for buttery smooth feel.\n\t\t * No competing Web Animations API on content.\n\t\t */\n\n\t\t.content-wrapper {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: 0fr;\n\t\t\toverflow: hidden;\n\t\t\topacity: 0;\n\t\t\ttransition:\n\t\t\t\tgrid-template-rows 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\topacity 250ms ease;\n\t\t}\n\n\t\t/* Spring easing when linear() is supported */\n\t\t@supports (animation-timing-function: linear(0, 1)) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition:\n\t\t\t\t\tgrid-template-rows 400ms linear(\n\t\t\t\t\t\t0, 0.006, 0.025 2.8%, 0.101 6.1%, 0.539 18.9%, 0.721 25.3%, 0.849 31.5%,\n\t\t\t\t\t\t0.937 38.1%, 0.968 41.8%, 0.991 45.7%, 1.006 50%, 1.015 54.8%,\n\t\t\t\t\t\t1.017 63.3%, 1.001\n\t\t\t\t\t),\n\t\t\t\t\topacity 250ms ease;\n\t\t\t}\n\t\t}\n\n\t\t.content-wrapper[data-open='true'] {\n\t\t\tgrid-template-rows: 1fr;\n\t\t\topacity: 1;\n\t\t}\n\n\t\t.content-inner {\n\t\t\tmin-height: 0;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t/*\n\t\t * Progressive Enhancement: ::details-content (Chrome 131+)\n\t\t *\n\t\t * When both ::details-content AND interpolate-size are supported,\n\t\t * the browser handles height animation natively — including animated\n\t\t * close via transition-behavior: allow-discrete on content-visibility.\n\t\t * The grid wrapper becomes transparent (display: contents).\n\t\t */\n\t\t@supports selector(::details-content) and (interpolate-size: allow-keywords) {\n\t\t\t:host {\n\t\t\t\tinterpolate-size: allow-keywords;\n\t\t\t}\n\n\t\t\t.content-wrapper {\n\t\t\t\tdisplay: contents;\n\t\t\t}\n\n\t\t\tdetails::details-content {\n\t\t\t\tblock-size: 0;\n\t\t\t\toverflow-y: clip;\n\t\t\t\topacity: 0;\n\t\t\t\ttransition:\n\t\t\t\t\tblock-size 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\t\topacity 250ms ease,\n\t\t\t\t\tcontent-visibility 400ms;\n\t\t\t\ttransition-behavior: allow-discrete;\n\t\t\t}\n\n\t\t\tdetails[open]::details-content {\n\t\t\t\tblock-size: auto;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t\tdetails::details-content {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t}\n\t`),\n) {\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open' as const,\n\t\tdelegatesFocus: true,\n\t}\n\n\t@property() summary = ''\n\n\t@property({ type: Boolean, reflect: true })\n\tget open() {\n\t\treturn this._open$.value\n\t}\n\tset open(value: boolean) {\n\t\tif (this._open$.value !== value) {\n\t\t\tthis._open$.next(value)\n\t\t}\n\t}\n\n\t@property({ attribute: 'indicator-placement', reflect: true })\n\tindicatorPlacement: 'start' | 'end' = 'end'\n\n\t@property({ type: Boolean, attribute: 'hide-indicator' })\n\thideIndicator = false\n\n\t@property({ type: Number, attribute: 'indicator-rotate' })\n\tindicatorRotate: number = 90\n\n\t@property({ type: Boolean, reflect: true })\n\tlocked = false\n\n\t@property({ type: Boolean, reflect: true })\n\toverlay = false\n\n\t@property({ attribute: 'summary-padding' })\n\tsummaryPadding = 'p-3'\n\n\t@property({ attribute: 'content-padding' })\n\tcontentPadding = 'p-3'\n\n\tprivate _open$ = new BehaviorSubject<boolean>(false)\n\tprivate _indicatorRef: Ref<HTMLElement> = createRef()\n\tprivate _contentRef: Ref<HTMLDivElement> = createRef()\n\tprivate _currentAnimation?: Animation\n\tprivate _indicatorIsOpen = false\n\tprivate _closing = false\n\tprivate _closeSub?: Subscription\n\n\t/** True when browser handles close animation natively via ::details-content */\n\tprivate _nativeAnim =\n\t\ttypeof CSS !== 'undefined' &&\n\t\t!!CSS.supports?.('selector(::details-content)') &&\n\t\t!!CSS.supports?.('interpolate-size', 'allow-keywords')\n\n\t/**\n\t * Lazy rendering: tracks if content has ever been opened.\n\t * Once true, content stays rendered (even when closed) for smooth animations.\n\t */\n\t@state() private _hasOpened = false\n\n\tconstructor() {\n\t\tsuper()\n\t\tthis.type = 'solid'\n\t\tthis.rounded = 'all'\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tthis._open$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(isOpen => {\n\t\t\t\t\tif (isOpen && !this._hasOpened) {\n\t\t\t\t\t\tthis._hasOpened = true\n\t\t\t\t\t}\n\t\t\t\t\tthis._animateIndicator(isOpen)\n\t\t\t\t\tthis._updateIndicatorSlot()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => this.requestUpdate())\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis._closeSub?.unsubscribe()\n\t}\n\n\trender() {\n\t\tconst isOpen = this._open$.value\n\n\t\tconst detailsClasses = this.classMap({\n\t\t\t'w-full rounded-xl transition-shadow duration-200 ease-out': true,\n\t\t\t'overflow-hidden': !this.overlay,\n\t\t\t'overflow-visible relative': this.overlay,\n\t\t})\n\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': true,\n\t\t\t'transition-colors duration-150': true,\n\t\t\t'ring-1 ring-inset ring-transparent': true,\n\t\t\t'hover:bg-surface-on/5 active:bg-surface-on/8 hover:ring-outline-variant/40': !this.locked,\n\t\t\t'focus-visible:ring-2 focus-visible:ring-primary-default/50 focus-visible:ring-offset-1': !this.locked,\n\t\t\t'cursor-pointer group': !this.locked,\n\t\t\t'cursor-default': this.locked,\n\t\t\t'flex-row': this.indicatorPlacement === 'start',\n\t\t\t'flex-row-reverse': this.indicatorPlacement === 'end',\n\t\t})\n\n\t\tconst contentClasses = this.classMap({\n\t\t\t[this.contentPadding]: true,\n\t\t\t'text-sm': true,\n\t\t\t'absolute inset-x-0 bg-surface-lowest/55 backdrop-blur-[16px] shadow-2xl rounded-b-xl z-20 border border-surface-on/10':\n\t\t\t\tthis.overlay,\n\t\t})\n\n\t\treturn html`\n\t\t\t<details ?open=${isOpen} @toggle=${this._handleToggle} class=${detailsClasses}>\n\t\t\t\t<summary ${this.locked ? '' : magnetic({ strength: 2, radius: 50 })} ${this.locked ? '' : cursorGlow({ radius: 250, intensity: 0.08 })} class=${summaryClasses} tabindex=${this.locked ? -1 : 0} @click=${this._handleSummaryClick}>\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\t${ref(this._indicatorRef)}\n\t\t\t\t\t\t\t\t\tclass=\"flex items-center justify-center w-5 h-5 rounded-full shrink-0 opacity-70 group-hover:opacity-100\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<slot name=\"indicator\" @slotchange=${this._handleIndicatorSlotChange}>\n\t\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"w-5 h-5\"\n\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<path\n\t\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\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t</slot>\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: ''}\n\n\t\t\t\t\t<span class=\"flex-1 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</summary>\n\n\t\t\t\t<div\n\t\t\t\t\t${ref(this._contentRef)}\n\t\t\t\t\tclass=\"content-wrapper\"\n\t\t\t\t\tdata-open=${isOpen && !this._closing}\n\t\t\t\t\taria-hidden=${isOpen ? 'false' : 'true'}\n\t\t\t\t>\n\t\t\t\t\t<div class=\"content-inner\">\n\t\t\t\t\t\t${this._hasOpened\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div class=${contentClasses}>\n\t\t\t\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t\t\t\t\t<slot name=\"details\"></slot>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t: nothing}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</details>\n\t\t`\n\t}\n\n\tprivate _handleSummaryClick(e: MouseEvent) {\n\t\tif ((e.target as HTMLElement).closest('[slot=\"actions\"]')) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this.locked) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this._closing) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\n\t\t// Native animated path (Chromium 131+): browser handles everything via CSS\n\t\tif (this._nativeAnim) return\n\n\t\t// Fallback: manually animate close via CSS transition, then close native details\n\t\tif (this._open$.value) {\n\t\t\te.preventDefault()\n\t\t\tthis._startClose()\n\t\t}\n\t\t// If closed, let native open happen (handled by _handleToggle)\n\t}\n\n\tprivate _handleToggle(e: Event) {\n\t\te.stopPropagation()\n\n\t\tconst ownDetails = this.shadowRoot?.querySelector('details')\n\t\tif (e.target !== ownDetails) return\n\n\t\tconst newState = ownDetails.open\n\n\t\tif (this._nativeAnim) {\n\t\t\t// Native path: handle both open and close\n\t\t\tif (this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t} else {\n\t\t\t// Fallback path: only handle OPEN (close is driven by _startClose)\n\t\t\tif (newState && this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Fallback close: trigger CSS grid+opacity transition, then close native <details>.\n\t * The CSS transition (400ms) handles the visual collapse — no WAAPI needed.\n\t */\n\tprivate _startClose() {\n\t\tthis._closing = true\n\t\tthis._closeSub?.unsubscribe()\n\n\t\t// Immediately collapse the grid wrapper via DOM attribute\n\t\tthis._contentRef.value?.setAttribute('data-open', 'false')\n\n\t\t// Animate indicator immediately\n\t\tthis._animateIndicator(false)\n\n\t\t// After CSS transition completes, close native details and update state\n\t\tconst wrapper = this._contentRef.value\n\t\tif (!wrapper) return\n\n\t\tthis._closeSub = fromEvent<TransitionEvent>(wrapper, 'transitionend').pipe(\n\t\t\tfilter(e => e.propertyName === 'grid-template-rows'),\n\t\t\ttake(1),\n\t\t\ttap(() => {\n\t\t\t\tthis._closing = false\n\t\t\t\tthis.open = false\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: false })\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\t}\n\n\tprivate _handleIndicatorSlotChange(e: Event) {\n\t\tconst slot = e.target as HTMLSlotElement\n\t\tslot.assignedElements().forEach(el => {\n\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t})\n\t}\n\n\tprivate _updateIndicatorSlot() {\n\t\tconst slot = this.shadowRoot?.querySelector('slot[name=\"indicator\"]') as HTMLSlotElement | null\n\t\tif (slot) {\n\t\t\tslot.assignedElements().forEach(el => {\n\t\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t\t})\n\t\t}\n\t}\n\n\t/** Idempotent indicator rotation — skips if already at target state */\n\tprivate _animateIndicator(isOpen: boolean) {\n\t\tif (this._indicatorIsOpen === isOpen) return\n\t\tthis._indicatorIsOpen = isOpen\n\n\t\tconst indicator = this._indicatorRef.value\n\t\tif (!indicator || reducedMotion$.value) return\n\n\t\tthis._currentAnimation?.cancel()\n\n\t\tthis._currentAnimation = 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\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-details': SchmancyDetails\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"details-CBoXUDlQ.js","names":[],"sources":["../src/details/details.ts"],"sourcesContent":["import { TailwindElement, SurfaceMixin } from '@mixins/index'\nimport { css, html, LitElement, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { cursorGlow } from '../directives/cursor-glow'\nimport { magnetic } from '../directives/magnetic'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport { BehaviorSubject, fromEvent, Subscription } from 'rxjs'\nimport { distinctUntilChanged, filter, take, takeUntil, tap } from 'rxjs/operators'\nimport { SPRING_SNAPPY } from '../utils/animation.js'\nimport { reducedMotion$ } from '../directives/reduced-motion'\n\n/**\n * Expandable disclosure panel — a styled `<details>` / `<summary>` pair with animated expand + overlay options.\n *\n * @element schmancy-details\n * @summary Use for progressive-disclosure content: FAQs, collapsible settings sections, accordion-style lists. Prefer schmancy-expand for full-page accordions where only one section can be open at a time.\n * @example\n * <schmancy-details summary=\"Shipping details\">\n * <p>Order ships in 2 business days.</p>\n * </schmancy-details>\n * @platform details toggle - Wraps native `<details>`/`<summary>`. Degrades to the native element if the tag never registers — same keyboard accessibility, just no animation.\n * @fires toggle - When the open state changes (bubbles from the native `<details>`).\n */\n@customElement('schmancy-details')\nexport default class SchmancyDetails extends SurfaceMixin(\n\tTailwindElement(css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\ttransition: box-shadow 400ms cubic-bezier(0.34, 1.2, 0.64, 1);\n\t\t}\n\n\t\t:host([overlay]) {\n\t\t\tposition: relative;\n\t\t}\n\n\t\t:host([open]) {\n\t\t\tbox-shadow:\n\t\t\t\t0 2px 12px -2px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent),\n\t\t\t\t0 8px 32px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 8%, transparent);\n\t\t\tz-index: 10;\n\t\t}\n\n\t\tdetails {\n\t\t\tbackground: inherit;\n\t\t\tcolor: inherit;\n\t\t\tborder-radius: inherit;\n\t\t}\n\n\t\tsummary::-webkit-details-marker {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\tsummary {\n\t\t\tlist-style: none;\n\t\t\tcolor: inherit;\n\t\t}\n\n\t\t/*\n\t\t * Blackbird 2.1 — CSS-driven collapse/expand\n\t\t *\n\t\t * Single animation system: CSS grid transition handles height,\n\t\t * coordinated opacity fade for buttery smooth feel.\n\t\t * No competing Web Animations API on content.\n\t\t */\n\n\t\t.content-wrapper {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: 0fr;\n\t\t\toverflow: hidden;\n\t\t\topacity: 0;\n\t\t\ttransition:\n\t\t\t\tgrid-template-rows 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\topacity 250ms ease;\n\t\t}\n\n\t\t/* Spring easing when linear() is supported */\n\t\t@supports (animation-timing-function: linear(0, 1)) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition:\n\t\t\t\t\tgrid-template-rows 400ms linear(\n\t\t\t\t\t\t0, 0.006, 0.025 2.8%, 0.101 6.1%, 0.539 18.9%, 0.721 25.3%, 0.849 31.5%,\n\t\t\t\t\t\t0.937 38.1%, 0.968 41.8%, 0.991 45.7%, 1.006 50%, 1.015 54.8%,\n\t\t\t\t\t\t1.017 63.3%, 1.001\n\t\t\t\t\t),\n\t\t\t\t\topacity 250ms ease;\n\t\t\t}\n\t\t}\n\n\t\t.content-wrapper[data-open='true'] {\n\t\t\tgrid-template-rows: 1fr;\n\t\t\topacity: 1;\n\t\t}\n\n\t\t.content-inner {\n\t\t\tmin-height: 0;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t/*\n\t\t * Progressive Enhancement: ::details-content (Chrome 131+)\n\t\t *\n\t\t * When both ::details-content AND interpolate-size are supported,\n\t\t * the browser handles height animation natively — including animated\n\t\t * close via transition-behavior: allow-discrete on content-visibility.\n\t\t * The grid wrapper becomes transparent (display: contents).\n\t\t */\n\t\t@supports selector(::details-content) and (interpolate-size: allow-keywords) {\n\t\t\t:host {\n\t\t\t\tinterpolate-size: allow-keywords;\n\t\t\t}\n\n\t\t\t.content-wrapper {\n\t\t\t\tdisplay: contents;\n\t\t\t}\n\n\t\t\tdetails::details-content {\n\t\t\t\tblock-size: 0;\n\t\t\t\toverflow-y: clip;\n\t\t\t\topacity: 0;\n\t\t\t\ttransition:\n\t\t\t\t\tblock-size 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\t\topacity 250ms ease,\n\t\t\t\t\tcontent-visibility 400ms;\n\t\t\t\ttransition-behavior: allow-discrete;\n\t\t\t}\n\n\t\t\tdetails[open]::details-content {\n\t\t\t\tblock-size: auto;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t\tdetails::details-content {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t}\n\t`),\n) {\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open' as const,\n\t\tdelegatesFocus: true,\n\t}\n\n\t@property() summary = ''\n\n\t@property({ type: Boolean, reflect: true })\n\tget open() {\n\t\treturn this._open$.value\n\t}\n\tset open(value: boolean) {\n\t\tif (this._open$.value !== value) {\n\t\t\tthis._open$.next(value)\n\t\t}\n\t}\n\n\t@property({ attribute: 'indicator-placement', reflect: true })\n\tindicatorPlacement: 'start' | 'end' = 'end'\n\n\t@property({ type: Boolean, attribute: 'hide-indicator' })\n\thideIndicator = false\n\n\t@property({ type: Number, attribute: 'indicator-rotate' })\n\tindicatorRotate: number = 90\n\n\t@property({ type: Boolean, reflect: true })\n\tlocked = false\n\n\t@property({ type: Boolean, reflect: true })\n\toverlay = false\n\n\t@property({ attribute: 'summary-padding' })\n\tsummaryPadding = 'p-3'\n\n\t@property({ attribute: 'content-padding' })\n\tcontentPadding = 'p-3'\n\n\tprivate _open$ = new BehaviorSubject<boolean>(false)\n\tprivate _indicatorRef: Ref<HTMLElement> = createRef()\n\tprivate _contentRef: Ref<HTMLDivElement> = createRef()\n\tprivate _currentAnimation?: Animation\n\tprivate _indicatorIsOpen = false\n\tprivate _closing = false\n\tprivate _closeSub?: Subscription\n\n\t/** True when browser handles close animation natively via ::details-content */\n\tprivate _nativeAnim =\n\t\ttypeof CSS !== 'undefined' &&\n\t\t!!CSS.supports?.('selector(::details-content)') &&\n\t\t!!CSS.supports?.('interpolate-size', 'allow-keywords')\n\n\t/**\n\t * Lazy rendering: tracks if content has ever been opened.\n\t * Once true, content stays rendered (even when closed) for smooth animations.\n\t */\n\t@state() private _hasOpened = false\n\n\tconstructor() {\n\t\tsuper()\n\t\tthis.type = 'solid'\n\t\tthis.rounded = 'all'\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tthis._open$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(isOpen => {\n\t\t\t\t\tif (isOpen && !this._hasOpened) {\n\t\t\t\t\t\tthis._hasOpened = true\n\t\t\t\t\t}\n\t\t\t\t\tthis._animateIndicator(isOpen)\n\t\t\t\t\tthis._updateIndicatorSlot()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => this.requestUpdate())\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis._closeSub?.unsubscribe()\n\t}\n\n\trender() {\n\t\tconst isOpen = this._open$.value\n\n\t\tconst detailsClasses = this.classMap({\n\t\t\t'w-full rounded-xl transition-shadow duration-200 ease-out': true,\n\t\t\t'overflow-hidden': !this.overlay,\n\t\t\t'overflow-visible relative': this.overlay,\n\t\t})\n\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': true,\n\t\t\t'transition-colors duration-150': true,\n\t\t\t'ring-1 ring-inset ring-transparent': true,\n\t\t\t'hover:bg-surface-on/5 active:bg-surface-on/8 hover:ring-outline-variant/40': !this.locked,\n\t\t\t'focus-visible:ring-2 focus-visible:ring-primary-default/50 focus-visible:ring-offset-1': !this.locked,\n\t\t\t'cursor-pointer group': !this.locked,\n\t\t\t'cursor-default': this.locked,\n\t\t\t'flex-row': this.indicatorPlacement === 'start',\n\t\t\t'flex-row-reverse': this.indicatorPlacement === 'end',\n\t\t})\n\n\t\tconst contentClasses = this.classMap({\n\t\t\t[this.contentPadding]: true,\n\t\t\t'text-sm': true,\n\t\t\t'absolute inset-x-0 bg-surface-lowest/55 backdrop-blur-[16px] shadow-2xl rounded-b-xl z-20 border border-surface-on/10':\n\t\t\t\tthis.overlay,\n\t\t})\n\n\t\treturn html`\n\t\t\t<details ?open=${isOpen} @toggle=${this._handleToggle} class=${detailsClasses}>\n\t\t\t\t<summary ${this.locked ? '' : magnetic({ strength: 2, radius: 50 })} ${this.locked ? '' : cursorGlow({ radius: 250, intensity: 0.08 })} class=${summaryClasses} tabindex=${this.locked ? -1 : 0} @click=${this._handleSummaryClick}>\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\t${ref(this._indicatorRef)}\n\t\t\t\t\t\t\t\t\tclass=\"flex items-center justify-center w-5 h-5 rounded-full shrink-0 opacity-70 group-hover:opacity-100\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<slot name=\"indicator\" @slotchange=${this._handleIndicatorSlotChange}>\n\t\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"w-5 h-5\"\n\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<path\n\t\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\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t</slot>\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: ''}\n\n\t\t\t\t\t<span class=\"flex-1 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</summary>\n\n\t\t\t\t<div\n\t\t\t\t\t${ref(this._contentRef)}\n\t\t\t\t\tclass=\"content-wrapper\"\n\t\t\t\t\tdata-open=${isOpen && !this._closing}\n\t\t\t\t\taria-hidden=${isOpen ? 'false' : 'true'}\n\t\t\t\t>\n\t\t\t\t\t<div class=\"content-inner\">\n\t\t\t\t\t\t${this._hasOpened\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div class=${contentClasses}>\n\t\t\t\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t\t\t\t\t<slot name=\"details\"></slot>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t: nothing}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</details>\n\t\t`\n\t}\n\n\tprivate _handleSummaryClick(e: MouseEvent) {\n\t\tif ((e.target as HTMLElement).closest('[slot=\"actions\"]')) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this.locked) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this._closing) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\n\t\t// Native animated path (Chromium 131+): browser handles everything via CSS\n\t\tif (this._nativeAnim) return\n\n\t\t// Fallback: manually animate close via CSS transition, then close native details\n\t\tif (this._open$.value) {\n\t\t\te.preventDefault()\n\t\t\tthis._startClose()\n\t\t}\n\t\t// If closed, let native open happen (handled by _handleToggle)\n\t}\n\n\tprivate _handleToggle(e: Event) {\n\t\te.stopPropagation()\n\n\t\tconst ownDetails = this.shadowRoot?.querySelector('details')\n\t\tif (e.target !== ownDetails) return\n\n\t\tconst newState = ownDetails.open\n\n\t\tif (this._nativeAnim) {\n\t\t\t// Native path: handle both open and close\n\t\t\tif (this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t} else {\n\t\t\t// Fallback path: only handle OPEN (close is driven by _startClose)\n\t\t\tif (newState && this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Fallback close: trigger CSS grid+opacity transition, then close native <details>.\n\t * The CSS transition (400ms) handles the visual collapse — no WAAPI needed.\n\t */\n\tprivate _startClose() {\n\t\tthis._closing = true\n\t\tthis._closeSub?.unsubscribe()\n\n\t\t// Immediately collapse the grid wrapper via DOM attribute\n\t\tthis._contentRef.value?.setAttribute('data-open', 'false')\n\n\t\t// Animate indicator immediately\n\t\tthis._animateIndicator(false)\n\n\t\t// After CSS transition completes, close native details and update state\n\t\tconst wrapper = this._contentRef.value\n\t\tif (!wrapper) return\n\n\t\tthis._closeSub = fromEvent<TransitionEvent>(wrapper, 'transitionend').pipe(\n\t\t\tfilter(e => e.propertyName === 'grid-template-rows'),\n\t\t\ttake(1),\n\t\t\ttap(() => {\n\t\t\t\tthis._closing = false\n\t\t\t\tthis.open = false\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: false })\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\t}\n\n\tprivate _handleIndicatorSlotChange(e: Event) {\n\t\tconst slot = e.target as HTMLSlotElement\n\t\tslot.assignedElements().forEach(el => {\n\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t})\n\t}\n\n\tprivate _updateIndicatorSlot() {\n\t\tconst slot = this.shadowRoot?.querySelector('slot[name=\"indicator\"]') as HTMLSlotElement | null\n\t\tif (slot) {\n\t\t\tslot.assignedElements().forEach(el => {\n\t\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t\t})\n\t\t}\n\t}\n\n\t/** Idempotent indicator rotation — skips if already at target state */\n\tprivate _animateIndicator(isOpen: boolean) {\n\t\tif (this._indicatorIsOpen === isOpen) return\n\t\tthis._indicatorIsOpen = isOpen\n\n\t\tconst indicator = this._indicatorRef.value\n\t\tif (!indicator || reducedMotion$.value) return\n\n\t\tthis._currentAnimation?.cancel()\n\n\t\tthis._currentAnimation = 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\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-details': SchmancyDetails\n\t}\n}\n"],"mappings":"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"}
package/dist/details.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./details-B8p62xmR.cjs`);exports.SchmancyDetails=e.t;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./details-BJTR16AV.cjs`);exports.SchmancyDetails=e.t;
package/dist/details.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as e } from "./details-CCW52lzz.js";
1
+ import { t as e } from "./details-CBoXUDlQ.js";
2
2
  export { e as SchmancyDetails };
package/dist/dialog.cjs CHANGED
@@ -1,4 +1,4 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./decorate-F9CuyeHg.cjs`),t=require(`./litElement.mixin-CtQOmwq6.cjs`);require(`./mixins.cjs`);const n=require(`./animation-CQRdLgzX.cjs`),r=require(`./reduced-motion-9RjNnhIg.cjs`),i=require(`./cursor-glow-Duw9jHmh.cjs`),a=require(`./dialog-service-CzDO08Gy.cjs`);let o=require(`rxjs`),s=require(`rxjs/operators`),c=require(`lit/decorators.js`),l=require(`lit`),u=require(`lit/directives/ref.js`),d=require(`lit/directives/when.js`),f=require(`@floating-ui/dom`);var p=e=>class extends e{constructor(...e){super(...e),this.position={x:0,y:0},this.isMobile=!1,this.dragOffset=0,this.stopSwipe$=new o.Subject,this.lastFocusedElement=null,this.inertSiblings=[],this.animating=!1,this.dialogInternals=(()=>{try{return this.attachInternals()}catch{return}})()}isAnimating(){return this.animating}getDialogElement(){return null}getBackdropElement(){return null}getDragHandleElement(){return null}connectedCallback(){super.connectedCallback(),this.setupResizeListener()}setupResizeListener(){(0,o.fromEvent)(window,`resize`).pipe((0,o.map)(()=>window.innerWidth<640),(0,o.distinctUntilChanged)(),(0,o.filter)(()=>this.hasAttribute(`active`)),(0,o.tap)(e=>{if(this.isMobile!==e){this.isMobile=e,this.requestUpdate();let t=this.getDialogElement();t&&(e?(this.applyBottomSheetStyles(t),this.setupSwipeGesture(t)):(this.stopSwipe$.next(),this.setupPositioning()))}}),(0,o.takeUntil)(this.disconnecting)).subscribe()}setupSwipeGesture(e){this.stopSwipe$.next();let t=0,n=!1,r=0,i=this.getDragHandleElement();(0,o.merge)((0,o.fromEvent)(i||e,`touchstart`,{passive:!0}).pipe((0,o.tap)(a=>{let o=a.touches[0],s=e.getBoundingClientRect();o.clientY-s.top>80&&!i||(n=!0,t=o.clientY,r=0,this.dragOffset=0,e.style.transition=`none`,e.style.willChange=`transform`)})),(0,o.fromEvent)(e,`touchmove`,{passive:!1}).pipe((0,o.filter)(()=>n),(0,o.tap)(n=>{let i=n.touches[0].clientY-t;r=i<0?.2*i:i,this.dragOffset=Math.max(0,i),e.style.transform=`translateY(${r}px)`,n.preventDefault()})),(0,o.merge)((0,o.fromEvent)(e,`touchend`,{passive:!0}),(0,o.fromEvent)(e,`touchcancel`,{passive:!0})).pipe((0,o.filter)(()=>n),(0,o.tap)(()=>{n=!1,e.style.transition=`transform 0.3s cubic-bezier(0.16, 1, 0.3, 1)`,e.style.willChange=``;let t=e.getBoundingClientRect().height,r=Math.min(100,.25*t);this.dragOffset>r?(e.style.transform=`translateY(100%)`,this.hide(!1)):(e.style.transform=`translateY(0)`,this.dragOffset=0)}))).pipe((0,o.takeUntil)((0,o.merge)(this.stopSwipe$,this.disconnecting))).subscribe()}applyBottomSheetStyles(e){this.cleanupAutoUpdate&&=(this.cleanupAutoUpdate(),void 0),Object.assign(e.style,{position:``,left:``,top:``,transform:``,maxWidth:``})}async show(e){let t,n;if(this.cleanupAutoUpdate&&=(this.cleanupAutoUpdate(),void 0),this.isMobile=window.innerWidth<640,e)if(`clientX`in e)t=e.clientX,n=e.clientY;else if(`touches`in e&&e.touches.length)t=e.touches[0].clientX,n=e.touches[0].clientY;else{let r=e;t=r.x,n=r.y}else t=window.innerWidth/2,n=window.innerHeight/2;this.position={x:t,y:n},this.virtualReference={getBoundingClientRect:()=>new DOMRect(t,n,0,0)},this.requestUpdate(),await this.updateComplete,this.setAttribute(`active`,``),this.dialogInternals?.states.add(`open`),await this.updateComplete,this.lastFocusedElement=document.activeElement;let r=this.parentElement;if(r){this.inertSiblings=[];for(let e=0;e<r.children.length;e++){let t=r.children[e];t!==this&&`inert`in t&&(t.inert=!0,this.inertSiblings.push(t))}}(0,o.fromEvent)(document,`keydown`).pipe((0,o.filter)(e=>e.key===`Escape`),(0,o.tap)(e=>{e.preventDefault(),this.hide(!1)}),(0,o.takeUntil)((0,o.merge)(this.stopSwipe$,this.disconnecting))).subscribe();let i=this.getDialogElement(),a=window.innerWidth<1024?.6:.8;return!this.isMobile&&i&&(i.scrollHeight>window.innerHeight*a||i.scrollWidth>window.innerWidth*a)&&(this.isMobile=!0,this.requestUpdate(),await this.updateComplete),this.isMobile?i&&(this.applyBottomSheetStyles(i),this.setupSwipeGesture(i)):this.setupPositioning(),this.animating=!0,await this.animateIn(),this.animating=!1,new Promise(e=>{this.resolvePromise=e})}async animateIn(){let e=this.getDialogElement(),t=this.getBackdropElement();if(r.t.value)return t&&(t.style.opacity=`1`),void(e&&(e.style.opacity=`1`));if(t?.animate([{opacity:0},{opacity:1}],{duration:200,easing:n.s,fill:`forwards`}),e){let t=this.isMobile?[{opacity:0,transform:`translateY(100%)`},{opacity:1,transform:`translateY(0)`}]:[{opacity:0,transform:`scale(0.92) translateY(16px)`},{opacity:1,transform:`scale(1) translateY(0)`}];await e.animate(t,{duration:n.i,easing:n.n,fill:`forwards`}).finished}}async animateOut(){let e=this.getDialogElement(),t=this.getBackdropElement();if(r.t.value)return t&&(t.style.opacity=`0`),void(e&&(e.style.opacity=`0`));let i=[];if(t&&i.push(t.animate([{opacity:1},{opacity:0}],{duration:150,easing:n.s,fill:`forwards`}).finished),e){let t=this.isMobile?[{opacity:1,transform:`translateY(0)`},{opacity:0,transform:`translateY(100%)`}]:[{opacity:1,transform:`scale(1) translateY(0)`},{opacity:0,transform:`scale(0.95) translateY(8px)`}];i.push(e.animate(t,{duration:150,easing:n.o,fill:`forwards`}).finished)}await Promise.all(i)}async hide(e=!1){this.stopSwipe$.next(),this.animating=!0,await this.animateOut(),this.animating=!1,this.removeAttribute(`active`),this.dialogInternals?.states.delete(`open`);for(let e of this.inertSiblings)e.inert=!1;if(this.inertSiblings=[],this.lastFocusedElement){let e=this.lastFocusedElement;typeof e.focus==`function`&&e.focus(),this.lastFocusedElement=null}this.cleanupAutoUpdate&&=(this.cleanupAutoUpdate(),void 0),this.resolvePromise&&=(this.resolvePromise(e),void 0)}isCentered(){let e=.05*window.innerWidth,t=.05*window.innerHeight;return Math.abs(this.position.x-window.innerWidth/2)<e&&Math.abs(this.position.y-window.innerHeight/2)<t}setupPositioning(){let e=this.getDialogElement();e&&(this.isCentered()||this.virtualReference&&(this.cleanupAutoUpdate=(0,f.autoUpdate)(this.virtualReference,e,()=>this.updatePosition(e),{ancestorScroll:!0,ancestorResize:!0,elementResize:!0}),this.updatePosition(e)))}async updatePosition(e){if(!this.virtualReference)return;let{x:t,y:n}=await(0,f.computePosition)(this.virtualReference,e,{strategy:`fixed`,middleware:[(0,f.offset)(8),(0,f.autoPlacement)({padding:16,allowedPlacements:[`top-start`,`top-end`,`bottom-start`,`bottom-end`,`left-start`,`left-end`,`right-start`,`right-end`]}),(0,f.shift)({padding:16}),(0,f.size)({padding:16,apply({availableWidth:e,elements:t}){t.floating.style.maxWidth=`${e}px`}})]});Object.assign(e.style,{position:`fixed`,left:`${Math.round(t)}px`,top:`${Math.round(n)}px`,transform:`none`})}disconnectedCallback(){this.stopSwipe$.next(),this.cleanupAutoUpdate&&=(this.cleanupAutoUpdate(),void 0),super.disconnectedCallback()}},m=class extends p(t.t(l.css`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./decorate-F9CuyeHg.cjs`),t=require(`./litElement.mixin-lYlKxxjR.cjs`);require(`./mixins.cjs`);const n=require(`./animation-CQRdLgzX.cjs`),r=require(`./reduced-motion-9RjNnhIg.cjs`),i=require(`./cursor-glow-Duw9jHmh.cjs`),a=require(`./dialog-service-CzDO08Gy.cjs`);let o=require(`rxjs`),s=require(`rxjs/operators`),c=require(`lit/decorators.js`),l=require(`lit`),u=require(`lit/directives/ref.js`),d=require(`lit/directives/when.js`),f=require(`@floating-ui/dom`);var p=e=>class extends e{constructor(...e){super(...e),this.position={x:0,y:0},this.isMobile=!1,this.dragOffset=0,this.stopSwipe$=new o.Subject,this.lastFocusedElement=null,this.inertSiblings=[],this.animating=!1,this.dialogInternals=(()=>{try{return this.attachInternals()}catch{return}})()}isAnimating(){return this.animating}getDialogElement(){return null}getBackdropElement(){return null}getDragHandleElement(){return null}connectedCallback(){super.connectedCallback(),this.setupResizeListener()}setupResizeListener(){(0,o.fromEvent)(window,`resize`).pipe((0,o.map)(()=>window.innerWidth<640),(0,o.distinctUntilChanged)(),(0,o.filter)(()=>this.hasAttribute(`active`)),(0,o.tap)(e=>{if(this.isMobile!==e){this.isMobile=e,this.requestUpdate();let t=this.getDialogElement();t&&(e?(this.applyBottomSheetStyles(t),this.setupSwipeGesture(t)):(this.stopSwipe$.next(),this.setupPositioning()))}}),(0,o.takeUntil)(this.disconnecting)).subscribe()}setupSwipeGesture(e){this.stopSwipe$.next();let t=0,n=!1,r=0,i=this.getDragHandleElement();(0,o.merge)((0,o.fromEvent)(i||e,`touchstart`,{passive:!0}).pipe((0,o.tap)(a=>{let o=a.touches[0],s=e.getBoundingClientRect();o.clientY-s.top>80&&!i||(n=!0,t=o.clientY,r=0,this.dragOffset=0,e.style.transition=`none`,e.style.willChange=`transform`)})),(0,o.fromEvent)(e,`touchmove`,{passive:!1}).pipe((0,o.filter)(()=>n),(0,o.tap)(n=>{let i=n.touches[0].clientY-t;r=i<0?.2*i:i,this.dragOffset=Math.max(0,i),e.style.transform=`translateY(${r}px)`,n.preventDefault()})),(0,o.merge)((0,o.fromEvent)(e,`touchend`,{passive:!0}),(0,o.fromEvent)(e,`touchcancel`,{passive:!0})).pipe((0,o.filter)(()=>n),(0,o.tap)(()=>{n=!1,e.style.transition=`transform 0.3s cubic-bezier(0.16, 1, 0.3, 1)`,e.style.willChange=``;let t=e.getBoundingClientRect().height,r=Math.min(100,.25*t);this.dragOffset>r?(e.style.transform=`translateY(100%)`,this.hide(!1)):(e.style.transform=`translateY(0)`,this.dragOffset=0)}))).pipe((0,o.takeUntil)((0,o.merge)(this.stopSwipe$,this.disconnecting))).subscribe()}applyBottomSheetStyles(e){this.cleanupAutoUpdate&&=(this.cleanupAutoUpdate(),void 0),Object.assign(e.style,{position:``,left:``,top:``,transform:``,maxWidth:``})}async show(e){let t,n;if(this.cleanupAutoUpdate&&=(this.cleanupAutoUpdate(),void 0),this.isMobile=window.innerWidth<640,e)if(`clientX`in e)t=e.clientX,n=e.clientY;else if(`touches`in e&&e.touches.length)t=e.touches[0].clientX,n=e.touches[0].clientY;else{let r=e;t=r.x,n=r.y}else t=window.innerWidth/2,n=window.innerHeight/2;this.position={x:t,y:n},this.virtualReference={getBoundingClientRect:()=>new DOMRect(t,n,0,0)},this.requestUpdate(),await this.updateComplete,this.setAttribute(`active`,``),this.dialogInternals?.states.add(`open`),await this.updateComplete,this.lastFocusedElement=document.activeElement;let r=this.parentElement;if(r){this.inertSiblings=[];for(let e=0;e<r.children.length;e++){let t=r.children[e];t!==this&&`inert`in t&&(t.inert=!0,this.inertSiblings.push(t))}}(0,o.fromEvent)(document,`keydown`).pipe((0,o.filter)(e=>e.key===`Escape`),(0,o.tap)(e=>{e.preventDefault(),this.hide(!1)}),(0,o.takeUntil)((0,o.merge)(this.stopSwipe$,this.disconnecting))).subscribe();let i=this.getDialogElement(),a=window.innerWidth<1024?.6:.8;return!this.isMobile&&i&&(i.scrollHeight>window.innerHeight*a||i.scrollWidth>window.innerWidth*a)&&(this.isMobile=!0,this.requestUpdate(),await this.updateComplete),this.isMobile?i&&(this.applyBottomSheetStyles(i),this.setupSwipeGesture(i)):this.setupPositioning(),this.animating=!0,await this.animateIn(),this.animating=!1,new Promise(e=>{this.resolvePromise=e})}async animateIn(){let e=this.getDialogElement(),t=this.getBackdropElement();if(r.t.value)return t&&(t.style.opacity=`1`),void(e&&(e.style.opacity=`1`));if(t?.animate([{opacity:0},{opacity:1}],{duration:200,easing:n.s,fill:`forwards`}),e){let t=this.isMobile?[{opacity:0,transform:`translateY(100%)`},{opacity:1,transform:`translateY(0)`}]:[{opacity:0,transform:`scale(0.92) translateY(16px)`},{opacity:1,transform:`scale(1) translateY(0)`}];await e.animate(t,{duration:n.i,easing:n.n,fill:`forwards`}).finished}}async animateOut(){let e=this.getDialogElement(),t=this.getBackdropElement();if(r.t.value)return t&&(t.style.opacity=`0`),void(e&&(e.style.opacity=`0`));let i=[];if(t&&i.push(t.animate([{opacity:1},{opacity:0}],{duration:150,easing:n.s,fill:`forwards`}).finished),e){let t=this.isMobile?[{opacity:1,transform:`translateY(0)`},{opacity:0,transform:`translateY(100%)`}]:[{opacity:1,transform:`scale(1) translateY(0)`},{opacity:0,transform:`scale(0.95) translateY(8px)`}];i.push(e.animate(t,{duration:150,easing:n.o,fill:`forwards`}).finished)}await Promise.all(i)}async hide(e=!1){this.stopSwipe$.next(),this.animating=!0,await this.animateOut(),this.animating=!1,this.removeAttribute(`active`),this.dialogInternals?.states.delete(`open`);for(let e of this.inertSiblings)e.inert=!1;if(this.inertSiblings=[],this.lastFocusedElement){let e=this.lastFocusedElement;typeof e.focus==`function`&&e.focus(),this.lastFocusedElement=null}this.cleanupAutoUpdate&&=(this.cleanupAutoUpdate(),void 0),this.resolvePromise&&=(this.resolvePromise(e),void 0)}isCentered(){let e=.05*window.innerWidth,t=.05*window.innerHeight;return Math.abs(this.position.x-window.innerWidth/2)<e&&Math.abs(this.position.y-window.innerHeight/2)<t}setupPositioning(){let e=this.getDialogElement();e&&(this.isCentered()||this.virtualReference&&(this.cleanupAutoUpdate=(0,f.autoUpdate)(this.virtualReference,e,()=>this.updatePosition(e),{ancestorScroll:!0,ancestorResize:!0,elementResize:!0}),this.updatePosition(e)))}async updatePosition(e){if(!this.virtualReference)return;let{x:t,y:n}=await(0,f.computePosition)(this.virtualReference,e,{strategy:`fixed`,middleware:[(0,f.offset)(8),(0,f.autoPlacement)({padding:16,allowedPlacements:[`top-start`,`top-end`,`bottom-start`,`bottom-end`,`left-start`,`left-end`,`right-start`,`right-end`]}),(0,f.shift)({padding:16}),(0,f.size)({padding:16,apply({availableWidth:e,elements:t}){t.floating.style.maxWidth=`${e}px`}})]});Object.assign(e.style,{position:`fixed`,left:`${Math.round(t)}px`,top:`${Math.round(n)}px`,transform:`none`})}disconnectedCallback(){this.stopSwipe$.next(),this.cleanupAutoUpdate&&=(this.cleanupAutoUpdate(),void 0),super.disconnectedCallback()}},m=class extends p(t.t(l.css`
2
2
  :host {
3
3
  position: fixed;
4
4
  z-index: var(--schmancy-overlay-z, 10000);
package/dist/dialog.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./decorate-D_utPUsC.js";
2
- import { t } from "./litElement.mixin-BnNYZ24e.js";
2
+ import { t } from "./litElement.mixin-BuZ28ZzP.js";
3
3
  import "./mixins.js";
4
4
  import { i as n, n as r, o as i, s as a } from "./animation-hXFClrIn.js";
5
5
  import { t as o } from "./reduced-motion-BZTLqAyl.js";
@@ -1,4 +1,4 @@
1
- require(`./chunk-CncqDLb2.cjs`);const e=require(`./decorate-F9CuyeHg.cjs`),t=require(`./litElement.mixin-CtQOmwq6.cjs`);require(`./mixins.cjs`);let n=require(`lit/decorators.js`),r=require(`lit`);var i=class extends t.t(r.css`
1
+ require(`./chunk-CncqDLb2.cjs`);const e=require(`./decorate-F9CuyeHg.cjs`),t=require(`./litElement.mixin-lYlKxxjR.cjs`);require(`./mixins.cjs`);let n=require(`lit/decorators.js`),r=require(`lit`);var i=class extends t.t(r.css`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"divider-JyyFw_3J.cjs","names":[],"sources":["../src/divider/divider.ts"],"sourcesContent":["// divider.ts\nimport { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n/**\n * Thin horizontal (or vertical) separator rule between sections of content.\n *\n * @element schmancy-divider\n * @summary Semantic separator between groups — list items, menu sections, content blocks. Uses outline theme token.\n * @example\n * <schmancy-list-item>First</schmancy-list-item>\n * <schmancy-divider></schmancy-divider>\n * <schmancy-list-item>Second</schmancy-list-item>\n * @platform hr - Styled horizontal rule. Degrades to a native `<hr>` if the tag never registers.\n */\n@customElement('schmancy-divider')\nexport default class SchmancyDivider extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n\n\t@keyframes grow-horizontal {\n\t\tfrom {\n\t\t\ttransform: scaleX(0);\n\t\t}\n\t\tto {\n\t\t\ttransform: scaleX(1);\n\t\t}\n\t}\n\n\t@keyframes grow-vertical {\n\t\tfrom {\n\t\t\ttransform: scaleY(0);\n\t\t}\n\t\tto {\n\t\t\ttransform: scaleY(1);\n\t\t}\n\t}\n\n\t/* Horizontal divider grow animations */\n\t.grow-start:not(.h-full) {\n\t\tanimation: grow-horizontal 400ms ease-out;\n\t\ttransform-origin: left;\n\t}\n\n\t.grow-end:not(.h-full) {\n\t\tanimation: grow-horizontal 400ms ease-out;\n\t\ttransform-origin: right;\n\t}\n\n\t.grow-both:not(.h-full) {\n\t\tanimation: grow-horizontal 400ms ease-out;\n\t\ttransform-origin: center;\n\t}\n\n\t/* Vertical divider grow animations */\n\t.grow-start.h-full {\n\t\tanimation: grow-vertical 400ms ease-out;\n\t\ttransform-origin: top;\n\t}\n\n\t.grow-end.h-full {\n\t\tanimation: grow-vertical 400ms ease-out;\n\t\ttransform-origin: bottom;\n\t}\n\n\t.grow-both.h-full {\n\t\tanimation: grow-vertical 400ms ease-out;\n\t\ttransform-origin: center;\n\t}\n`) {\n\t@property({ type: String }) outline: 'default' | 'variant' = 'variant'\n\t@property({ type: Boolean }) vertical = false\n\t@property({ type: String }) grow: 'start' | 'end' | 'both' = 'start'\n\n\t/**\n\t * @deprecated Use `vertical` property instead. Will be removed in next major version.\n\t */\n\t@property({ reflect: true, type: String })\n\tset orientation(value: 'horizontal' | 'vertical') {\n\t\tthis.vertical = value === 'vertical'\n\t}\n\tget orientation(): 'horizontal' | 'vertical' {\n\t\treturn this.vertical ? 'vertical' : 'horizontal'\n\t}\n\n\tprotected render() {\n\t\treturn html`<div\n\t\t\tclass=${this.classMap({\n\t\t\t\t// Dimensions\n\t\t\t\t'w-full h-px': !this.vertical,\n\t\t\t\t'h-full w-px': this.vertical,\n\t\t\t\t// Border color\n\t\t\t\t'border-outlineVariant': this.outline === 'variant',\n\t\t\t\t'border-outline': this.outline === 'default',\n\t\t\t\t// Border style\n\t\t\t\t'border-t': !this.vertical,\n\t\t\t\t'border-l': this.vertical,\n\t\t\t\t// Grow behavior\n\t\t\t\t[`grow-${this.grow}`]: true,\n\t\t\t})}\n\t\t></div>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-divider': SchmancyDivider\n\t}\n}\n"],"mappings":"oMAiBe,IAAA,EAAA,cAA8B,EAAA,EAAY,EAAA,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CAuDE,UAAA,KAAA,SAAA,CACrB,EAAA,KAAA,KACqB,QAK7D,IAAA,YACgB,EAAA,CACf,KAAK,SAAW,IAAU,WAE3B,IAAA,aAAI,CACH,OAAO,KAAK,SAAW,WAAa,aAGrC,QAAA,CACC,MAAO,GAAA,IAAI;WACF,KAAK,SAAS,CAErB,cAAA,CAAgB,KAAK,SACrB,cAAe,KAAK,SAEpB,wBAAyB,KAAK,UAAY,UAC1C,iBAAkB,KAAK,UAAY,UAEnC,WAAA,CAAa,KAAK,SAClB,WAAY,KAAK,UAEhB,QAAQ,KAAK,QAAA,CAAS,EAAA,CAAA,CAAA;iCA5BhB,CAAE,KAAM,OAAA,CAAA,CAAA,CAAS,EAAA,UAAA,UAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UACjB,CAAE,KAAM,QAAA,CAAA,CAAA,CAAU,EAAA,UAAA,WAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAClB,CAAE,KAAM,OAAA,CAAA,CAAA,CAAS,EAAA,UAAA,OAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAKjB,CAAE,QAAA,CAAS,EAAM,KAAM,OAAA,CAAA,CAAA,CAAS,EAAA,UAAA,cAAA,KAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eA/D5B,mBAAA,CAAA,CAAmB,EAAA"}
1
+ {"version":3,"file":"divider-D6MRonTS.cjs","names":[],"sources":["../src/divider/divider.ts"],"sourcesContent":["// divider.ts\nimport { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n/**\n * Thin horizontal (or vertical) separator rule between sections of content.\n *\n * @element schmancy-divider\n * @summary Semantic separator between groups — list items, menu sections, content blocks. Uses outline theme token.\n * @example\n * <schmancy-list-item>First</schmancy-list-item>\n * <schmancy-divider></schmancy-divider>\n * <schmancy-list-item>Second</schmancy-list-item>\n * @platform hr - Styled horizontal rule. Degrades to a native `<hr>` if the tag never registers.\n */\n@customElement('schmancy-divider')\nexport default class SchmancyDivider extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n\n\t@keyframes grow-horizontal {\n\t\tfrom {\n\t\t\ttransform: scaleX(0);\n\t\t}\n\t\tto {\n\t\t\ttransform: scaleX(1);\n\t\t}\n\t}\n\n\t@keyframes grow-vertical {\n\t\tfrom {\n\t\t\ttransform: scaleY(0);\n\t\t}\n\t\tto {\n\t\t\ttransform: scaleY(1);\n\t\t}\n\t}\n\n\t/* Horizontal divider grow animations */\n\t.grow-start:not(.h-full) {\n\t\tanimation: grow-horizontal 400ms ease-out;\n\t\ttransform-origin: left;\n\t}\n\n\t.grow-end:not(.h-full) {\n\t\tanimation: grow-horizontal 400ms ease-out;\n\t\ttransform-origin: right;\n\t}\n\n\t.grow-both:not(.h-full) {\n\t\tanimation: grow-horizontal 400ms ease-out;\n\t\ttransform-origin: center;\n\t}\n\n\t/* Vertical divider grow animations */\n\t.grow-start.h-full {\n\t\tanimation: grow-vertical 400ms ease-out;\n\t\ttransform-origin: top;\n\t}\n\n\t.grow-end.h-full {\n\t\tanimation: grow-vertical 400ms ease-out;\n\t\ttransform-origin: bottom;\n\t}\n\n\t.grow-both.h-full {\n\t\tanimation: grow-vertical 400ms ease-out;\n\t\ttransform-origin: center;\n\t}\n`) {\n\t@property({ type: String }) outline: 'default' | 'variant' = 'variant'\n\t@property({ type: Boolean }) vertical = false\n\t@property({ type: String }) grow: 'start' | 'end' | 'both' = 'start'\n\n\t/**\n\t * @deprecated Use `vertical` property instead. Will be removed in next major version.\n\t */\n\t@property({ reflect: true, type: String })\n\tset orientation(value: 'horizontal' | 'vertical') {\n\t\tthis.vertical = value === 'vertical'\n\t}\n\tget orientation(): 'horizontal' | 'vertical' {\n\t\treturn this.vertical ? 'vertical' : 'horizontal'\n\t}\n\n\tprotected render() {\n\t\treturn html`<div\n\t\t\tclass=${this.classMap({\n\t\t\t\t// Dimensions\n\t\t\t\t'w-full h-px': !this.vertical,\n\t\t\t\t'h-full w-px': this.vertical,\n\t\t\t\t// Border color\n\t\t\t\t'border-outlineVariant': this.outline === 'variant',\n\t\t\t\t'border-outline': this.outline === 'default',\n\t\t\t\t// Border style\n\t\t\t\t'border-t': !this.vertical,\n\t\t\t\t'border-l': this.vertical,\n\t\t\t\t// Grow behavior\n\t\t\t\t[`grow-${this.grow}`]: true,\n\t\t\t})}\n\t\t></div>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-divider': SchmancyDivider\n\t}\n}\n"],"mappings":"oMAiBe,IAAA,EAAA,cAA8B,EAAA,EAAY,EAAA,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CAuDE,UAAA,KAAA,SAAA,CACrB,EAAA,KAAA,KACqB,QAK7D,IAAA,YACgB,EAAA,CACf,KAAK,SAAW,IAAU,WAE3B,IAAA,aAAI,CACH,OAAO,KAAK,SAAW,WAAa,aAGrC,QAAA,CACC,MAAO,GAAA,IAAI;WACF,KAAK,SAAS,CAErB,cAAA,CAAgB,KAAK,SACrB,cAAe,KAAK,SAEpB,wBAAyB,KAAK,UAAY,UAC1C,iBAAkB,KAAK,UAAY,UAEnC,WAAA,CAAa,KAAK,SAClB,WAAY,KAAK,UAEhB,QAAQ,KAAK,QAAA,CAAS,EAAA,CAAA,CAAA;iCA5BhB,CAAE,KAAM,OAAA,CAAA,CAAA,CAAS,EAAA,UAAA,UAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UACjB,CAAE,KAAM,QAAA,CAAA,CAAA,CAAU,EAAA,UAAA,WAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAClB,CAAE,KAAM,OAAA,CAAA,CAAA,CAAS,EAAA,UAAA,OAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAKjB,CAAE,QAAA,CAAS,EAAM,KAAM,OAAA,CAAA,CAAA,CAAS,EAAA,UAAA,cAAA,KAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eA/D5B,mBAAA,CAAA,CAAmB,EAAA"}
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./decorate-D_utPUsC.js";
2
- import { t } from "./litElement.mixin-BnNYZ24e.js";
2
+ import { t } from "./litElement.mixin-BuZ28ZzP.js";
3
3
  import "./mixins.js";
4
4
  import { customElement as n, property as r } from "lit/decorators.js";
5
5
  import { css as i, html as a } from "lit";
@@ -1 +1 @@
1
- {"version":3,"file":"divider-CbEWg3G_.js","names":[],"sources":["../src/divider/divider.ts"],"sourcesContent":["// divider.ts\nimport { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n/**\n * Thin horizontal (or vertical) separator rule between sections of content.\n *\n * @element schmancy-divider\n * @summary Semantic separator between groups — list items, menu sections, content blocks. Uses outline theme token.\n * @example\n * <schmancy-list-item>First</schmancy-list-item>\n * <schmancy-divider></schmancy-divider>\n * <schmancy-list-item>Second</schmancy-list-item>\n * @platform hr - Styled horizontal rule. Degrades to a native `<hr>` if the tag never registers.\n */\n@customElement('schmancy-divider')\nexport default class SchmancyDivider extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n\n\t@keyframes grow-horizontal {\n\t\tfrom {\n\t\t\ttransform: scaleX(0);\n\t\t}\n\t\tto {\n\t\t\ttransform: scaleX(1);\n\t\t}\n\t}\n\n\t@keyframes grow-vertical {\n\t\tfrom {\n\t\t\ttransform: scaleY(0);\n\t\t}\n\t\tto {\n\t\t\ttransform: scaleY(1);\n\t\t}\n\t}\n\n\t/* Horizontal divider grow animations */\n\t.grow-start:not(.h-full) {\n\t\tanimation: grow-horizontal 400ms ease-out;\n\t\ttransform-origin: left;\n\t}\n\n\t.grow-end:not(.h-full) {\n\t\tanimation: grow-horizontal 400ms ease-out;\n\t\ttransform-origin: right;\n\t}\n\n\t.grow-both:not(.h-full) {\n\t\tanimation: grow-horizontal 400ms ease-out;\n\t\ttransform-origin: center;\n\t}\n\n\t/* Vertical divider grow animations */\n\t.grow-start.h-full {\n\t\tanimation: grow-vertical 400ms ease-out;\n\t\ttransform-origin: top;\n\t}\n\n\t.grow-end.h-full {\n\t\tanimation: grow-vertical 400ms ease-out;\n\t\ttransform-origin: bottom;\n\t}\n\n\t.grow-both.h-full {\n\t\tanimation: grow-vertical 400ms ease-out;\n\t\ttransform-origin: center;\n\t}\n`) {\n\t@property({ type: String }) outline: 'default' | 'variant' = 'variant'\n\t@property({ type: Boolean }) vertical = false\n\t@property({ type: String }) grow: 'start' | 'end' | 'both' = 'start'\n\n\t/**\n\t * @deprecated Use `vertical` property instead. Will be removed in next major version.\n\t */\n\t@property({ reflect: true, type: String })\n\tset orientation(value: 'horizontal' | 'vertical') {\n\t\tthis.vertical = value === 'vertical'\n\t}\n\tget orientation(): 'horizontal' | 'vertical' {\n\t\treturn this.vertical ? 'vertical' : 'horizontal'\n\t}\n\n\tprotected render() {\n\t\treturn html`<div\n\t\t\tclass=${this.classMap({\n\t\t\t\t// Dimensions\n\t\t\t\t'w-full h-px': !this.vertical,\n\t\t\t\t'h-full w-px': this.vertical,\n\t\t\t\t// Border color\n\t\t\t\t'border-outlineVariant': this.outline === 'variant',\n\t\t\t\t'border-outline': this.outline === 'default',\n\t\t\t\t// Border style\n\t\t\t\t'border-t': !this.vertical,\n\t\t\t\t'border-l': this.vertical,\n\t\t\t\t// Grow behavior\n\t\t\t\t[`grow-${this.grow}`]: true,\n\t\t\t})}\n\t\t></div>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-divider': SchmancyDivider\n\t}\n}\n"],"mappings":";;;;;AAiBe,IAAA,IAAA,cAA8B,EAAY,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAuDE,WAAA,KAAA,WAAA,CACrB,GAAA,KAAA,OACqB;;CAK7D,IAAA,YACgB,GAAA;AACf,OAAK,WAAW,MAAU;;CAE3B,IAAA,cAAI;AACH,SAAO,KAAK,WAAW,aAAa;;CAGrC,SAAA;AACC,SAAO,CAAI;WACF,KAAK,SAAS;GAErB,eAAA,CAAgB,KAAK;GACrB,eAAe,KAAK;GAEpB,yBAAyB,KAAK,YAAY;GAC1C,kBAAkB,KAAK,YAAY;GAEnC,YAAA,CAAa,KAAK;GAClB,YAAY,KAAK;IAEhB,QAAQ,KAAK,SAAA,CAAS;GAAA,CAAA,CAAA;;;;GA5BzB,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,WAAA,KAAA,EAAA,EAAA,EAAA,CAC1B,EAAS,EAAE,MAAM,SAAA,CAAA,CAAA,EAAU,EAAA,WAAA,YAAA,KAAA,EAAA,EAAA,EAAA,CAC3B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,QAAA,KAAA,EAAA,EAAA,EAAA,CAK1B,EAAS;CAAE,SAAA,CAAS;CAAM,MAAM;CAAA,CAAA,CAAA,EAAS,EAAA,WAAA,eAAA,KAAA,EAAA,IAAA,EAAA,CA/D1C,EAAc,mBAAA,CAAA,EAAmB,EAAA"}
1
+ {"version":3,"file":"divider-DivkYKa_.js","names":[],"sources":["../src/divider/divider.ts"],"sourcesContent":["// divider.ts\nimport { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n/**\n * Thin horizontal (or vertical) separator rule between sections of content.\n *\n * @element schmancy-divider\n * @summary Semantic separator between groups — list items, menu sections, content blocks. Uses outline theme token.\n * @example\n * <schmancy-list-item>First</schmancy-list-item>\n * <schmancy-divider></schmancy-divider>\n * <schmancy-list-item>Second</schmancy-list-item>\n * @platform hr - Styled horizontal rule. Degrades to a native `<hr>` if the tag never registers.\n */\n@customElement('schmancy-divider')\nexport default class SchmancyDivider extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n\n\t@keyframes grow-horizontal {\n\t\tfrom {\n\t\t\ttransform: scaleX(0);\n\t\t}\n\t\tto {\n\t\t\ttransform: scaleX(1);\n\t\t}\n\t}\n\n\t@keyframes grow-vertical {\n\t\tfrom {\n\t\t\ttransform: scaleY(0);\n\t\t}\n\t\tto {\n\t\t\ttransform: scaleY(1);\n\t\t}\n\t}\n\n\t/* Horizontal divider grow animations */\n\t.grow-start:not(.h-full) {\n\t\tanimation: grow-horizontal 400ms ease-out;\n\t\ttransform-origin: left;\n\t}\n\n\t.grow-end:not(.h-full) {\n\t\tanimation: grow-horizontal 400ms ease-out;\n\t\ttransform-origin: right;\n\t}\n\n\t.grow-both:not(.h-full) {\n\t\tanimation: grow-horizontal 400ms ease-out;\n\t\ttransform-origin: center;\n\t}\n\n\t/* Vertical divider grow animations */\n\t.grow-start.h-full {\n\t\tanimation: grow-vertical 400ms ease-out;\n\t\ttransform-origin: top;\n\t}\n\n\t.grow-end.h-full {\n\t\tanimation: grow-vertical 400ms ease-out;\n\t\ttransform-origin: bottom;\n\t}\n\n\t.grow-both.h-full {\n\t\tanimation: grow-vertical 400ms ease-out;\n\t\ttransform-origin: center;\n\t}\n`) {\n\t@property({ type: String }) outline: 'default' | 'variant' = 'variant'\n\t@property({ type: Boolean }) vertical = false\n\t@property({ type: String }) grow: 'start' | 'end' | 'both' = 'start'\n\n\t/**\n\t * @deprecated Use `vertical` property instead. Will be removed in next major version.\n\t */\n\t@property({ reflect: true, type: String })\n\tset orientation(value: 'horizontal' | 'vertical') {\n\t\tthis.vertical = value === 'vertical'\n\t}\n\tget orientation(): 'horizontal' | 'vertical' {\n\t\treturn this.vertical ? 'vertical' : 'horizontal'\n\t}\n\n\tprotected render() {\n\t\treturn html`<div\n\t\t\tclass=${this.classMap({\n\t\t\t\t// Dimensions\n\t\t\t\t'w-full h-px': !this.vertical,\n\t\t\t\t'h-full w-px': this.vertical,\n\t\t\t\t// Border color\n\t\t\t\t'border-outlineVariant': this.outline === 'variant',\n\t\t\t\t'border-outline': this.outline === 'default',\n\t\t\t\t// Border style\n\t\t\t\t'border-t': !this.vertical,\n\t\t\t\t'border-l': this.vertical,\n\t\t\t\t// Grow behavior\n\t\t\t\t[`grow-${this.grow}`]: true,\n\t\t\t})}\n\t\t></div>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-divider': SchmancyDivider\n\t}\n}\n"],"mappings":";;;;;AAiBe,IAAA,IAAA,cAA8B,EAAY,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAuDE,WAAA,KAAA,WAAA,CACrB,GAAA,KAAA,OACqB;;CAK7D,IAAA,YACgB,GAAA;AACf,OAAK,WAAW,MAAU;;CAE3B,IAAA,cAAI;AACH,SAAO,KAAK,WAAW,aAAa;;CAGrC,SAAA;AACC,SAAO,CAAI;WACF,KAAK,SAAS;GAErB,eAAA,CAAgB,KAAK;GACrB,eAAe,KAAK;GAEpB,yBAAyB,KAAK,YAAY;GAC1C,kBAAkB,KAAK,YAAY;GAEnC,YAAA,CAAa,KAAK;GAClB,YAAY,KAAK;IAEhB,QAAQ,KAAK,SAAA,CAAS;GAAA,CAAA,CAAA;;;;GA5BzB,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,WAAA,KAAA,EAAA,EAAA,EAAA,CAC1B,EAAS,EAAE,MAAM,SAAA,CAAA,CAAA,EAAU,EAAA,WAAA,YAAA,KAAA,EAAA,EAAA,EAAA,CAC3B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,QAAA,KAAA,EAAA,EAAA,EAAA,CAK1B,EAAS;CAAE,SAAA,CAAS;CAAM,MAAM;CAAA,CAAA,CAAA,EAAS,EAAA,WAAA,eAAA,KAAA,EAAA,IAAA,EAAA,CA/D1C,EAAc,mBAAA,CAAA,EAAmB,EAAA"}
package/dist/divider.cjs CHANGED
@@ -1 +1 @@
1
- require(`./divider-JyyFw_3J.cjs`);
1
+ require(`./divider-D6MRonTS.cjs`);
package/dist/divider.js CHANGED
@@ -1 +1 @@
1
- import "./divider-CbEWg3G_.js";
1
+ import "./divider-DivkYKa_.js";
package/dist/dropdown.cjs CHANGED
@@ -1,4 +1,4 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./tailwind.mixin-Bh58QnlW.cjs`),t=require(`./decorate-F9CuyeHg.cjs`),n=require(`./litElement.mixin-CtQOmwq6.cjs`);require(`./mixins.cjs`);let r=require(`rxjs`),i=require(`lit/decorators.js`),a=require(`lit`),o=require(`@floating-ui/dom`);var s=class extends n.t(){constructor(...e){super(...e),this.open=!1,this.placement=`bottom-start`,this.distance=8,this.portal=null,this.portalSubscriptions=[]}connectedCallback(){super.connectedCallback(),this.setupPortal(),(0,r.fromEvent)(document,`click`).pipe((0,r.filter)(e=>this.open&&!this.isEventFromSelf(e)),(0,r.takeUntil)(this.disconnecting)).subscribe(()=>{this.open=!1}),(0,r.fromEvent)(document,`keydown`).pipe((0,r.filter)(e=>this.open&&e.key===`Escape`),(0,r.takeUntil)(this.disconnecting)).subscribe(()=>{this.open=!1})}setupPortal(){let e=document.getElementById(`schmancy-portal-container`);e||(e=document.createElement(`div`),e.id=`schmancy-portal-container`,e.style.position=`fixed`,e.style.zIndex=`10000`,e.style.top=`0`,e.style.left=`0`,e.style.pointerEvents=`none`,document.body.appendChild(e));let t=document.createElement(`div`);t.className=`schmancy-dropdown-portal`,t.style.position=`absolute`,t.style.pointerEvents=`auto`,t.style.display=`none`,e.appendChild(t),this.portal=t}isEventFromSelf(e){return e.composedPath().some(e=>e===this)}disconnectedCallback(){this.cleanupPositioner?.(),this.portalSubscriptions.forEach(e=>e.unsubscribe()),this.portalSubscriptions=[],this.portal&&=(this.portal.remove(),null),super.disconnectedCallback()}toggle(){this.open=!this.open}updated(e){super.updated(e),e.has(`open`)&&(this.open?this.setupPositioner():(this.cleanupPositioner?.(),this.portal&&(this.portal.style.display=`none`,this.portal.innerHTML=``,this.portalSubscriptions.forEach(e=>e.unsubscribe()),this.portalSubscriptions=[])))}setupPositioner(){this.triggerContainer&&this.portal&&(this.portal.style.display=`block`,this.teleportContentToPortal(),this.cleanupPositioner=(0,o.autoUpdate)(this.triggerContainer,this.portal,()=>{(0,o.computePosition)(this.triggerContainer,this.portal,{placement:this.placement,middleware:[(0,o.offset)(this.distance),(0,o.flip)({fallbackPlacements:[`top-start`,`bottom-start`]}),(0,o.shift)({padding:0})]}).then(({x:e,y:t})=>{Object.assign(this.portal.style,{left:`${e}px`,top:t-8+`px`})})}))}teleportContentToPortal(){this.portal&&(this.portalSubscriptions.forEach(e=>e.unsubscribe()),this.portalSubscriptions=[],this.portal.innerHTML=``,this.contentElements.forEach(e=>{let t=e.cloneNode(!0);if(e.tagName.toLowerCase()===`schmancy-dropdown-content`){let e=(0,r.fromEvent)(t,`slotchange`).subscribe(()=>{let e=t.shadowRoot?.querySelector(`[part="content"]`);e&&e.classList.add(`schmancy-dropdown-content`)});this.portalSubscriptions.push(e)}this.portal?.appendChild(t)}))}handleTriggerClick(e){e.stopPropagation(),this.toggle()}render(){return a.html`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./tailwind.mixin-BHX99hgX.cjs`),t=require(`./decorate-F9CuyeHg.cjs`),n=require(`./litElement.mixin-lYlKxxjR.cjs`);require(`./mixins.cjs`);let r=require(`rxjs`),i=require(`lit/decorators.js`),a=require(`lit`),o=require(`@floating-ui/dom`);var s=class extends n.t(){constructor(...e){super(...e),this.open=!1,this.placement=`bottom-start`,this.distance=8,this.portal=null,this.portalSubscriptions=[]}connectedCallback(){super.connectedCallback(),this.setupPortal(),(0,r.fromEvent)(document,`click`).pipe((0,r.filter)(e=>this.open&&!this.isEventFromSelf(e)),(0,r.takeUntil)(this.disconnecting)).subscribe(()=>{this.open=!1}),(0,r.fromEvent)(document,`keydown`).pipe((0,r.filter)(e=>this.open&&e.key===`Escape`),(0,r.takeUntil)(this.disconnecting)).subscribe(()=>{this.open=!1})}setupPortal(){let e=document.getElementById(`schmancy-portal-container`);e||(e=document.createElement(`div`),e.id=`schmancy-portal-container`,e.style.position=`fixed`,e.style.zIndex=`10000`,e.style.top=`0`,e.style.left=`0`,e.style.pointerEvents=`none`,document.body.appendChild(e));let t=document.createElement(`div`);t.className=`schmancy-dropdown-portal`,t.style.position=`absolute`,t.style.pointerEvents=`auto`,t.style.display=`none`,e.appendChild(t),this.portal=t}isEventFromSelf(e){return e.composedPath().some(e=>e===this)}disconnectedCallback(){this.cleanupPositioner?.(),this.portalSubscriptions.forEach(e=>e.unsubscribe()),this.portalSubscriptions=[],this.portal&&=(this.portal.remove(),null),super.disconnectedCallback()}toggle(){this.open=!this.open}updated(e){super.updated(e),e.has(`open`)&&(this.open?this.setupPositioner():(this.cleanupPositioner?.(),this.portal&&(this.portal.style.display=`none`,this.portal.innerHTML=``,this.portalSubscriptions.forEach(e=>e.unsubscribe()),this.portalSubscriptions=[])))}setupPositioner(){this.triggerContainer&&this.portal&&(this.portal.style.display=`block`,this.teleportContentToPortal(),this.cleanupPositioner=(0,o.autoUpdate)(this.triggerContainer,this.portal,()=>{(0,o.computePosition)(this.triggerContainer,this.portal,{placement:this.placement,middleware:[(0,o.offset)(this.distance),(0,o.flip)({fallbackPlacements:[`top-start`,`bottom-start`]}),(0,o.shift)({padding:0})]}).then(({x:e,y:t})=>{Object.assign(this.portal.style,{left:`${e}px`,top:t-8+`px`})})}))}teleportContentToPortal(){this.portal&&(this.portalSubscriptions.forEach(e=>e.unsubscribe()),this.portalSubscriptions=[],this.portal.innerHTML=``,this.contentElements.forEach(e=>{let t=e.cloneNode(!0);if(e.tagName.toLowerCase()===`schmancy-dropdown-content`){let e=(0,r.fromEvent)(t,`slotchange`).subscribe(()=>{let e=t.shadowRoot?.querySelector(`[part="content"]`);e&&e.classList.add(`schmancy-dropdown-content`)});this.portalSubscriptions.push(e)}this.portal?.appendChild(t)}))}handleTriggerClick(e){e.stopPropagation(),this.toggle()}render(){return a.html`
2
2
  <div class="trigger-container" @click=${this.handleTriggerClick}>
3
3
  <slot name="trigger"></slot>
4
4
  </div>
package/dist/dropdown.js CHANGED
@@ -1,6 +1,6 @@
1
- import { t as e } from "./tailwind.mixin-H5Pn7vSJ.js";
1
+ import { t as e } from "./tailwind.mixin-DIEGVcl3.js";
2
2
  import { t } from "./decorate-D_utPUsC.js";
3
- import { t as n } from "./litElement.mixin-BnNYZ24e.js";
3
+ import { t as n } from "./litElement.mixin-BuZ28ZzP.js";
4
4
  import "./mixins.js";
5
5
  import { filter as r, fromEvent as i, takeUntil as a } from "rxjs";
6
6
  import { customElement as o, property as s, query as c, queryAssignedElements as l, state as u } from "lit/decorators.js";
@@ -1,10 +1,10 @@
1
- import { t as e } from "./tailwind.mixin-H5Pn7vSJ.js";
1
+ import { t as e } from "./tailwind.mixin-DIEGVcl3.js";
2
2
  import { t } from "./decorate-D_utPUsC.js";
3
3
  import { t as n } from "./surface.mixin-DqMwoddO.js";
4
4
  import "./mixins.js";
5
5
  import { d as r, f as i } from "./animation-hXFClrIn.js";
6
6
  import { t as a } from "./reduced-motion-BZTLqAyl.js";
7
- import "./surface-0XM4DBaT.js";
7
+ import "./surface-BWcq30OL.js";
8
8
  import { filter as o, fromEvent as s, lastValueFrom as c } from "rxjs";
9
9
  import { takeUntil as l, tap as u } from "rxjs/operators";
10
10
  import { styleMap as d } from "lit/directives/style-map.js";