@mhmo91/schmancy 0.10.4 → 0.10.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (478) hide show
  1. package/custom-elements.json +43 -949
  2. package/dist/agent/{flow-CaPi2G8y.js.map → flow-3RrZM-e7.js.map} +1 -1
  3. package/dist/agent/schmancy.agent.js +3817 -6527
  4. package/dist/agent/schmancy.agent.js.map +1 -1
  5. package/dist/agent/schmancy.manifest.json +10 -680
  6. package/dist/agent/{vendor-jsqr-r7GNh4P3.js.map → vendor-jsqr-BUVwyoGC.js.map} +1 -1
  7. package/dist/agent/{vendor-material-color-Be96dpGE.js.map → vendor-material-color-33Mj762T.js.map} +1 -1
  8. package/dist/{area-DHVANBbr.js → area-CIZZ5tbB.js} +1 -1
  9. package/dist/{area-DHVANBbr.js.map → area-CIZZ5tbB.js.map} +1 -1
  10. package/dist/{area-ZupIezvU.cjs → area-oZjYJlUy.cjs} +1 -1
  11. package/dist/{area-ZupIezvU.cjs.map → area-oZjYJlUy.cjs.map} +1 -1
  12. package/dist/area.cjs +1 -1
  13. package/dist/area.js +1 -1
  14. package/dist/{autocomplete-pHvsyfbH.js → autocomplete-C1oDLuol.js} +2 -2
  15. package/dist/{autocomplete-pHvsyfbH.js.map → autocomplete-C1oDLuol.js.map} +1 -1
  16. package/dist/{autocomplete-Bn525CTp.cjs → autocomplete-X20i6D62.cjs} +1 -1
  17. package/dist/{autocomplete-Bn525CTp.cjs.map → autocomplete-X20i6D62.cjs.map} +1 -1
  18. package/dist/autocomplete.cjs +1 -1
  19. package/dist/autocomplete.js +1 -1
  20. package/dist/avatar.cjs +1 -1
  21. package/dist/avatar.js +2 -2
  22. package/dist/badge.cjs +1 -1
  23. package/dist/badge.js +1 -1
  24. package/dist/{boat-IyEtsNI4.cjs → boat-CUx58Gwe.cjs} +1 -1
  25. package/dist/{boat-IyEtsNI4.cjs.map → boat-CUx58Gwe.cjs.map} +1 -1
  26. package/dist/{boat-_Yv3M6YM.js → boat-CpE0yAlK.js} +2 -2
  27. package/dist/{boat-_Yv3M6YM.js.map → boat-CpE0yAlK.js.map} +1 -1
  28. package/dist/boat.cjs +1 -1
  29. package/dist/boat.js +1 -1
  30. package/dist/breadcrumb.cjs +1 -1
  31. package/dist/breadcrumb.js +1 -1
  32. package/dist/{busy-Ck2IXJ4r.js → busy-C9n-DUY4.js} +1 -1
  33. package/dist/{busy-Ck2IXJ4r.js.map → busy-C9n-DUY4.js.map} +1 -1
  34. package/dist/{busy-CjM39APN.cjs → busy-D1DKZhgV.cjs} +1 -1
  35. package/dist/{busy-CjM39APN.cjs.map → busy-D1DKZhgV.cjs.map} +1 -1
  36. package/dist/busy.cjs +1 -1
  37. package/dist/busy.js +1 -1
  38. package/dist/button.cjs +1 -1
  39. package/dist/button.js +3 -3
  40. package/dist/{card-DUWZmMHc.js → card-B3hN-qzk.js} +1 -1
  41. package/dist/{card-DUWZmMHc.js.map → card-B3hN-qzk.js.map} +1 -1
  42. package/dist/{card-DIxDuuth.cjs → card-DZJ7qjf2.cjs} +1 -1
  43. package/dist/{card-DIxDuuth.cjs.map → card-DZJ7qjf2.cjs.map} +1 -1
  44. package/dist/card.cjs +1 -1
  45. package/dist/card.js +1 -1
  46. package/dist/charts.cjs +1 -1
  47. package/dist/charts.js +1 -1
  48. package/dist/{checkbox-DPS1mWG-.js → checkbox-CvmB1ev9.js} +1 -1
  49. package/dist/{checkbox-DPS1mWG-.js.map → checkbox-CvmB1ev9.js.map} +1 -1
  50. package/dist/{checkbox-CGdFXuWQ.cjs → checkbox-DapdzDow.cjs} +1 -1
  51. package/dist/{checkbox-CGdFXuWQ.cjs.map → checkbox-DapdzDow.cjs.map} +1 -1
  52. package/dist/checkbox.cjs +1 -1
  53. package/dist/checkbox.js +1 -1
  54. package/dist/{chips-UoFbwmlG.cjs → chips-7g6mWRuh.cjs} +1 -1
  55. package/dist/{chips-UoFbwmlG.cjs.map → chips-7g6mWRuh.cjs.map} +1 -1
  56. package/dist/{chips-BnnXQSA-.js → chips-C8Y3_3ke.js} +4 -4
  57. package/dist/{chips-BnnXQSA-.js.map → chips-C8Y3_3ke.js.map} +1 -1
  58. package/dist/chips.cjs +1 -1
  59. package/dist/chips.js +2 -2
  60. package/dist/connectivity.cjs +1 -1
  61. package/dist/connectivity.js +1 -1
  62. package/dist/content-drawer.cjs +1 -1
  63. package/dist/content-drawer.js +1 -1
  64. package/dist/{context-daN5G6HS.cjs.map → context-BpCETidA.cjs.map} +1 -1
  65. package/dist/{context-Bdu1xt0W.js.map → context-DJTJnSK4.js.map} +1 -1
  66. package/dist/{date-range-DOstCIg8.js → date-range-DdcaPX7C.js} +99 -113
  67. package/dist/date-range-DdcaPX7C.js.map +1 -0
  68. package/dist/date-range-ZfUl4duV.cjs +131 -0
  69. package/dist/date-range-ZfUl4duV.cjs.map +1 -0
  70. package/dist/{date-range-inline-4P7zqeVe.cjs → date-range-inline-D-d7N6bh.cjs} +1 -1
  71. package/dist/{date-range-inline-4P7zqeVe.cjs.map → date-range-inline-D-d7N6bh.cjs.map} +1 -1
  72. package/dist/{date-range-inline-BVycTWLb.js → date-range-inline-QQmIWhZ4.js} +1 -1
  73. package/dist/{date-range-inline-BVycTWLb.js.map → date-range-inline-QQmIWhZ4.js.map} +1 -1
  74. package/dist/date-range-inline.cjs +1 -1
  75. package/dist/date-range-inline.js +1 -1
  76. package/dist/date-range.cjs +1 -1
  77. package/dist/date-range.js +1 -1
  78. package/dist/delay.cjs +1 -1
  79. package/dist/delay.js +2 -2
  80. package/dist/{details-BJBbZOO6.cjs → details-3rL6UQU8.cjs} +1 -1
  81. package/dist/{details-BJBbZOO6.cjs.map → details-3rL6UQU8.cjs.map} +1 -1
  82. package/dist/{details-DPc5GxPa.js → details-Dpjh-XnJ.js} +2 -2
  83. package/dist/{details-DPc5GxPa.js.map → details-Dpjh-XnJ.js.map} +1 -1
  84. package/dist/details.cjs +1 -1
  85. package/dist/details.js +1 -1
  86. package/dist/directives.cjs +1 -1
  87. package/dist/directives.js +2 -2
  88. package/dist/{divider-BvJsmSPH.js → divider-BdfEKQsH.js} +1 -1
  89. package/dist/{divider-BvJsmSPH.js.map → divider-BdfEKQsH.js.map} +1 -1
  90. package/dist/{divider-DPT3XnG5.cjs → divider-CutXDz3F.cjs} +1 -1
  91. package/dist/{divider-DPT3XnG5.cjs.map → divider-CutXDz3F.cjs.map} +1 -1
  92. package/dist/divider.cjs +1 -1
  93. package/dist/divider.js +1 -1
  94. package/dist/dropdown.cjs +1 -1
  95. package/dist/dropdown.js +1 -1
  96. package/dist/{expand-CTqBWVXo.cjs → expand-DM6zfZf7.cjs} +1 -1
  97. package/dist/{expand-CTqBWVXo.cjs.map → expand-DM6zfZf7.cjs.map} +1 -1
  98. package/dist/{expand-BMzocdtj.js → expand-DrgMPJbu.js} +2 -2
  99. package/dist/{expand-BMzocdtj.js.map → expand-DrgMPJbu.js.map} +1 -1
  100. package/dist/expand.cjs +1 -1
  101. package/dist/expand.js +1 -1
  102. package/dist/{extra-BeHlUhzv.js → extra-B6gFu4_1.js} +1 -1
  103. package/dist/{extra-BeHlUhzv.js.map → extra-B6gFu4_1.js.map} +1 -1
  104. package/dist/{extra-h_cuxRII.cjs → extra-DJRYaOXe.cjs} +1 -1
  105. package/dist/{extra-h_cuxRII.cjs.map → extra-DJRYaOXe.cjs.map} +1 -1
  106. package/dist/extra.cjs +1 -1
  107. package/dist/extra.js +1 -1
  108. package/dist/{float-CTc1xxqH.js → float-1iihPek5.js} +1 -1
  109. package/dist/{float-CTc1xxqH.js.map → float-1iihPek5.js.map} +1 -1
  110. package/dist/{float-CwVBs11k.cjs → float-Ckyk85XG.cjs} +1 -1
  111. package/dist/{float-CwVBs11k.cjs.map → float-Ckyk85XG.cjs.map} +1 -1
  112. package/dist/float.cjs +1 -1
  113. package/dist/float.js +1 -1
  114. package/dist/{form-BtwOBMZ9.js.map → form-BF1c3Dk1.js.map} +1 -1
  115. package/dist/{form-CSJp687X.cjs.map → form-DeO5XX3b.cjs.map} +1 -1
  116. package/dist/form.cjs +1 -1
  117. package/dist/form.js +1 -1
  118. package/dist/handover/agent-runtime-followups.md +1 -1
  119. package/dist/handover/agent-runtime-v1.md +3 -3
  120. package/dist/{hashContent-1ARKIsx9.js.map → hashContent-BU6jl5ih.js.map} +1 -1
  121. package/dist/{hashContent-Bp5S6T4U.cjs.map → hashContent-Bobsobip.cjs.map} +1 -1
  122. package/dist/{icons-qEQW4pjM.cjs → icons-CV-fiGcW.cjs} +1 -1
  123. package/dist/{icons-qEQW4pjM.cjs.map → icons-CV-fiGcW.cjs.map} +1 -1
  124. package/dist/{icons-BbCVrcas.js → icons-DUkcTZAY.js} +2 -2
  125. package/dist/{icons-BbCVrcas.js.map → icons-DUkcTZAY.js.map} +1 -1
  126. package/dist/icons.cjs +1 -1
  127. package/dist/icons.js +1 -1
  128. package/dist/{iframe-BJfDIEJf.js → iframe-C9tj7F6Y.js} +1 -1
  129. package/dist/{iframe-BJfDIEJf.js.map → iframe-C9tj7F6Y.js.map} +1 -1
  130. package/dist/{iframe-D6HTruav.cjs → iframe-DF97oGtZ.cjs} +1 -1
  131. package/dist/{iframe-D6HTruav.cjs.map → iframe-DF97oGtZ.cjs.map} +1 -1
  132. package/dist/iframe.cjs +1 -1
  133. package/dist/iframe.js +1 -1
  134. package/dist/index.cjs +1 -1
  135. package/dist/index.js +70 -76
  136. package/dist/{input-LTK3cctF.js → input-DE7x223Y.js} +1 -1
  137. package/dist/{input-LTK3cctF.js.map → input-DE7x223Y.js.map} +1 -1
  138. package/dist/{input-U26axtcs.cjs → input-TW9G3n7X.cjs} +1 -1
  139. package/dist/{input-U26axtcs.cjs.map → input-TW9G3n7X.cjs.map} +1 -1
  140. package/dist/{input-chip-Ch-aCs3c.js → input-chip-BdoaVw_D.js} +1 -1
  141. package/dist/{input-chip-Ch-aCs3c.js.map → input-chip-BdoaVw_D.js.map} +1 -1
  142. package/dist/{input-chip-CADXt0X5.cjs → input-chip-Do48eI5r.cjs} +1 -1
  143. package/dist/{input-chip-CADXt0X5.cjs.map → input-chip-Do48eI5r.cjs.map} +1 -1
  144. package/dist/input.cjs +1 -1
  145. package/dist/input.js +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-C4xmnU4n.js → layout-CXPNsUIo.js} +1 -1
  151. package/dist/{layout-C4xmnU4n.js.map → layout-CXPNsUIo.js.map} +1 -1
  152. package/dist/{layout-Dmh6fxh0.cjs → layout-Zhe7wSZ_.cjs} +1 -1
  153. package/dist/{layout-Dmh6fxh0.cjs.map → layout-Zhe7wSZ_.cjs.map} +1 -1
  154. package/dist/layout.cjs +1 -1
  155. package/dist/layout.js +1 -1
  156. package/dist/{lightbox-DqG2z3Cn.js → lightbox-DcutIyjx.js} +2 -2
  157. package/dist/{lightbox-DqG2z3Cn.js.map → lightbox-DcutIyjx.js.map} +1 -1
  158. package/dist/{lightbox-DbYUSfVl.cjs → lightbox-sPfnYzjJ.cjs} +1 -1
  159. package/dist/{lightbox-DbYUSfVl.cjs.map → lightbox-sPfnYzjJ.cjs.map} +1 -1
  160. package/dist/lightbox.cjs +1 -1
  161. package/dist/lightbox.js +1 -1
  162. package/dist/{list-D6-_E5ZD.js → list-BWrtrdgs.js} +1 -1
  163. package/dist/{list-D6-_E5ZD.js.map → list-BWrtrdgs.js.map} +1 -1
  164. package/dist/{list-CLX4sSAw.cjs → list-C4vasUly.cjs} +1 -1
  165. package/dist/{list-CLX4sSAw.cjs.map → list-C4vasUly.cjs.map} +1 -1
  166. package/dist/list.cjs +1 -1
  167. package/dist/list.js +1 -1
  168. package/dist/{magnetic-BH0TsofV.cjs.map → magnetic-BJgB1dVi.cjs.map} +1 -1
  169. package/dist/{magnetic-BZGFxAWG.js.map → magnetic-YwCNvtbB.js.map} +1 -1
  170. package/dist/{map-WXeVkx2K.cjs → map-BAQ9FEB6.cjs} +1 -1
  171. package/dist/{map-WXeVkx2K.cjs.map → map-BAQ9FEB6.cjs.map} +1 -1
  172. package/dist/{map-Dhy3ta9v.js → map-CEreveeI.js} +1 -1
  173. package/dist/{map-Dhy3ta9v.js.map → map-CEreveeI.js.map} +1 -1
  174. package/dist/map.cjs +1 -1
  175. package/dist/map.js +1 -1
  176. package/dist/menu-3yXDZusj.cjs +23 -0
  177. package/dist/menu-3yXDZusj.cjs.map +1 -0
  178. package/dist/menu-CxChOxWT.js +62 -0
  179. package/dist/menu-CxChOxWT.js.map +1 -0
  180. package/dist/menu.cjs +1 -1
  181. package/dist/menu.js +1 -1
  182. package/dist/mixins-Db7gjDah.cjs +298 -0
  183. package/dist/{mixins-De3xfjrm.cjs.map → mixins-Db7gjDah.cjs.map} +1 -1
  184. package/dist/mixins-Dw6hVfy-.js +627 -0
  185. package/dist/{mixins-CcIWET41.js.map → mixins-Dw6hVfy-.js.map} +1 -1
  186. package/dist/mixins.cjs +1 -1
  187. package/dist/mixins.js +1 -1
  188. package/dist/nav-drawer.cjs +1 -1
  189. package/dist/nav-drawer.js +1 -1
  190. package/dist/navigation-bar.cjs +1 -1
  191. package/dist/navigation-bar.js +1 -1
  192. package/dist/navigation-rail.cjs +1 -1
  193. package/dist/navigation-rail.js +1 -1
  194. package/dist/{notification-D_PQjBSf.cjs → notification-DKYy9qVe.cjs} +1 -1
  195. package/dist/{notification-D_PQjBSf.cjs.map → notification-DKYy9qVe.cjs.map} +1 -1
  196. package/dist/{notification-CVLqQ8c_.js → notification-ycbUBbOu.js} +2 -2
  197. package/dist/{notification-CVLqQ8c_.js.map → notification-ycbUBbOu.js.map} +1 -1
  198. package/dist/notification.cjs +1 -1
  199. package/dist/notification.js +1 -1
  200. package/dist/{option-rm4HebVs.js → option-DtOhMd3k.js} +1 -1
  201. package/dist/{option-rm4HebVs.js.map → option-DtOhMd3k.js.map} +1 -1
  202. package/dist/{option-DDU_goh1.cjs → option-zgVge3BH.cjs} +1 -1
  203. package/dist/{option-DDU_goh1.cjs.map → option-zgVge3BH.cjs.map} +1 -1
  204. package/dist/option.cjs +1 -1
  205. package/dist/option.js +1 -1
  206. package/dist/{overlay-stack-CAQno0CK.js.map → overlay-stack-DCDS17uj.js.map} +1 -1
  207. package/dist/{overlay-stack-BprhAE9a.cjs.map → overlay-stack-DPIe_aYv.cjs.map} +1 -1
  208. package/dist/overlay.cjs +5 -53
  209. package/dist/overlay.cjs.map +1 -1
  210. package/dist/overlay.confirm-body-AFqYBqrI.js +104 -0
  211. package/dist/overlay.confirm-body-AFqYBqrI.js.map +1 -0
  212. package/dist/overlay.confirm-body-DctQLDao.cjs +49 -0
  213. package/dist/overlay.confirm-body-DctQLDao.cjs.map +1 -0
  214. package/dist/overlay.js +120 -360
  215. package/dist/overlay.js.map +1 -1
  216. package/dist/overlay.service-B9On2-Aa.js +146 -0
  217. package/dist/overlay.service-B9On2-Aa.js.map +1 -0
  218. package/dist/overlay.service-k2nCE4pi.cjs +1 -0
  219. package/dist/overlay.service-k2nCE4pi.cjs.map +1 -0
  220. package/dist/page.cjs +1 -1
  221. package/dist/page.js +4 -4
  222. package/dist/{payment-card-form-C0dHYZIv.js → payment-card-form-Be1-OVlL.js} +1 -1
  223. package/dist/{payment-card-form-C0dHYZIv.js.map → payment-card-form-Be1-OVlL.js.map} +1 -1
  224. package/dist/{payment-card-form-DNvmZxs4.cjs → payment-card-form-CNnGePG4.cjs} +1 -1
  225. package/dist/{payment-card-form-DNvmZxs4.cjs.map → payment-card-form-CNnGePG4.cjs.map} +1 -1
  226. package/dist/payment-card-form.cjs +1 -1
  227. package/dist/payment-card-form.js +1 -1
  228. package/dist/{progress-BRerM5Bn.js → progress-BFWzmTlz.js} +1 -1
  229. package/dist/{progress-BRerM5Bn.js.map → progress-BFWzmTlz.js.map} +1 -1
  230. package/dist/{progress-U3LQkpM2.cjs → progress-C4TGG2eN.cjs} +1 -1
  231. package/dist/{progress-U3LQkpM2.cjs.map → progress-C4TGG2eN.cjs.map} +1 -1
  232. package/dist/progress.cjs +1 -1
  233. package/dist/progress.js +1 -1
  234. package/dist/qr-scanner.cjs +1 -1
  235. package/dist/qr-scanner.js +1 -1
  236. package/dist/{radio-group-BZ2WoOXJ.js → radio-group-DTNAW5dd.js} +1 -1
  237. package/dist/{radio-group-BZ2WoOXJ.js.map → radio-group-DTNAW5dd.js.map} +1 -1
  238. package/dist/{radio-group-D7mm-yvJ.cjs → radio-group-xLRp1g57.cjs} +1 -1
  239. package/dist/{radio-group-D7mm-yvJ.cjs.map → radio-group-xLRp1g57.cjs.map} +1 -1
  240. package/dist/radio-group.cjs +1 -1
  241. package/dist/radio-group.js +1 -1
  242. package/dist/range.cjs +1 -1
  243. package/dist/range.js +1 -1
  244. package/dist/{rxjs-utils-d-ivVN84.js.map → rxjs-utils-BK8VMe3K.js.map} +1 -1
  245. package/dist/{rxjs-utils-Csnks202.cjs.map → rxjs-utils-DhOKenkS.cjs.map} +1 -1
  246. package/dist/rxjs-utils.cjs +1 -1
  247. package/dist/rxjs-utils.js +1 -1
  248. package/dist/{scroll-qL-HkMdP.js → scroll-BCmdqSQU.js} +1 -1
  249. package/dist/{scroll-qL-HkMdP.js.map → scroll-BCmdqSQU.js.map} +1 -1
  250. package/dist/{scroll-DJTjNIT_.cjs → scroll-Bdgb-vRy.cjs} +1 -1
  251. package/dist/{scroll-DJTjNIT_.cjs.map → scroll-Bdgb-vRy.cjs.map} +1 -1
  252. package/dist/{select-CnPXUeSf.js → select-COGARE0b.js} +2 -2
  253. package/dist/{select-CnPXUeSf.js.map → select-COGARE0b.js.map} +1 -1
  254. package/dist/{select-BvA7v-gL.cjs → select-Cv5t_PT3.cjs} +1 -1
  255. package/dist/{select-BvA7v-gL.cjs.map → select-Cv5t_PT3.cjs.map} +1 -1
  256. package/dist/select.cjs +1 -1
  257. package/dist/select.js +1 -1
  258. package/dist/skeleton.cjs +1 -1
  259. package/dist/skeleton.js +1 -1
  260. package/dist/skills/INDEX.md +3 -6
  261. package/dist/skills/SKILL.md +13 -9
  262. package/dist/skills/schmancy/INDEX.md +3 -6
  263. package/dist/skills/schmancy/SKILL.md +13 -9
  264. package/dist/slider.cjs +1 -1
  265. package/dist/slider.js +1 -1
  266. package/dist/{splash-screen-BDt4PInk.cjs → splash-screen-B8rFbjqT.cjs} +1 -1
  267. package/dist/{splash-screen-BDt4PInk.cjs.map → splash-screen-B8rFbjqT.cjs.map} +1 -1
  268. package/dist/{splash-screen-C8JCqX5L.js → splash-screen-DbGbGttg.js} +1 -1
  269. package/dist/{splash-screen-C8JCqX5L.js.map → splash-screen-DbGbGttg.js.map} +1 -1
  270. package/dist/splash-screen.cjs +1 -1
  271. package/dist/splash-screen.js +1 -1
  272. package/dist/{src-CqdnWGgr.js → src-YRir9pOP.js} +162 -162
  273. package/dist/src-YRir9pOP.js.map +1 -0
  274. package/dist/{src-CpRNClhg.cjs → src-b8D-Ec-Q.cjs} +13 -13
  275. package/dist/src-b8D-Ec-Q.cjs.map +1 -0
  276. package/dist/steps.cjs +1 -1
  277. package/dist/steps.js +1 -1
  278. package/dist/{surface-C8jQy8Ym.js → surface-BE7sGTBt.js} +1 -1
  279. package/dist/{surface-C8jQy8Ym.js.map → surface-BE7sGTBt.js.map} +1 -1
  280. package/dist/{surface-Du2Y4vXd.cjs → surface-BvudRtf5.cjs} +1 -1
  281. package/dist/{surface-Du2Y4vXd.cjs.map → surface-BvudRtf5.cjs.map} +1 -1
  282. package/dist/surface.cjs +1 -1
  283. package/dist/surface.js +1 -1
  284. package/dist/switch.cjs +1 -1
  285. package/dist/switch.js +1 -1
  286. package/dist/table.cjs +1 -1
  287. package/dist/table.js +1 -1
  288. package/dist/{tabs-0RfeCa00.cjs → tabs-C0XKld1Z.cjs} +1 -1
  289. package/dist/{tabs-0RfeCa00.cjs.map → tabs-C0XKld1Z.cjs.map} +1 -1
  290. package/dist/{tabs-Cyahh9Q6.js → tabs-DIzCRsA3.js} +1 -1
  291. package/dist/{tabs-Cyahh9Q6.js.map → tabs-DIzCRsA3.js.map} +1 -1
  292. package/dist/tabs.cjs +1 -1
  293. package/dist/tabs.js +1 -1
  294. package/dist/teleport.cjs +1 -1
  295. package/dist/teleport.js +1 -1
  296. package/dist/{textarea-jqRrLxmo.cjs → textarea-BCDCGCJd.cjs} +1 -1
  297. package/dist/{textarea-jqRrLxmo.cjs.map → textarea-BCDCGCJd.cjs.map} +1 -1
  298. package/dist/{textarea-CXCcTVnf.js → textarea-UbZzBwqm.js} +1 -1
  299. package/dist/{textarea-CXCcTVnf.js.map → textarea-UbZzBwqm.js.map} +1 -1
  300. package/dist/textarea.cjs +1 -1
  301. package/dist/textarea.js +1 -1
  302. package/dist/theme-CIsI-sFj.cjs +181 -0
  303. package/dist/{theme-Hjz9sCN-.cjs.map → theme-CIsI-sFj.cjs.map} +1 -1
  304. package/dist/{theme-2KZW2Rfs.js → theme-Qh-yPEPL.js} +3 -4
  305. package/dist/{theme-2KZW2Rfs.js.map → theme-Qh-yPEPL.js.map} +1 -1
  306. package/dist/{theme-button-9uF1eoHz.js → theme-button-CjTnfs9x.js} +1 -1
  307. package/dist/{theme-button-9uF1eoHz.js.map → theme-button-CjTnfs9x.js.map} +1 -1
  308. package/dist/{theme-button-C7QIbke1.cjs → theme-button-Dv1D_Vil.cjs} +1 -1
  309. package/dist/{theme-button-C7QIbke1.cjs.map → theme-button-Dv1D_Vil.cjs.map} +1 -1
  310. package/dist/theme-button.cjs +1 -1
  311. package/dist/theme-button.js +1 -1
  312. package/dist/theme.cjs +1 -1
  313. package/dist/{theme.interface-D9l33b-M.cjs.map → theme.interface-BeW-sz_g.cjs.map} +1 -1
  314. package/dist/{theme.interface-DnVNre4O.js.map → theme.interface-v7SkAnDH.js.map} +1 -1
  315. package/dist/theme.js +5 -6
  316. package/dist/theme.service-Cfk88qHK.cjs +1 -0
  317. package/dist/theme.service-Cfk88qHK.cjs.map +1 -0
  318. package/dist/{theme.service-CmbOGMA8.js → theme.service-DIUo1mBP.js} +13 -14
  319. package/dist/theme.service-DIUo1mBP.js.map +1 -0
  320. package/dist/timeline.cjs +1 -1
  321. package/dist/timeline.js +1 -1
  322. package/dist/tree.cjs +1 -1
  323. package/dist/tree.js +1 -1
  324. package/dist/typography.cjs +1 -1
  325. package/dist/typography.js +1 -1
  326. package/dist/{utils-hp-DnFf5.js → utils-BfOze6Tk.js} +1 -1
  327. package/dist/{utils-hp-DnFf5.js.map → utils-BfOze6Tk.js.map} +1 -1
  328. package/dist/{utils-Cr-YO4Np.cjs → utils-CJ9y2Jz9.cjs} +1 -1
  329. package/dist/{utils-Cr-YO4Np.cjs.map → utils-CJ9y2Jz9.cjs.map} +1 -1
  330. package/dist/utils.cjs +1 -1
  331. package/dist/utils.js +2 -2
  332. package/dist/visually-hidden.cjs +1 -1
  333. package/dist/visually-hidden.js +1 -1
  334. package/dist/{window-DtUOWiAj.cjs → window-9HOUXrTU.cjs} +1 -1
  335. package/dist/{window-DtUOWiAj.cjs.map → window-9HOUXrTU.cjs.map} +1 -1
  336. package/dist/{window-C7yY9yp5.js → window-B_55dzk0.js} +3 -3
  337. package/dist/{window-C7yY9yp5.js.map → window-B_55dzk0.js.map} +1 -1
  338. package/dist/window.cjs +1 -1
  339. package/dist/window.js +1 -1
  340. package/package.json +1 -2
  341. package/skills/schmancy/INDEX.md +3 -6
  342. package/skills/schmancy/SKILL.md +13 -9
  343. package/src/content-drawer/drawer.ts +24 -7
  344. package/src/content-drawer/events.ts +6 -0
  345. package/src/content-drawer/sheet.ts +13 -12
  346. package/src/date-range/date-range-dialog.ts +4 -4
  347. package/src/date-range/date-range.ts +35 -53
  348. package/src/index.ts +0 -4
  349. package/src/menu/menu-item.ts +7 -2
  350. package/src/menu/menu.ts +24 -20
  351. package/types/src/content-drawer/drawer.d.ts +2 -0
  352. package/types/src/content-drawer/events.d.ts +6 -0
  353. package/types/src/content-drawer/sheet.d.ts +6 -5
  354. package/types/src/date-range/date-range.d.ts +1 -5
  355. package/types/src/index.d.ts +0 -4
  356. package/types/src/menu/menu-item.d.ts +1 -0
  357. package/types/src/menu/menu.d.ts +9 -7
  358. package/dist/agent/vendor-highlight-CHJZQQB7.js +0 -2178
  359. package/dist/agent/vendor-highlight-CHJZQQB7.js.map +0 -1
  360. package/dist/code-highlight-CMilN0B8.cjs +0 -190
  361. package/dist/code-highlight-CMilN0B8.cjs.map +0 -1
  362. package/dist/code-highlight-kFUJ1Eet.js +0 -296
  363. package/dist/code-highlight-kFUJ1Eet.js.map +0 -1
  364. package/dist/code-highlight.cjs +0 -1
  365. package/dist/code-highlight.js +0 -2
  366. package/dist/date-range-BIyrzTRZ.cjs +0 -131
  367. package/dist/date-range-BIyrzTRZ.cjs.map +0 -1
  368. package/dist/date-range-DOstCIg8.js.map +0 -1
  369. package/dist/dialog-service-DI9PPy4H.js +0 -193
  370. package/dist/dialog-service-DI9PPy4H.js.map +0 -1
  371. package/dist/dialog-service-DJd5L0f5.cjs +0 -1
  372. package/dist/dialog-service-DJd5L0f5.cjs.map +0 -1
  373. package/dist/dialog.cjs +0 -89
  374. package/dist/dialog.cjs.map +0 -1
  375. package/dist/dialog.js +0 -419
  376. package/dist/dialog.js.map +0 -1
  377. package/dist/mailbox-Ct6iYe-4.cjs +0 -1140
  378. package/dist/mailbox-Ct6iYe-4.cjs.map +0 -1
  379. package/dist/mailbox-DsPII8HR.js +0 -1596
  380. package/dist/mailbox-DsPII8HR.js.map +0 -1
  381. package/dist/mailbox.cjs +0 -1
  382. package/dist/mailbox.js +0 -2
  383. package/dist/menu-Bhd3EapX.js +0 -56
  384. package/dist/menu-Bhd3EapX.js.map +0 -1
  385. package/dist/menu-Cg2aaDjs.cjs +0 -23
  386. package/dist/menu-Cg2aaDjs.cjs.map +0 -1
  387. package/dist/mixins-CcIWET41.js +0 -627
  388. package/dist/mixins-De3xfjrm.cjs +0 -298
  389. package/dist/sheet-BRL07BB4.js +0 -170
  390. package/dist/sheet-BRL07BB4.js.map +0 -1
  391. package/dist/sheet-BYQJAHQn.cjs +0 -35
  392. package/dist/sheet-BYQJAHQn.cjs.map +0 -1
  393. package/dist/sheet.cjs +0 -1
  394. package/dist/sheet.js +0 -3
  395. package/dist/sheet.service-B25bsrYG.cjs +0 -1
  396. package/dist/sheet.service-B25bsrYG.cjs.map +0 -1
  397. package/dist/sheet.service-SPQ8oLCi.js +0 -86
  398. package/dist/sheet.service-SPQ8oLCi.js.map +0 -1
  399. package/dist/skills/code-highlight.md +0 -47
  400. package/dist/skills/dialog.md +0 -69
  401. package/dist/skills/mailbox.md +0 -102
  402. package/dist/skills/schmancy/code-highlight.md +0 -47
  403. package/dist/skills/schmancy/dialog.md +0 -69
  404. package/dist/skills/schmancy/mailbox.md +0 -102
  405. package/dist/skills/schmancy/sheet.md +0 -76
  406. package/dist/skills/sheet.md +0 -76
  407. package/dist/src-CpRNClhg.cjs.map +0 -1
  408. package/dist/src-CqdnWGgr.js.map +0 -1
  409. package/dist/theme-Hjz9sCN-.cjs +0 -181
  410. package/dist/theme.events-Cv7N4Toe.js +0 -2
  411. package/dist/theme.events-Cv7N4Toe.js.map +0 -1
  412. package/dist/theme.events-DM4H5F2d.cjs +0 -1
  413. package/dist/theme.events-DM4H5F2d.cjs.map +0 -1
  414. package/dist/theme.service-BrUbGoeQ.cjs +0 -1
  415. package/dist/theme.service-BrUbGoeQ.cjs.map +0 -1
  416. package/dist/theme.service-CmbOGMA8.js.map +0 -1
  417. package/skills/schmancy/code-highlight.md +0 -47
  418. package/skills/schmancy/dialog.md +0 -69
  419. package/skills/schmancy/mailbox.md +0 -102
  420. package/skills/schmancy/sheet.md +0 -76
  421. package/src/code-highlight/code-highlight.ts +0 -345
  422. package/src/code-highlight/code-preview.ts +0 -125
  423. package/src/code-highlight/index.ts +0 -3
  424. package/src/dialog/dialog-base.mixin.ts +0 -576
  425. package/src/dialog/dialog-events.ts +0 -17
  426. package/src/dialog/dialog-service.ts +0 -494
  427. package/src/dialog/dialog.component.ts +0 -414
  428. package/src/dialog/index.ts +0 -3
  429. package/src/mailbox/README.md +0 -128
  430. package/src/mailbox/email-editor.ts +0 -1077
  431. package/src/mailbox/email-layout-selector.ts +0 -58
  432. package/src/mailbox/email-recipients.ts +0 -599
  433. package/src/mailbox/email-template-picker.ts +0 -297
  434. package/src/mailbox/email-viewer.ts +0 -717
  435. package/src/mailbox/index.ts +0 -31
  436. package/src/mailbox/mailbox.ts +0 -364
  437. package/src/mailbox/types.ts +0 -180
  438. package/src/sheet/hook.ts +0 -40
  439. package/src/sheet/index.ts +0 -2
  440. package/src/sheet/sheet.service.ts +0 -245
  441. package/src/sheet/sheet.ts +0 -238
  442. package/types/src/code-highlight/code-highlight.d.ts +0 -49
  443. package/types/src/code-highlight/code-preview.d.ts +0 -30
  444. package/types/src/code-highlight/index.d.ts +0 -3
  445. package/types/src/dialog/dialog-base.mixin.d.ts +0 -30
  446. package/types/src/dialog/dialog-events.d.ts +0 -13
  447. package/types/src/dialog/dialog-service.d.ts +0 -91
  448. package/types/src/dialog/dialog.component.d.ts +0 -150
  449. package/types/src/dialog/index.d.ts +0 -3
  450. package/types/src/mailbox/email-editor.d.ts +0 -101
  451. package/types/src/mailbox/email-layout-selector.d.ts +0 -18
  452. package/types/src/mailbox/email-recipients.d.ts +0 -122
  453. package/types/src/mailbox/email-template-picker.d.ts +0 -54
  454. package/types/src/mailbox/email-viewer.d.ts +0 -86
  455. package/types/src/mailbox/index.d.ts +0 -12
  456. package/types/src/mailbox/mailbox.d.ts +0 -82
  457. package/types/src/mailbox/types.d.ts +0 -176
  458. package/types/src/sheet/hook.d.ts +0 -5
  459. package/types/src/sheet/index.d.ts +0 -2
  460. package/types/src/sheet/sheet.d.ts +0 -29
  461. package/types/src/sheet/sheet.service.d.ts +0 -65
  462. /package/dist/agent/{flow-CaPi2G8y.js → flow-3RrZM-e7.js} +0 -0
  463. /package/dist/agent/{vendor-jsqr-r7GNh4P3.js → vendor-jsqr-BUVwyoGC.js} +0 -0
  464. /package/dist/agent/{vendor-material-color-Be96dpGE.js → vendor-material-color-33Mj762T.js} +0 -0
  465. /package/dist/{context-daN5G6HS.cjs → context-BpCETidA.cjs} +0 -0
  466. /package/dist/{context-Bdu1xt0W.js → context-DJTJnSK4.js} +0 -0
  467. /package/dist/{form-BtwOBMZ9.js → form-BF1c3Dk1.js} +0 -0
  468. /package/dist/{form-CSJp687X.cjs → form-DeO5XX3b.cjs} +0 -0
  469. /package/dist/{hashContent-1ARKIsx9.js → hashContent-BU6jl5ih.js} +0 -0
  470. /package/dist/{hashContent-Bp5S6T4U.cjs → hashContent-Bobsobip.cjs} +0 -0
  471. /package/dist/{magnetic-BH0TsofV.cjs → magnetic-BJgB1dVi.cjs} +0 -0
  472. /package/dist/{magnetic-BZGFxAWG.js → magnetic-YwCNvtbB.js} +0 -0
  473. /package/dist/{overlay-stack-CAQno0CK.js → overlay-stack-DCDS17uj.js} +0 -0
  474. /package/dist/{overlay-stack-BprhAE9a.cjs → overlay-stack-DPIe_aYv.cjs} +0 -0
  475. /package/dist/{rxjs-utils-d-ivVN84.js → rxjs-utils-BK8VMe3K.js} +0 -0
  476. /package/dist/{rxjs-utils-Csnks202.cjs → rxjs-utils-DhOKenkS.cjs} +0 -0
  477. /package/dist/{theme.interface-D9l33b-M.cjs → theme.interface-BeW-sz_g.cjs} +0 -0
  478. /package/dist/{theme.interface-DnVNre4O.js → theme.interface-v7SkAnDH.js} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"src-CqdnWGgr.js","names":[],"sources":["../src/badge/badge.ts","../src/content-drawer/drawer.service.ts","../src/content-drawer/context.ts","../src/content-drawer/drawer.ts","../src/content-drawer/main.ts","../src/content-drawer/sheet.ts","../src/nav-drawer/$navbar.ts","../src/nav-drawer/appbar.ts","../src/nav-drawer/content.ts","../src/nav-drawer/context.ts","../src/nav-drawer/drawer.ts","../src/nav-drawer/navbar.ts","../src/navigation-bar/navigation-bar-item.ts","../src/navigation-bar/navigation-bar.ts","../src/teleport/teleport.service.ts","../src/teleport/watcher.ts","../src/teleport/teleport.component.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { SchmancyTheme } from '..'\n\n/**\n * Badge color types for predefined styles\n */\nexport type BadgeColor = 'primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'error' | 'neutral' | 'surface'\n\n/**\n * Badge size variants\n */\nexport type BadgeSize = 'xs' | 'sm' | 'md' | 'lg'\n\n/**\n * Badge shape variants\n */\nexport type BadgeShape = 'rounded' | 'pill' | 'square'\n\n/**\n * @element sch-badge\n * A versatile badge component for status indicators, labels, and counts\n *\n * @slot - The content of the badge (text or HTML)\n * @slot icon - Optional icon to display before the content\n *\n * @csspart badge - The badge element container\n * @csspart content - The content container\n * @csspart icon - The icon container\n */\n@customElement('schmancy-badge')\nexport class SchmancyBadgeV2 extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: inline-flex;\n\t\twidth: fit-content;\n\t}\n\n\t/* Enhanced pulse animation for better attention-getting */\n\t@keyframes elegant-pulse {\n\t\t0%, 100% {\n\t\t\topacity: 1;\n\t\t}\n\t\t50% {\n\t\t\topacity: 0.85;\n\t\t}\n\t}\n\n\t.animate-pulse {\n\t\tanimation: elegant-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n\t}\n`];\n\t/**\n\t * The color variant of the badge\n\t * @attr\n\t */\n\t@property({ type: String, reflect: true })\n\tcolor: BadgeColor = 'primary'\n\n\t/**\n\t * The size of the badge\n\t * @attr\n\t */\n\t@property({ type: String, reflect: true })\n\tsize: BadgeSize = 'md'\n\n\t/**\n\t * The shape of the badge\n\t * @attr\n\t */\n\t@property({ type: String, reflect: true })\n\tshape: BadgeShape = 'pill'\n\n\t/**\n\t * Whether the badge has an outlined style\n\t * @attr\n\t */\n\t@property({ type: Boolean, reflect: true })\n\toutlined = false\n\n\t/**\n\t * Custom icon name to display (if no icon slot is provided)\n\t * @attr\n\t */\n\t@property({ type: String })\n\ticon = ''\n\n\t/**\n\t * Whether to make the badge pulse to draw attention\n\t * @attr\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpulse = false\n\n\t/**\n\t * Convert the size to appropriate Tailwind classes for the badge container\n\t * Using harmonious padding ratios based on golden ratio principles\n\t * Refined for more elegant proportions\n\t */\n\tprivate getSizeClasses(): string {\n\t\tswitch (this.size) {\n\t\t\tcase 'xs':\n\t\t\t\treturn 'text-xs py-0.75 px-1.5 gap-0.5 leading-none'\n\t\t\tcase 'sm':\n\t\t\t\treturn 'text-xs py-1.5 px-2.5 gap-0.5 tracking-wide leading-none'\n\t\t\tcase 'lg':\n\t\t\t\treturn 'text-base py-2 px-4 gap-1 tracking-wide'\n\t\t\tcase 'md':\n\t\t\tdefault:\n\t\t\t\treturn 'text-sm py-1.5 px-3 gap-0.5'\n\t\t}\n\t}\n\n\t/**\n\t * Get shape classes based on selected shape\n\t */\n\tprivate getShapeClasses(): string {\n\t\tswitch (this.shape) {\n\t\t\tcase 'square':\n\t\t\t\treturn 'rounded'\n\t\t\tcase 'rounded':\n\t\t\t\treturn 'rounded-md'\n\t\t\tcase 'pill':\n\t\t\tdefault:\n\t\t\t\treturn 'rounded-full'\n\t\t}\n\t}\n\n\t/**\n\t * Get icon size based on badge size with harmonious proportions\n\t * Using golden ratio-inspired proportions relative to text size\n\t */\n\tprivate getIconSize(): string {\n\t\tswitch (this.size) {\n\t\t\tcase 'xs':\n\t\t\t\treturn '11px' // Approximately 0.9 × text size (12px × 0.9)\n\t\t\tcase 'sm':\n\t\t\t\treturn '13px' // Approximately 1.1 × text size (12px × 1.1)\n\t\t\tcase 'lg':\n\t\t\t\treturn '18px' // Approximately 1.1 × text size (16px × 1.1)\n\t\t\tcase 'md':\n\t\t\tdefault:\n\t\t\t\treturn '15px' // Approximately 1.1 × text size (14px × 1.1)\n\t\t}\n\t}\n\n\t/**\n\t * Get additional styling for specific sizes\n\t */\n\tprivate getExoticStyles(): Record<string, string> {\n\t\tconst styles: Record<string, string> = {}\n\n\t\tif (this.size === 'lg') {\n\t\t\tstyles.letterSpacing = '0.03em'\n\t\t\tstyles.fontWeight = '500'\n\t\t}\n\n\t\tif (this.size === 'sm') {\n\t\t\tstyles.letterSpacing = '0.02em'\n\t\t}\n\n\t\treturn styles\n\t}\n\n\t/**\n\t * Get background and text colors based on selected color variant\n\t * Enhanced for more elegant color combinations with refined contrasts\n\t */\n\tprivate getColorStyles() {\n\t\tconst colors: Record<BadgeColor, { bg: string; text: string; border?: string }> = {\n\t\t\tprimary: {\n\t\t\t\tbg: this.outlined ? 'transparent' : `color-mix(in srgb, ${SchmancyTheme.sys.color.primary.container} 92%, ${SchmancyTheme.sys.color.primary.default} 8%)`,\n\t\t\t\ttext: this.outlined ? SchmancyTheme.sys.color.primary.default : SchmancyTheme.sys.color.primary.onContainer,\n\t\t\t\tborder: this.outlined ? `color-mix(in srgb, ${SchmancyTheme.sys.color.primary.default} 90%, ${SchmancyTheme.sys.color.surface.highest} 10%)` : undefined,\n\t\t\t},\n\t\t\tsecondary: {\n\t\t\t\tbg: this.outlined ? 'transparent' : `color-mix(in srgb, ${SchmancyTheme.sys.color.secondary.container} 95%, ${SchmancyTheme.sys.color.secondary.default} 5%)`,\n\t\t\t\ttext: this.outlined ? SchmancyTheme.sys.color.secondary.default : SchmancyTheme.sys.color.secondary.onContainer,\n\t\t\t\tborder: this.outlined ? `color-mix(in srgb, ${SchmancyTheme.sys.color.secondary.default} 85%, ${SchmancyTheme.sys.color.surface.highest} 15%)` : undefined,\n\t\t\t},\n\t\t\ttertiary: {\n\t\t\t\tbg: this.outlined ? 'transparent' : `color-mix(in srgb, ${SchmancyTheme.sys.color.tertiary.container} 94%, ${SchmancyTheme.sys.color.tertiary.default} 6%)`,\n\t\t\t\ttext: this.outlined ? SchmancyTheme.sys.color.tertiary.default : SchmancyTheme.sys.color.tertiary.onContainer,\n\t\t\t\tborder: this.outlined ? `color-mix(in srgb, ${SchmancyTheme.sys.color.tertiary.default} 88%, ${SchmancyTheme.sys.color.surface.highest} 12%)` : undefined,\n\t\t\t},\n\t\t\tsuccess: {\n\t\t\t\tbg: this.outlined ? 'transparent' : `color-mix(in srgb, ${SchmancyTheme.sys.color.success.container} 90%, ${SchmancyTheme.sys.color.success.default} 10%)`,\n\t\t\t\ttext: this.outlined ? SchmancyTheme.sys.color.success.default : SchmancyTheme.sys.color.success.onContainer,\n\t\t\t\tborder: this.outlined ? `color-mix(in srgb, ${SchmancyTheme.sys.color.success.default} 85%, ${SchmancyTheme.sys.color.surface.bright} 15%)` : undefined,\n\t\t\t},\n\t\t\twarning: {\n\t\t\t\tbg: this.outlined ? 'transparent' : `color-mix(in srgb, ${SchmancyTheme.sys.color.tertiary.container} 85%, ${SchmancyTheme.sys.color.tertiary.default} 15%)`,\n\t\t\t\ttext: this.outlined ? SchmancyTheme.sys.color.tertiary.default : SchmancyTheme.sys.color.tertiary.onContainer,\n\t\t\t\tborder: this.outlined ? `color-mix(in srgb, ${SchmancyTheme.sys.color.tertiary.default} 90%, ${SchmancyTheme.sys.color.surface.highest} 10%)` : undefined,\n\t\t\t},\n\t\t\terror: {\n\t\t\t\tbg: this.outlined ? 'transparent' : `color-mix(in srgb, ${SchmancyTheme.sys.color.error.container} 92%, ${SchmancyTheme.sys.color.error.default} 8%)`,\n\t\t\t\ttext: this.outlined ? SchmancyTheme.sys.color.error.default : SchmancyTheme.sys.color.error.onContainer,\n\t\t\t\tborder: this.outlined ? `color-mix(in srgb, ${SchmancyTheme.sys.color.error.default} 88%, ${SchmancyTheme.sys.color.surface.bright} 12%)` : undefined,\n\t\t\t},\n\t\t\tneutral: {\n\t\t\t\tbg: this.outlined ? 'transparent' : `color-mix(in srgb, ${SchmancyTheme.sys.color.surface.high} 95%, ${SchmancyTheme.sys.color.outline} 5%)`,\n\t\t\t\ttext: this.outlined ? `color-mix(in srgb, ${SchmancyTheme.sys.color.surface.on} 95%, ${SchmancyTheme.sys.color.surface.default} 5%)` : SchmancyTheme.sys.color.surface.on,\n\t\t\t\tborder: this.outlined ? `color-mix(in srgb, ${SchmancyTheme.sys.color.outline} 85%, ${SchmancyTheme.sys.color.surface.highest} 15%)` : undefined,\n\t\t\t},\n\t\t\tsurface: {\n\t\t\t\tbg: this.outlined ? 'transparent' : SchmancyTheme.sys.color.surface.high,\n\t\t\t\ttext: SchmancyTheme.sys.color.surface.on,\n\t\t\t\tborder: this.outlined ? SchmancyTheme.sys.color.outline : undefined,\n\t\t\t},\n\t\t}\n\n\t\treturn colors[this.color]\n\t}\n\n\trender() {\n\t\tconst sizeClasses = this.getSizeClasses()\n\t\tconst shapeClasses = this.getShapeClasses()\n\t\tconst colorStyles = this.getColorStyles()\n\t\tconst iconSize = this.getIconSize()\n\t\tconst exoticStyles = this.getExoticStyles()\n\n\t\tconst badgeClasses = {\n\t\t\t'inline-flex items-center justify-center font-medium': true,\n\t\t\t'transition-all duration-200 ease-in-out': true,\n\t\t\t[sizeClasses]: true,\n\t\t\t[shapeClasses]: true,\n\t\t\t'animate-pulse': this.pulse,\n\t\t\t'border border-solid': this.outlined,\n\t\t\t'shadow-sm': !this.outlined && this.size === 'sm',\n\t\t\t'shadow': !this.outlined && this.size === 'md',\n\t\t\t'shadow-md': !this.outlined && this.size === 'lg',\n\t\t\t'hover:brightness-95 hover:-translate-y-px': this.outlined,\n\t\t\t'hover:brightness-[0.98]': !this.outlined,\n\t\t}\n\n\t\t// Refined styles for a more elegant look (only CSS that can't be done with Tailwind)\n\t\tconst styles = {\n\t\t\tborderColor: colorStyles.border,\n\t\t\tbackdropFilter: this.outlined ? 'blur(4px)' : undefined,\n\t\t\tboxShadow: this.size === 'lg' && !this.outlined ? '0 1px 2px rgba(0, 0, 0, 0.06), 0 1px 3px rgba(0, 0, 0, 0.1)' : undefined,\n\t\t\t...exoticStyles,\n\t\t}\n\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tpart=\"badge\"\n\t\t\t\tclass=\"${this.classMap(badgeClasses)}\"\n\t\t\t\tstyle=\"${this.styleMap(styles)}\"\n\t\t\t\t${color({\n\t\t\t\t\tbgColor: colorStyles.bg,\n\t\t\t\t\tcolor: colorStyles.text,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<!-- Icon slot or named icon -->\n\t\t\t\t<slot name=\"icon\">\n\t\t\t\t\t${this.icon\n\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t<div part=\"icon\" class=\"shrink-0 flex items-center justify-center leading-none\">\n\t\t\t\t\t\t\t\t\t<schmancy-icon .size=${iconSize} class=\"flex items-center justify-center\">${this.icon}</schmancy-icon>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t: ''}\n\t\t\t\t</slot>\n\n\t\t\t\t<!-- Content with proper spacing from icon -->\n\t\t\t\t<div part=\"content\" class=\"flex items-center leading-none tracking-[0.01em] ${this.icon ? 'ml-[0.38em]' : ''}\">\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'sch-badge': SchmancyBadgeV2,\n\t\t'schmancy-badge': SchmancyBadgeV2\n\t}\n}\n\n\n// Register the component with the legacy tag name for backward compatibility\n@customElement('sch-badge')\nexport class ScBadgeV2 extends SchmancyBadgeV2 {}\n","import { SchmancyEvents } from '@schmancy/types/events'\nimport { BehaviorSubject, Subject, concatMap, delay, of, tap } from 'rxjs'\nimport { ComponentType } from '../area/router.types'\n\n// type DrawerAction = 'dismiss' | 'render' | 'push'\ntype TRef = Element | Window\ntype TRenderRequest = ComponentType\nexport type TRenderCustomEvent = CustomEvent<{\n\tcomponent: TRenderRequest\n\ttitle?: string\n\tstate?: Record<string, unknown>\n\tparams?: Record<string, unknown>\n\tprops?: Record<string, unknown>\n}>\n\nexport type DrawerPushOptions = {\n\tcomponent: ComponentType\n\tstate?: Record<string, unknown>\n\tparams?: Record<string, unknown>\n\tprops?: Record<string, unknown>\n}\n\ntype DrawerCommand =\n\t| { action: 'dismiss'; ref: TRef }\n\t| { action: 'render'; ref: TRef; component: TRenderRequest; title?: string }\n\t| { action: 'push'; ref: TRef; component: ComponentType; state?: Record<string, unknown>; params?: Record<string, unknown>; props?: Record<string, unknown> }\n\nclass DrawerService {\n\tprivate $drawer = new Subject<DrawerCommand>()\n\tprivate pushCounter = 0\n\tprivate isDismissing$ = new BehaviorSubject<boolean>(false)\n\n\tconstructor() {\n\t\t// Use concatMap to queue commands and process them sequentially\n\t\tthis.$drawer.pipe(\n\t\t\tconcatMap(command => {\n\t\t\t\tswitch (command.action) {\n\t\t\t\t\tcase 'dismiss':\n\t\t\t\t\t\treturn of(command).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\tthis.isDismissing$.next(true)\n\t\t\t\t\t\t\t\tthis.dispatchToggleEvent(command.ref, 'close')\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t// Wait for dismiss animation (250ms from sheet.ts)\n\t\t\t\t\t\t\tdelay(300),\n\t\t\t\t\t\t\ttap(() => this.isDismissing$.next(false))\n\t\t\t\t\t\t)\n\t\t\t\t\tcase 'render':\n\t\t\t\t\t\treturn of(command).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\tthis.dispatchToggleEvent(command.ref, 'open')\n\t\t\t\t\t\t\t\tthis.dispatchRenderEvent(command.ref, command.component, command.title)\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t)\n\t\t\t\t\tcase 'push':\n\t\t\t\t\t\treturn of(command).pipe(\n\t\t\t\t\t\t\ttap(() => this.handlePush(command.ref, command.component, command.state, command.params, command.props))\n\t\t\t\t\t\t)\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn of(null)\n\t\t\t\t}\n\t\t\t})\n\t\t).subscribe()\n\t}\n\n\tprivate dispatchToggleEvent(ref: TRef, state: 'open' | 'close') {\n\t\tref.dispatchEvent(\n\t\t\tnew CustomEvent(SchmancyEvents.ContentDrawerToggle, {\n\t\t\t\tdetail: { state },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t})\n\t\t)\n\t}\n\n\tprivate dispatchRenderEvent(\n\t\tref: TRef,\n\t\tcomponent: TRenderRequest,\n\t\ttitle?: string,\n\t\tstate?: Record<string, unknown>,\n\t\tparams?: Record<string, unknown>,\n\t\tprops?: Record<string, unknown>\n\t) {\n\t\tref.dispatchEvent(\n\t\t\tnew CustomEvent('schmancy-content-drawer-render', {\n\t\t\t\tdetail: { component, title, state, params, props },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t})\n\t\t)\n\t}\n\n\tdimiss(ref: TRef) {\n\t\tthis.$drawer.next({\n\t\t\taction: 'dismiss',\n\t\t\tref: ref,\n\t\t})\n\t}\n\n\trender(ref: TRef, component: TRenderRequest, title?: string) {\n\t\tref.dispatchEvent(new CustomEvent('custom-event'))\n\t\tthis.$drawer.next({\n\t\t\taction: 'render',\n\t\t\tref: ref,\n\t\t\tcomponent: component,\n\t\t\ttitle,\n\t\t})\n\t}\n\n\tprivate handlePush(\n\t\tref: TRef,\n\t\tcomponent: ComponentType,\n\t\tstate?: Record<string, unknown>,\n\t\tparams?: Record<string, unknown>,\n\t\tprops?: Record<string, unknown>\n\t) {\n\t\t// Auto-increment counter to make every push unique\n\t\t// Area router uses distinctUntilChanged on component+state+params+props\n\t\t// Without this, pushing same component with same props gets silently blocked\n\t\tconst enhancedState = {\n\t\t\t...state,\n\t\t\t_drawerPushId: ++this.pushCounter\n\t\t}\n\n\t\tthis.dispatchToggleEvent(ref, 'open')\n\t\tthis.dispatchRenderEvent(ref, component, undefined, enhancedState, params, props)\n\t}\n\n\t/**\n\t * Push a component to the content drawer\n\t * Every push is guaranteed to render (auto-incremented unique ID prevents deduplication)\n\t * @param options - Component configuration object with optional state/params/props\n\t * @example\n\t * schmancyContentDrawer.push({\n\t * component: myComponent,\n\t * props: { id: '123' }\n\t * })\n\t */\n\tpush(options: DrawerPushOptions): void {\n\t\tthis.$drawer.next({\n\t\t\taction: 'push',\n\t\t\tref: window,\n\t\t\t...options,\n\t\t})\n\t}\n}\n\n/**\n * Content-drawer service. Mounts any element inside the right-hand content\n * drawer of a `<schmancy-content-drawer>` layout.\n *\n * @service\n * @summary Imperative content-drawer (right-side navigation panel).\n * @method render({ component, ...options }) - Mount an element in the drawer.\n * @method close() - Close the drawer.\n */\nexport const schmancyContentDrawer = new DrawerService()","import { createContext } from '@lit/context'\nexport type TSchmancyContentDrawerSheetMode = 'push' | 'overlay'\nexport const SchmancyContentDrawerSheetMode = createContext<TSchmancyContentDrawerSheetMode>('push')\n\nexport type TSchmancyContentDrawerSheetState = 'open' | 'close'\nexport const SchmancyContentDrawerSheetState = createContext<TSchmancyContentDrawerSheetState>('close')\n\nexport const SchmancyContentDrawerID = createContext<string>(Math.floor(Math.random() * Date.now()).toString())\nexport const SchmancyContentDrawerMaxHeight = createContext<string>('100%')\nexport const SchmancyContentDrawerMinWidth = createContext<{\n\tmain: number\n\tsheet: number\n}>({})\n","import { provide } from '@lit/context'\nimport { SchmancyElement } from '@mixins/index'\nimport { css, html, nothing } from 'lit'\nimport { customElement, property, queryAssignedElements, state } from 'lit/decorators.js'\nimport { debounceTime, distinctUntilChanged, fromEvent, map, merge, startWith, takeUntil, tap } from 'rxjs'\nimport { SchmancyEvents, TRenderCustomEvent, area, sheet } from '..'\nimport {\n\tSchmancyContentDrawerID,\n\tSchmancyContentDrawerMaxHeight,\n\tSchmancyContentDrawerMinWidth,\n\tSchmancyContentDrawerSheetMode,\n\tSchmancyContentDrawerSheetState,\n\tTSchmancyContentDrawerSheetMode,\n\tTSchmancyContentDrawerSheetState,\n} from './context'\n\n/**\n * @element schmancy-content-drawer\n * @slot appbar - The appbar slot\n * @slot - The content slot\n */\n@customElement('schmancy-content-drawer')\nexport class SchmancyContentDrawer extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tposition: relative;\n\t\tinset: 0;\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t}\n`]\n\n\t/**\n\t * The minimum width of the sheet\n\t * @attr\tminWidth\n\t * @type {number}\n\t * @memberof SchmancyContentDrawer\n\t */\n\n\t@provide({ context: SchmancyContentDrawerMinWidth })\n\tminWidth: typeof SchmancyContentDrawerMinWidth.__context__ = {\n\t\tmain: 360,\n\t\tsheet: 576,\n\t}\n\n\t/**\n\t * The state of the sheet\n\t * @attr open\n\t * @type {TSchmancyContentDrawerSheetState}\n\t */\n\t@provide({ context: SchmancyContentDrawerSheetState })\n\t@property()\n\topen: TSchmancyContentDrawerSheetState\n\n\t/**\n\t * The mode of the sheet\n\t * @type {TSchmancyContentDrawerSheetMode}\n\t * @memberof SchmancyContentDrawer\n\t * @protected\n\t */\n\t@provide({ context: SchmancyContentDrawerSheetMode })\n\t@state()\n\tmode: TSchmancyContentDrawerSheetMode\n\n\t@provide({ context: SchmancyContentDrawerID })\n\tschmancyContentDrawerID = Math.floor(Math.random() * Date.now()).toString()\n\n\t@provide({ context: SchmancyContentDrawerMaxHeight })\n\tmaxHeight = '100%'\n\n\t@queryAssignedElements({ flatten: true })\n\tassignedElements!: HTMLElement[]\n\n\tfirstUpdated(): void {\n\t\tthis.setupResizeListener()\n\t\tthis.setupToggleListener()\n\t\tthis.setupRenderListener()\n\t}\n\n\tprivate setupResizeListener() {\n\t\tmerge(\n\t\t\tfromEvent<CustomEvent>(window, 'resize'),\n\t\t\tfromEvent<CustomEvent>(window, SchmancyEvents.ContentDrawerResize)\n\t\t)\n\t\t\t.pipe(\n\t\t\t\tstartWith(true),\n\t\t\t\tdebounceTime(100),\n\t\t\t\tmap(() => this.clientWidth || window.innerWidth),\n\t\t\t\tmap(width => width >= this.minWidth.main + this.minWidth.sheet),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(() => this.updateMaxHeight()),\n\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t)\n\t\t\t.subscribe(isLargeScreen => this.updateMode(isLargeScreen))\n\t}\n\n\tprivate setupToggleListener() {\n\t\tfromEvent<CustomEvent>(window, SchmancyEvents.ContentDrawerToggle)\n\t\t\t.pipe(\n\t\t\t\ttap(event => event.stopPropagation()),\n\t\t\t\tmap(event => event.detail.state),\n\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t)\n\t\t\t.subscribe(state => {\n\t\t\t\tthis.open = state\n\t\t\t})\n\t}\n\n\tprivate setupRenderListener() {\n\t\tfromEvent<TRenderCustomEvent>(window, 'schmancy-content-drawer-render')\n\t\t\t.pipe(\n\t\t\t\ttap(event => event.stopPropagation()),\n\t\t\t\tmap(event => event.detail),\n\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t)\n\t\t\t.subscribe(detail => this.handleRender(detail))\n\t}\n\n\tprivate updateMaxHeight() {\n\t\tthis.maxHeight = `${window.innerHeight - this.getOffsetTop(this)}px`\n\t\tthis.style.setProperty('max-height', this.maxHeight)\n\t}\n\n\tprivate updateMode(isLargeScreen: boolean) {\n\t\tif (isLargeScreen) {\n\t\t\tthis.mode = 'push'\n\t\t\tthis.open = 'open'\n\t\t} else {\n\t\t\tthis.mode = 'overlay'\n\t\t\tthis.open = 'close'\n\t\t}\n\t}\n\n\tprivate handleRender(detail: TRenderCustomEvent['detail']) {\n\t\tif (this.mode === 'push') {\n\t\t\tarea.push({\n\t\t\t\tarea: this.schmancyContentDrawerID,\n\t\t\t\tcomponent: detail.component,\n\t\t\t\thistoryStrategy: 'silent',\n\t\t\t\tstate: detail.state,\n\t\t\t\tparams: detail.params,\n\t\t\t\tprops: detail.props,\n\t\t\t})\n\t\t} else if (this.mode === 'overlay') {\n\t\t\tsheet.open({\n\t\t\t\tcomponent: detail.component,\n\t\t\t\tuid: this.schmancyContentDrawerID,\n\t\t\t\tprops: detail.props,\n\t\t\t})\n\t\t}\n\t}\n\n\tgetOffsetTop(element: HTMLElement | null) {\n\t\tlet offsetTop = 0\n\t\twhile (element) {\n\t\t\toffsetTop += element.offsetTop\n\t\t\telement = element.offsetParent as HTMLElement | null\n\t\t}\n\t\treturn offsetTop\n\t}\n\n\tprotected render() {\n\t\tif (!this.mode || !this.open) return nothing\n\n\t\tconst gridClasses = [\n\t\t\t'grid h-full',\n\t\t\t'grid-flow-col auto-cols-max',\n\t\t\t'grid-rows-[1fr]',\n\t\t\t'justify-items-stretch items-stretch',\n\t\t\tthis.mode === 'overlay' ? 'grid-cols-[1fr]' : 'grid-cols-[auto_1fr]'\n\t\t].join(' ')\n\n\t\treturn html`\n\t\t\t<div class=${gridClasses}>\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-content-drawer': SchmancyContentDrawer\n\t}\n}\n","import { consume } from '@lit/context'\nimport { SchmancyElement } from '@mixins/index'\nimport { PropertyValueMap, css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { SchmancyEvents } from '..'\nimport {\n\tSchmancyContentDrawerMaxHeight,\n\tSchmancyContentDrawerMinWidth,\n\tSchmancyContentDrawerSheetMode,\n\tTSchmancyContentDrawerSheetMode,\n} from './context'\nimport { when } from 'lit/directives/when.js'\n\n@customElement('schmancy-content-drawer-main')\nexport class SchmancyContentDrawerMain extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t}\n`]\n\n\t@property({ type: Number })\n\tminWidth: number\n\n\t@consume({ context: SchmancyContentDrawerMinWidth, subscribe: true })\n\tdrawerMinWidth: typeof SchmancyContentDrawerMinWidth.__context__\n\n\t@consume({ context: SchmancyContentDrawerSheetMode, subscribe: true })\n\t@state()\n\tmode: TSchmancyContentDrawerSheetMode\n\n\t@consume({ context: SchmancyContentDrawerMaxHeight, subscribe: true })\n\t@state()\n\tmaxHeight: string\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tif (this.minWidth) this.drawerMinWidth.main = this.minWidth\n\t\telse this.minWidth = this.drawerMinWidth.main\n\t}\n\n\tprotected update(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void {\n\t\tsuper.update(changedProperties)\n\t\tif (changedProperties.has('minWidth') && this.minWidth) {\n\t\t\tthis.drawerMinWidth.main = this.minWidth\n\t\t\tthis.dispatchEvent(new CustomEvent(SchmancyEvents.ContentDrawerResize, { bubbles: true, composed: true }))\n\t\t}\n\t}\n\n\trender() {\n\t\tconst styles = {\n\t\t\tminWidth: `${this.minWidth}px`,\n\t\t\tmaxHeight: this.maxHeight,\n\t\t}\n\n\t\tconst gridClasses = [\n\t\t\t'grid h-full relative overflow-scroll',\n\t\t\t'grid-flow-col auto-cols-max',\n\t\t\t'grid-rows-[1fr]',\n\t\t\t'items-stretch justify-items-stretch',\n\t\t\tthis.mode === 'push' ? 'grid-cols-[auto_1fr]' : 'grid-cols-[1fr]'\n\t\t].join(' ')\n\n\t\treturn html`\n\t\t\t<section class=\"relative inset-0 h-full\">\n\t\t\t\t<div class=${gridClasses}>\n\t\t\t\t\t<section style=${this.styleMap(styles)}>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</section>\n\t\t\t\t</div>\n\t\t\t\t${when(\n\t\t\t\t\tthis.mode === 'push',\n\t\t\t\t\t() => html` <schmancy-divider class=\"absolute right-0 top-0\" orientation=\"vertical\"></schmancy-divider>`,\n\t\t\t\t)}\n\t\t\t</section>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-content-drawer-main': SchmancyContentDrawerMain\n\t}\n}\n","import { consume } from '@lit/context'\nimport { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { from, merge, Observable, of, takeUntil, tap } from 'rxjs'\nimport { SchmancyEvents, sheet } from '..'\nimport {\n\tSchmancyContentDrawerID,\n\tSchmancyContentDrawerMaxHeight,\n\tSchmancyContentDrawerMinWidth,\n\tSchmancyContentDrawerSheetMode,\n\tSchmancyContentDrawerSheetState,\n\tTSchmancyContentDrawerSheetMode,\n\tTSchmancyContentDrawerSheetState,\n} from './context'\n\n// --- 1) Removed the custom animate import\n// import { animate } from '@packages/anime-beta-master'\n\n@customElement('schmancy-content-drawer-sheet')\nexport class SchmancyContentDrawerSheet extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\toverflow: scroll;\n\t}\n`]\n\n\t@property({ type: Number })\n\tminWidth\n\n\t@consume({ context: SchmancyContentDrawerSheetMode, subscribe: true })\n\t@state()\n\tmode: TSchmancyContentDrawerSheetMode\n\n\t@consume({ context: SchmancyContentDrawerSheetState, subscribe: true })\n\t@state()\n\tstate: TSchmancyContentDrawerSheetState\n\n\t@consume({ context: SchmancyContentDrawerID })\n\tschmancyContentDrawerID\n\n\t@query('#sheet') sheet!: HTMLElement\n\t@queryAssignedElements({ flatten: true, slot: undefined }) defaultSlot!: HTMLElement[]\n\n\t@consume({ context: SchmancyContentDrawerMinWidth, subscribe: true })\n\tdrawerMinWidth: typeof SchmancyContentDrawerMinWidth.__context__\n\n\t@consume({ context: SchmancyContentDrawerMaxHeight, subscribe: true })\n\t@state()\n\tmaxHeight\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tif (this.minWidth) {\n\t\t\tthis.drawerMinWidth.sheet = this.minWidth\n\t\t} else {\n\t\t\tthis.minWidth = this.drawerMinWidth.sheet\n\t\t}\n\t}\n\n\tupdated(changedProperties: Map<string, unknown>) {\n\t\tsuper.updated(changedProperties)\n\t\tif (changedProperties.has('minWidth') && this.minWidth) {\n\t\t\t// If the 'minWidth' property changed\n\t\t\tthis.drawerMinWidth.sheet = this.minWidth\n\t\t\tthis.dispatchEvent(new CustomEvent(SchmancyEvents.ContentDrawerResize, { bubbles: true, composed: true }))\n\t\t} else if (changedProperties.has('state') || changedProperties.has('mode')) {\n\t\t\tif (this.mode === 'overlay') {\n\t\t\t\tif (this.state === 'close') {\n\t\t\t\t\tthis.closeAll()\n\t\t\t\t} else if (this.state === 'open') {\n\t\t\t\t\t// Overlay open logic if needed\n\t\t\t\t\t// this.open()\n\t\t\t\t}\n\t\t\t} else if (this.mode === 'push') {\n\t\t\t\tsheet.dismiss(this.schmancyContentDrawerID)\n\t\t\t\tif (this.state === 'close') {\n\t\t\t\t\tthis.closeAll()\n\t\t\t\t} else if (this.state === 'open') {\n\t\t\t\t\tthis.open()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Open the sheet by sliding it into view.\n\t */\n\topen() {\n\t\t// \"onBegin\" logic from the old `animate(...)`\n\t\tif (this.mode === 'overlay') {\n\t\t\tthis.sheet.style.position = 'fixed'\n\t\t} else {\n\t\t\tthis.sheet.style.position = 'relative'\n\t\t}\n\t\tthis.sheet.style.display = 'block'\n\n\t\t// --- 2) Use native Web Animations API ---\n\t\tthis.sheet.animate(\n\t\t\t[\n\t\t\t\t{ opacity: 0, transform: 'translateX(100%)' },\n\t\t\t\t{ opacity: 1, transform: 'translateX(0%)' },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: 250,\n\t\t\t\teasing: 'cubic-bezier(0.5, 0.01, 0.25, 1)',\n\t\t\t},\n\t\t)\n\t\t// No return is needed if you don't rely on the result\n\t}\n\n\t/**\n\t * Close everything (modal sheet + the sheet itself).\n\t */\n\tcloseAll() {\n\t\t// Merge them into a single subscription,\n\t\t// so that everything closes in parallel.\n\t\tmerge(from(this.closeModalSheet()), from(this.closeSheet())).pipe(takeUntil(this.disconnecting)).subscribe()\n\t}\n\n\t/**\n\t * Dismiss the \"modal sheet.\"\n\t * This just returns an Observable that completes immediately.\n\t */\n\tcloseModalSheet() {\n\t\treturn of(true).pipe(tap(() => sheet.dismiss(this.schmancyContentDrawerID)))\n\t}\n\n\t/**\n\t * Slide the sheet out of view + hide it.\n\t * Return an Observable so we can merge it with other close operations.\n\t */\n\tcloseSheet() {\n\t\t// --- 2) Use native Web Animations API and wrap in an Observable ---\n\t\treturn new Observable<void>(observer => {\n\t\t\tconst animation = this.sheet.animate(\n\t\t\t\t[\n\t\t\t\t\t{ opacity: 1, transform: 'translateX(0%)' },\n\t\t\t\t\t{ opacity: 1, transform: 'translateX(100%)' },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: 250,\n\t\t\t\t\teasing: 'cubic-bezier(0.5, 0.01, 0.25, 1)',\n\t\t\t\t},\n\t\t\t)\n\n\t\t\tanimation.onfinish = () => {\n\t\t\t\t// \"onComplete\" logic\n\t\t\t\tthis.sheet.style.display = 'none'\n\t\t\t\tobserver.next()\n\t\t\t\tobserver.complete()\n\t\t\t}\n\t\t})\n\t}\n\n\tprotected render() {\n\t\tconst sheetClasses = {\n\t\t\t\"block h-full w-full\": this.mode === 'push',\n\t\t\t'absolute z-50': this.mode === 'overlay',\n\t\t\t'opacity-1': this.mode === 'overlay' && this.state === 'open',\n\t\t}\n\n\t\tconst styles = {\n\t\t\tminWidth: `${this.minWidth}px`,\n\t\t\tmaxHeight: this.maxHeight,\n\t\t}\n\n\t\treturn html`\n\t\t\t<section id=\"sheet\" class=\"${this.classMap(sheetClasses)}\" style=${this.styleMap(styles)}>\n\t\t\t\t<schmancy-area class=\"h-full w-full\" name=\"${this.schmancyContentDrawerID}\">\n\t\t\t\t\t<slot name=\"placeholder\"></slot>\n\t\t\t\t</schmancy-area>\n\t\t\t</section>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-content-drawer-sheet': SchmancyContentDrawerSheet\n\t}\n}\n","import { SchmancyEvents } from '@schmancy/types/events'\nimport { debounceTime, Subject } from 'rxjs'\n\nclass Drawer {\n\tprivate $drawer = new Subject<{\n\t\tself: HTMLElement\n\t\tstate: boolean\n\t}>()\n\tconstructor() {\n\t\tthis.$drawer.pipe(debounceTime(10)).subscribe(data => {\n\t\t\tif (data.state) {\n\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\tnew CustomEvent(SchmancyEvents.NavDrawer_toggle, {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tstate: 'open',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\tnew CustomEvent(SchmancyEvents.NavDrawer_toggle, {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tstate: 'close',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\t}\n\topen(self?: HTMLElement) {\n\t\tthis.$drawer.next({\n\t\t\tself,\n\t\t\tstate: true,\n\t\t})\n\t}\n\tclose(self?: HTMLElement) {\n\t\tthis.$drawer.next({\n\t\t\tself,\n\t\t\tstate: false,\n\t\t})\n\t}\n}\n\nexport const schmancyNavDrawer = new Drawer()\nconst $drawer = schmancyNavDrawer\n\nexport { $drawer }\n","import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n/**\n * @element schmancy-nav-drawer-appbar\n * @slot - The default slot\n */\n@customElement('schmancy-nav-drawer-appbar')\nexport class SchmancyDrawerAppbar extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\tmin-width: 0;\n\t}\n`];\n\trender() {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-nav-drawer-appbar': SchmancyDrawerAppbar\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\nimport { fromEvent, takeUntil } from 'rxjs'\n\n@customElement('schmancy-nav-drawer-content')\nexport class SchmancyNavigationDrawerContent extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tinset: 0;\n\t\toverflow-y: auto;\n\t}\n`]\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tfromEvent(this, 'scroll')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(e => {\n\t\t\t\tthis.parentElement.dispatchEvent(new CustomEvent('scroll', { detail: e, bubbles: true, composed: true }))\n\t\t\t})\n\t}\n\trender() {\n\t\treturn html` <slot></slot> `\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-nav-drawer-content': SchmancyNavigationDrawerContent\n\t}\n}\n","import { createContext } from '@lit/context'\nexport type TSchmancyDrawerNavbarMode = 'push' | 'overlay' | undefined\nexport const SchmancyDrawerNavbarMode = createContext<TSchmancyDrawerNavbarMode>('push')\n\nexport type TSchmancyDrawerNavbarState = 'open' | 'close' | undefined\nexport const SchmancyDrawerNavbarState = createContext<TSchmancyDrawerNavbarState>('close')\n","import { provide } from '@lit/context'\nimport { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { debounceTime, distinctUntilChanged, fromEvent, map, takeUntil, tap } from 'rxjs'\nimport { SchmancyEvents } from '..'\nimport {\n\tSchmancyDrawerNavbarMode,\n\tSchmancyDrawerNavbarState,\n\tTSchmancyDrawerNavbarMode,\n\tTSchmancyDrawerNavbarState,\n} from './context'\n\n/**\n * @element schmancy-nav-drawer\n * @slot - The content slot\n */\n@customElement('schmancy-nav-drawer')\nexport class SchmancyNavigationDrawer extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: auto 1fr;\n\t\tgrid-template-rows: 1fr;\n\t\tflex-grow: 1;\n\t\theight: 100%;\n\t\toverflow: hidden;\n\t\t/* Initially hide the component until it's ready */\n\t\tvisibility: hidden;\n\t}\n\n\t:host([data-ready]) {\n\t\tvisibility: visible;\n\t}\n\n\t:host([fullscreen]) {\n\t\tgrid-template-columns: 1fr;\n\t}\n`]\n\n\t@property({ type: Boolean, reflect: true })\n\tfullscreen: boolean = false\n\n\t/**\n\t * The breakpoint for the sidebar based on Tailwind CSS breakpoints.\n\t * Accepts: \"sm\", \"md\", \"lg\", or \"xl\".\n\t */\n\t@property({ type: String, attribute: 'breakpoint' })\n\tbreakpoint: 'sm' | 'md' | 'lg' | 'xl' = 'md'\n\n\tprivate static BREAKPOINTS: Record<'sm' | 'md' | 'lg' | 'xl', number> = {\n\t\tsm: 640,\n\t\tmd: 768,\n\t\tlg: 1024,\n\t\txl: 1280,\n\t}\n\n\t@provide({ context: SchmancyDrawerNavbarMode })\n\t@state()\n\tmode: TSchmancyDrawerNavbarMode\n\n\t@provide({ context: SchmancyDrawerNavbarState })\n\t@property()\n\topen: TSchmancyDrawerNavbarState\n\n\tfirstUpdated() {\n\t\tthis.updateState(window.innerWidth)\n\t\tthis.setAttribute('data-ready', '')\n\n\t\tfromEvent(window, 'resize')\n\t\t\t.pipe(\n\t\t\t\tmap(event => (event.target as Window).innerWidth),\n\t\t\t\tmap(width => width >= SchmancyNavigationDrawer.BREAKPOINTS[this.breakpoint]),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\tdebounceTime(100),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(isLargeScreen => {\n\t\t\t\tif (isLargeScreen) {\n\t\t\t\t\tthis.mode = 'push'\n\t\t\t\t\tthis.open = 'open'\n\t\t\t\t} else {\n\t\t\t\t\tthis.mode = 'overlay'\n\t\t\t\t\tthis.open = 'close'\n\t\t\t\t}\n\t\t\t})\n\n\t\tfromEvent(window, 'fullscreen').pipe(\n\t\t\ttap((event: Event) => {\n\t\t\t\tconst customEvent = event as CustomEvent\n\t\t\t\tthis.fullscreen = customEvent.detail\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting)\n\t\t).subscribe()\n\n\t\tfromEvent(window, SchmancyEvents.NavDrawer_toggle)\n\t\t\t.pipe(\n\t\t\t\ttap((event: CustomEvent) => {\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t}),\n\t\t\t\tmap((event: CustomEvent) => event.detail.state),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tdebounceTime(10),\n\t\t\t)\n\t\t\t.subscribe(state => {\n\t\t\t\t// Handle 'toggle' state\n\t\t\t\tif (state === 'toggle') {\n\t\t\t\t\tstate = this.open === 'open' ? 'close' : 'open'\n\t\t\t\t}\n\t\t\t\tif (this.mode === 'push' && state === 'close') return\n\t\t\t\tthis.open = state\n\t\t\t})\n\t}\n\n\tprivate updateState(width: number) {\n\t\tconst isLargeScreen = width >= SchmancyNavigationDrawer.BREAKPOINTS[this.breakpoint]\n\t\tthis.mode = isLargeScreen ? 'push' : 'overlay'\n\t\tthis.open = isLargeScreen ? 'open' : 'close'\n\t}\n\n\tprotected render() {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-nav-drawer': SchmancyNavigationDrawer\n\t}\n}\n","import { consume } from '@lit/context'\nimport { SchmancyElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { SchmancyEvents, SchmancyTheme, color } from '..'\nimport {\n\tSchmancyDrawerNavbarMode,\n\tSchmancyDrawerNavbarState,\n\tTSchmancyDrawerNavbarMode,\n\tTSchmancyDrawerNavbarState,\n} from './context'\n\n// Animation configuration constants.\nconst ANIMATION_EASING = 'cubic-bezier(0.5, 0.01, 0.25, 1)'\nconst OVERLAY_ANIM_DURATION_OPEN = 200\nconst OVERLAY_ANIM_DURATION_CLOSE = 150\nconst NAV_ANIM_DURATION = 200\n\n@customElement('schmancy-nav-drawer-navbar')\nexport class SchmancyNavigationDrawerSidebar extends SchmancyElement {\n\t// Consume context values. Renamed from \"state\" to \"drawerState\" to avoid confusion.\n\t@consume({ context: SchmancyDrawerNavbarMode, subscribe: true })\n\t@state()\n\tmode!: TSchmancyDrawerNavbarMode\n\n\t@consume({ context: SchmancyDrawerNavbarState, subscribe: true })\n\t@state()\n\tdrawerState!: TSchmancyDrawerNavbarState\n\n\t@query('#overlay') overlay!: HTMLElement\n\t@query('nav') nav!: HTMLElement\n\n\t@property({ type: String }) width = '220px'\n\t@state() private _initialized = false\n\n\t/**\n\t * firstUpdated()\n\t * Set initial styles based on the current mode and consumed state.\n\t */\n\tfirstUpdated() {\n\t\tif (this.mode === 'overlay') {\n\t\t\tif (this.drawerState === 'close') {\n\t\t\t\tthis.nav.style.transform = 'translateX(-100%)'\n\t\t\t\tthis.overlay.style.display = 'none'\n\t\t\t} else if (this.drawerState === 'open') {\n\t\t\t\tthis.nav.style.transform = 'translateX(0)'\n\t\t\t\tthis.overlay.style.display = 'block'\n\t\t\t\tthis.overlay.style.opacity = '0.4'\n\t\t\t}\n\t\t} else if (this.mode === 'push') {\n\t\t\t// In push mode, the nav is always visible and the overlay hidden.\n\t\t\tthis.nav.style.transform = 'translateX(0)'\n\t\t\tthis.overlay.style.display = 'none'\n\t\t}\n\t\tthis._initialized = true\n\t}\n\n\t/**\n\t * updated()\n\t * Trigger animations when either the consumed mode or state changes.\n\t */\n\tupdated(changedProperties: Map<string, unknown>) {\n\t\tif (!this._initialized) return\n\n\t\tif (changedProperties.has('drawerState') || changedProperties.has('mode')) {\n\t\t\tif (this.mode === 'overlay') {\n\t\t\t\tif (this.drawerState === 'open') {\n\t\t\t\t\t// Animate only if the nav isn’t already open.\n\t\t\t\t\tif (this.nav.style.transform !== 'translateX(0)') {\n\t\t\t\t\t\tthis.openOverlay()\n\t\t\t\t\t\tthis.showNavDrawer()\n\t\t\t\t\t}\n\t\t\t\t} else if (this.drawerState === 'close') {\n\t\t\t\t\tif (this.nav.style.transform !== 'translateX(-100%)') {\n\t\t\t\t\t\tthis.hideNavDrawer()\n\t\t\t\t\t\tthis.closeOverlay()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (this.mode === 'push') {\n\t\t\t\tif (this.nav.style.transform !== 'translateX(0)') {\n\t\t\t\t\tthis.showNavDrawer()\n\t\t\t\t}\n\t\t\t\tif (this.overlay.style.display !== 'none') {\n\t\t\t\t\tthis.closeOverlay()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Animate the overlay to fade in.\n\t */\n\topenOverlay() {\n\t\tthis.overlay.style.display = 'block'\n\t\tthis.overlay.animate([{ opacity: 0 }, { opacity: 0.4 }], {\n\t\t\tduration: OVERLAY_ANIM_DURATION_OPEN,\n\t\t\teasing: ANIMATION_EASING,\n\t\t\tfill: 'forwards',\n\t\t})\n\t}\n\n\t/**\n\t * Animate the overlay to fade out, then hide it.\n\t */\n\tcloseOverlay() {\n\t\tconst animation = this.overlay.animate([{ opacity: 0.4 }, { opacity: 0 }], {\n\t\t\tduration: OVERLAY_ANIM_DURATION_CLOSE,\n\t\t\teasing: ANIMATION_EASING,\n\t\t\tfill: 'forwards',\n\t\t})\n\t\tanimation.onfinish = () => {\n\t\t\tthis.overlay.style.display = 'none'\n\t\t}\n\t}\n\tshowNavDrawer() {\n\t\t// Use computed style if needed, but here we directly update inline style after animation.\n\t\tconst animation = this.nav.animate([{ transform: 'translateX(-100%)' }, { transform: 'translateX(0)' }], {\n\t\t\tduration: NAV_ANIM_DURATION,\n\t\t\teasing: ANIMATION_EASING,\n\t\t\tfill: 'forwards',\n\t\t})\n\t\tanimation.onfinish = () => {\n\t\t\tthis.nav.style.transform = 'translateX(0)'\n\t\t}\n\t}\n\n\thideNavDrawer() {\n\t\tconst animation = this.nav.animate([{ transform: 'translateX(0)' }, { transform: 'translateX(-100%)' }], {\n\t\t\tduration: NAV_ANIM_DURATION,\n\t\t\teasing: ANIMATION_EASING,\n\t\t\tfill: 'forwards',\n\t\t})\n\t\tanimation.onfinish = () => {\n\t\t\tthis.nav.style.transform = 'translateX(-100%)'\n\t\t}\n\t}\n\n\t/**\n\t * Handle overlay click events by dispatching a custom event\n\t * to close the navigation drawer.\n\t */\n\tprivate handleOverlayClick() {\n\t\twindow.dispatchEvent(\n\t\t\tnew CustomEvent(SchmancyEvents.NavDrawer_toggle, {\n\t\t\t\tdetail: { state: 'close' },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprotected render() {\n\t\tconst sidebarClasses = {\n\t\t\t'max-w-[360px] w-fit h-full overflow-auto': true,\n\t\t\tblock: this.mode === 'push',\n\t\t\t'fixed inset-0 z-50': this.mode === 'overlay',\n\t\t}\n\t\tconst overlayClass = {\n\t\t\t'fixed inset-0 z-49 hidden': true,\n\t\t}\n\t\tconst styleMap = {\n\t\t\twidth: this.width,\n\t\t}\n\n\t\treturn html`\n\t\t\t<nav\n\t\t\t\tstyle=${this.styleMap(styleMap)}\n\t\t\t\tclass=\"${this.classMap({ ...sidebarClasses })}\"\n\t\t\t\t${color({\n\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.containerLowest,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<slot></slot>\n\t\t\t</nav>\n\t\t\t<div\n\t\t\t\tid=\"overlay\"\n\t\t\t\t${color({\n\t\t\t\t\tbgColor: SchmancyTheme.sys.color.scrim,\n\t\t\t\t})}\n\t\t\t\t@click=${this.handleOverlayClick}\n\t\t\t\tclass=\"${this.classMap({ ...overlayClass })}\"\n\t\t\t></div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-nav-drawer-navbar': SchmancyNavigationDrawerSidebar\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { SchmancyTheme } from '..'\nimport { BehaviorSubject, fromEvent, merge, timer } from 'rxjs'\nimport { takeUntil, tap, filter } from 'rxjs/operators'\n\n/**\n * `<schmancy-navigation-bar-item>` component\n *\n * Individual navigation item for use within a navigation bar.\n * Represents a single destination with an icon and optional label following Material Design 3 specifications.\n *\n * @element schmancy-navigation-bar-item\n * @slot icon - Slot for custom icon content\n * @slot - Default slot for custom content\n *\n * @fires bar-item-click - When the item is clicked\n * @fires focus - When the item receives focus\n * @fires blur - When the item loses focus\n *\n * @example\n * <schmancy-navigation-bar-item icon=\"home\" label=\"Home\" active></schmancy-navigation-bar-item>\n *\n * @example\n * <schmancy-navigation-bar-item label=\"Custom\">\n * <span slot=\"icon\">🏠</span>\n * </schmancy-navigation-bar-item>\n */\n@customElement('schmancy-navigation-bar-item')\nexport class SchmancyNavigationBarItem extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: flex;\n\t\tflex: 1;\n\t\tmin-width: 48px;\n\t\tmax-width: 168px;\n\t\tuser-select: none;\n\t\t-webkit-tap-highlight-color: transparent;\n\t}\n\n\t:host([disabled]) {\n\t\tpointer-events: none;\n\t}\n\n\tbutton {\n\t\tfont-family: inherit;\n\t\tborder: none;\n\t\tbackground: none;\n\t\twidth: 100%;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t\ttext-align: center;\n\t\tcolor: inherit;\n\t}\n\n\tbutton:focus {\n\t\toutline: none;\n\t}\n\n\tbutton:focus-visible {\n\t\toutline: 2px solid var(--focus-color);\n\t\toutline-offset: 2px;\n\t\tborder-radius: 8px;\n\t}\n\n\t/* Ripple animation */\n\t@keyframes ripple {\n\t\tto {\n\t\t\ttransform: scale(4);\n\t\t\topacity: 0;\n\t\t}\n\t}\n\n\t.ripple-effect {\n\t\tposition: absolute;\n\t\tborder-radius: 50%;\n\t\twidth: 20px;\n\t\theight: 20px;\n\t\tbackground-color: currentColor;\n\t\topacity: 0.25;\n\t\tanimation: ripple 0.6s ease-out;\n\t\tpointer-events: none;\n\t}\n`];\n\t/**\n\t * Icon name for the navigation item (Material Symbols Outlined)\n\t */\n\t@property({ type: String })\n\ticon = ''\n\n\t/**\n\t * Label text for the navigation item\n\t */\n\t@property({ type: String })\n\tlabel = ''\n\n\t/**\n\t * Badge content (can be a number or short text)\n\t */\n\t@property({ type: String })\n\tbadge = ''\n\n\t/**\n\t * Observable for active state\n\t */\n\tprivate active$ = new BehaviorSubject<boolean>(false)\n\n\t/**\n\t * Whether this item is currently active/selected\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tget active() { return this.active$.value }\n\tset active(value: boolean) { this.active$.next(value) }\n\n\t/**\n\t * Whether this item is disabled\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tdisabled = false\n\n\t/**\n\t * Whether to hide labels (controlled by parent navigation bar)\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\thideLabels = false\n\n\t/**\n\t * Track ripple effects\n\t */\n\t@state()\n\tprivate ripples: { x: number; y: number; id: number }[] = []\n\n\t/**\n\t * Add ripple effect (immediate, no debounce)\n\t */\n\tprivate addRippleEffect = (event: MouseEvent) => {\n\t\tif (this.disabled) return\n\n\t\t// Find the icon indicator div for ripple positioning\n\t\tconst indicatorDiv = this.shadowRoot?.querySelector('.w-16.h-8')\n\t\tif (indicatorDiv) {\n\t\t\tconst rect = indicatorDiv.getBoundingClientRect()\n\t\t\tconst ripple = {\n\t\t\t\tx: event.clientX - rect.left,\n\t\t\t\ty: event.clientY - rect.top,\n\t\t\t\tid: Date.now()\n\t\t\t}\n\t\t\tthis.ripples = [...this.ripples, ripple]\n\n\t\t\t// Remove ripple after animation\n\t\t\ttimer(600).pipe(\n\t\t\t\ttap(() => {\n\t\t\t\t\tthis.ripples = this.ripples.filter(r => r.id !== ripple.id)\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t).subscribe()\n\t\t}\n\t}\n\n\t/**\n\t * Handle click events with RxJS\n\t */\n\tprivate handleClick = (event: MouseEvent) => {\n\t\tif (this.disabled) {\n\t\t\tevent.preventDefault()\n\t\t\tevent.stopPropagation()\n\t\t\treturn\n\t\t}\n\n\t\t// Add ripple immediately\n\t\tthis.addRippleEffect(event)\n\n\t\t// Navigation event is handled in connectedCallback\n\t}\n\n\t/**\n\t * Handle keyboard events for accessibility (non-Enter/Space keys)\n\t */\n\tprivate handleKeyDown = (event: KeyboardEvent) => {\n\t\tif (this.disabled) return\n\n\t\t// Enter and Space are handled by the RxJS stream\n\t\tif (event.key === 'Enter' || event.key === ' ') {\n\t\t\tevent.preventDefault()\n\t\t\t// Keyboard activation is handled in connectedCallback\n\t\t}\n\t}\n\n\t/**\n\t * Method called by parent to set active state\n\t */\n\tsetActive(isActive: boolean) {\n\t\tthis.active = isActive\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Subscribe to active state changes\n\t\tthis.active$.pipe(\n\t\t\ttakeUntil(this.disconnecting)\n\t\t).subscribe(() => {\n\t\t\tthis.requestUpdate()\n\t\t})\n\n\t\t// Set up navigation event stream\n\t\tthis.setupNavigationStream()\n\t}\n\n\t/**\n\t * Set up RxJS stream for navigation events\n\t */\n\tprivate setupNavigationStream() {\n\t\tconst button = this.shadowRoot?.querySelector('button')\n\t\tif (!button) return\n\n\t\t// Create click stream\n\t\tconst click$ = fromEvent<MouseEvent>(button, 'click').pipe(\n\t\t\tfilter(() => !this.disabled)\n\t\t)\n\n\t\t// Create keyboard activation stream (Enter/Space)\n\t\tconst keyActivation$ = fromEvent<KeyboardEvent>(button, 'keydown').pipe(\n\t\t\tfilter(() => !this.disabled),\n\t\t\tfilter(event => event.key === 'Enter' || event.key === ' '),\n\t\t\ttap(event => event.preventDefault())\n\t\t)\n\n\t\t// Merge click and keyboard streams for instant navigation\n\t\tmerge(click$, keyActivation$).pipe(\n\t\t\ttap(() => {\n\t\t\t\t// Dispatch navigation event\n\t\t\t\tthis.dispatchEvent(new CustomEvent('bar-item-click', {\n\t\t\t\t\tdetail: {\n\t\t\t\t\t\ticon: this.icon,\n\t\t\t\t\t\tlabel: this.label,\n\t\t\t\t\t\tactive: this.active\n\t\t\t\t\t},\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true\n\t\t\t\t}))\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting)\n\t\t).subscribe()\n\t}\n\n\t/**\n\t * Format badge content for display\n\t */\n\tprivate formatBadge(badge: string): string {\n\t\t// Convert to number if possible\n\t\tconst num = Number(badge)\n\t\tif (!isNaN(num)) {\n\t\t\t// Show 99+ for large numbers\n\t\t\treturn num > 99 ? '99+' : String(num)\n\t\t}\n\t\t// For text badges, limit to 3 characters\n\t\treturn badge.slice(0, 3)\n\t}\n\n\tprotected firstUpdated() {\n\t\t// Set up navigation stream after first render when button is available\n\t\tthis.setupNavigationStream()\n\t}\n\n\tprotected render() {\n\t\tconst hasSlotContent = this.querySelector('[slot]') || (this.textContent?.trim() && !this.label)\n\t\tconst badgeText = this.badge ? this.formatBadge(this.badge) : ''\n\t\tconst showBadgeText = badgeText && badgeText !== '0'\n\n\t\t// Check for custom icon slot content\n\t\tconst hasCustomIcon = this.querySelector('[slot=\"icon\"]')\n\n\t\t// Main container classes - now the clickable area\n\t\tconst containerClasses = {\n\t\t\t'relative flex flex-col items-center justify-center': true,\n\t\t\t'flex-1 min-w-[48px] max-w-[168px]': true, // Fill available space\n\t\t\t'py-2 px-1 cursor-pointer': !this.disabled,\n\t\t\t'transition-all duration-200': true,\n\t\t\t'hover:bg-surface-containerHigh': !this.disabled && !this.active,\n\t\t\t'cursor-not-allowed opacity-38': this.disabled,\n\t\t\t'outline-none': true,\n\t\t\t'focus-visible:outline-2 focus-visible:outline-offset-2': true\n\t\t}\n\n\t\t// Icon indicator - just visual, not clickable\n\t\tconst indicatorClasses = {\n\t\t\t'w-16 h-8 rounded-2xl': true,\n\t\t\t'flex items-center justify-center': true,\n\t\t\t'transition-all duration-200': true,\n\t\t\t'bg-secondary-container': this.active,\n\t\t\t'group-hover:bg-surface-containerHighest': !this.active && !this.disabled,\n\t\t\t'relative overflow-hidden': true\n\t\t}\n\n\t\tconst labelClasses = {\n\t\t\t'text-xs font-medium leading-4 mt-1': true,\n\t\t\t'text-center max-w-full': true,\n\t\t\t'overflow-hidden text-ellipsis whitespace-nowrap': true,\n\t\t\t'transition-all duration-200': true\n\t\t}\n\n\t\tconst badgeClasses = {\n\t\t\t'absolute top-0 right-3': true,\n\t\t\t'min-w-[6px] h-1.5': !showBadgeText,\n\t\t\t'min-w-[16px] h-4': showBadgeText,\n\t\t\t'rounded-full': !showBadgeText,\n\t\t\t'rounded-lg': showBadgeText,\n\t\t\t'flex items-center justify-center': showBadgeText,\n\t\t\t'px-1': showBadgeText,\n\t\t\t'transition-all duration-200': true,\n\t\t\t'z-10': true\n\t\t}\n\n\t\t// Determine colors\n\t\tconst containerColors = this.active\n\t\t\t? {\n\t\t\t\t\tcolor: SchmancyTheme.sys.color.secondary.onContainer\n\t\t\t }\n\t\t\t: {\n\t\t\t\t\tcolor: SchmancyTheme.sys.color.surface.onVariant\n\t\t\t }\n\n\t\t// Set CSS variables for focus state\n\t\tconst styleVars = {\n\t\t\t'--focus-color': SchmancyTheme.sys.color.primary.default\n\t\t}\n\n\t\treturn html`\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclass=${this.classMap(containerClasses)}\n\t\t\t\t@click=${this.handleClick}\n\t\t\t\t@keydown=${this.handleKeyDown}\n\t\t\t\t?disabled=${this.disabled}\n\t\t\t\taria-pressed=${this.active}\n\t\t\t\taria-label=${this.label || 'Navigation item'}\n\t\t\t\tstyle=${this.styleMap({\n\t\t\t\t\t...styleVars,\n\t\t\t\t\t'outline-color': 'var(--focus-color)'\n\t\t\t\t})}\n\t\t\t\t${color(containerColors)}\n\t\t\t>\n\t\t\t\t<!-- Icon with indicator background -->\n\t\t\t\t<div class=${this.classMap(indicatorClasses)}>\n\t\t\t\t\t<!-- Ripple effects -->\n\t\t\t\t\t${this.ripples.map(\n\t\t\t\t\t\tripple => html`\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclass=\"ripple-effect\"\n\t\t\t\t\t\t\t\tstyle=${this.styleMap({\n\t\t\t\t\t\t\t\t\tleft: `${ripple.x}px`,\n\t\t\t\t\t\t\t\t\ttop: `${ripple.y}px`,\n\t\t\t\t\t\t\t\t\ttransform: 'translate(-50%, -50%)'\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t></span>\n\t\t\t\t\t\t`\n\t\t\t\t\t)}\n\n\t\t\t\t\t${hasCustomIcon\n\t\t\t\t\t\t? html`<slot name=\"icon\"></slot>`\n\t\t\t\t\t\t: this.icon\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<schmancy-icon\n\t\t\t\t\t\t\t\t\t\t.fill=${this.active ? 1 : 0}\n\t\t\t\t\t\t\t\t\t\tclass=\"relative z-10 flex items-center justify-center transition-all duration-200\"\n\t\t\t\t\t\t\t\t\t\tstyle=\"--schmancy-icon-size: 24px;\"\n\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t${this.icon}\n\t\t\t\t\t\t\t\t\t</schmancy-icon>\n\t\t\t\t\t\t\t `\n\t\t\t\t\t\t\t: hasSlotContent\n\t\t\t\t\t\t\t\t? html`<slot></slot>`\n\t\t\t\t\t\t\t\t: ''}\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Label below icon -->\n\t\t\t\t${!this.hideLabels && this.label ? html`\n\t\t\t\t\t<span class=${this.classMap(labelClasses)}>${this.label}</span>\n\t\t\t\t` : ''}\n\n\t\t\t\t<!-- Badge -->\n\t\t\t\t${showBadgeText ? html`\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=${this.classMap(badgeClasses)}\n\t\t\t\t\t\taria-label=\"${badgeText} notifications\"\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tbgColor: SchmancyTheme.sys.color.error.default,\n\t\t\t\t\t\t\tcolor: SchmancyTheme.sys.color.error.on\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span class=\"text-[10px] font-medium leading-none\">${badgeText}</span>\n\t\t\t\t\t</span>\n\t\t\t\t` : this.badge ? html`\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=${this.classMap(badgeClasses)}\n\t\t\t\t\t\taria-label=\"Has notifications\"\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tbgColor: SchmancyTheme.sys.color.error.default\n\t\t\t\t\t\t})}\n\t\t\t\t\t></span>\n\t\t\t\t` : ''}\n\t\t\t</button>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-navigation-bar-item': SchmancyNavigationBarItem\n\t}\n}","import { SchmancyElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { SchmancyEvents, SchmancyTheme } from '..'\nimport { BehaviorSubject, fromEvent, Subject } from 'rxjs'\nimport { takeUntil, throttleTime, tap, pairwise, map, filter } from 'rxjs/operators'\nimport type { SchmancyNavigationBarItem } from './navigation-bar-item'\nimport { theme } from '../theme/theme.service'\n\n/** Height of the navigation bar in pixels */\nconst NAV_BAR_HEIGHT = 80\n\n/** Mobile breakpoint - matches md: in Tailwind (max-width for mobile) */\nconst MOBILE_BREAKPOINT = '(max-width: 767px)'\n\n/**\n * `<schmancy-navigation-bar>` component\n *\n * A horizontal navigation component following Material Design 3 specifications.\n * Navigation bars provide access to between 3-7 primary destinations.\n * Automatically hides in fullscreen mode when triggered via schmancyTheme.next({ fullscreen: true }).\n *\n * **IMPORTANT**: This component includes `z-10` by default (consistent with navigation-rail).\n * The consumer is responsible for positioning the navigation bar in their layout.\n * For typical bottom-fixed positioning, add: `class=\"fixed bottom-0 left-0 right-0\"`.\n *\n * @element schmancy-navigation-bar\n * @slot - Default slot for navigation bar items\n *\n * @fires navigation-change - When an item is selected\n *\n * @example\n * <!-- Fixed at bottom (typical usage) -->\n * <schmancy-navigation-bar activeIndex=\"0\" class=\"fixed bottom-0 left-0 right-0\">\n * <schmancy-navigation-bar-item icon=\"home\" label=\"Home\"></schmancy-navigation-bar-item>\n * <schmancy-navigation-bar-item icon=\"search\" label=\"Search\"></schmancy-navigation-bar-item>\n * <schmancy-navigation-bar-item icon=\"favorite\" label=\"Favorites\"></schmancy-navigation-bar-item>\n * <schmancy-navigation-bar-item icon=\"settings\" label=\"Settings\"></schmancy-navigation-bar-item>\n * </schmancy-navigation-bar>\n *\n * @example\n * <!-- Within a container (demo/mockup usage) -->\n * <div class=\"flex flex-col h-screen\">\n * <main class=\"flex-1\">Content</main>\n * <schmancy-navigation-bar activeIndex=\"0\">\n * <schmancy-navigation-bar-item icon=\"home\" label=\"Home\"></schmancy-navigation-bar-item>\n * </schmancy-navigation-bar>\n * </div>\n */\n@customElement('schmancy-navigation-bar')\nexport class SchmancyNavigationBar extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t\ttransition: transform 0.3s ease-in-out;\n\t}\n\n\t:host([hide-on-scroll]) {\n\t\ttransition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n\t}\n\n\t/* Support 3-7 items with equal distribution */\n\t::slotted(schmancy-navigation-bar-item) {\n\t\tflex: 1;\n\t\tmax-width: 168px; /* Prevent items from being too wide */\n\t}\n\n\t/* Accessibility focus indicators */\n\t:host(:focus-within) {\n\t\toutline: 2px solid var(--schmancy-sys-color-primary);\n\t\toutline-offset: -2px;\n\t}\n`];\n\t/**\n\t * Observable for active index state\n\t */\n\tprivate activeIndex$ = new BehaviorSubject<number>(-1)\n\n\t/**\n\t * Currently active item index\n\t * @default -1\n\t */\n\t@property({ type: Number })\n\tget activeIndex() { return this.activeIndex$.value }\n\tset activeIndex(value: number) { this.activeIndex$.next(value) }\n\n\t/**\n\t * Hide labels and show only icons\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\thideLabels = false\n\n\t/**\n\t * Elevation level for the navigation bar\n\t * @default 2\n\t */\n\t@property({ type: Number, reflect: true })\n\televation = 2\n\n\t/**\n\t * Hide navigation bar on scroll down, show on scroll up\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\thideOnScroll = false\n\n\n\t/**\n\t * Current focused item index for keyboard navigation\n\t */\n\t@state()\n\tprivate focusedIndex = -1\n\n\t/**\n\t * Whether the navigation bar is hidden due to scrolling\n\t */\n\t@state()\n\tprivate isHiddenByScroll = false\n\n\t/**\n\t * Whether the navigation bar is hidden due to fullscreen mode\n\t */\n\t@state()\n\tprivate isFullscreen = false\n\n\t/**\n\t * Get all navigation bar items from the slot\n\t */\n\tprivate getItems(): SchmancyNavigationBarItem[] {\n\t\tconst slot = this.shadowRoot?.querySelector('slot') as HTMLSlotElement | null\n\t\tif (!slot) return []\n\t\treturn slot.assignedElements({ flatten: true })\n\t\t\t.filter((el): el is SchmancyNavigationBarItem =>\n\t\t\t\tel.tagName.toLowerCase() === 'schmancy-navigation-bar-item'\n\t\t\t)\n\t}\n\n\t/**\n\t * Minimum scroll threshold before triggering hide/show\n\t */\n\tprivate readonly SCROLL_THRESHOLD = 10\n\n\t/**\n\t * Media query for mobile detection\n\t */\n\tprivate mobileMediaQuery: MediaQueryList | null = null\n\n\t/**\n\t * Subject to track visibility state changes\n\t */\n\tprivate visibility$ = new Subject<boolean>()\n\n\t/**\n\t * Check if on mobile viewport\n\t */\n\tprivate isMobileViewport(): boolean {\n\t\treturn this.mobileMediaQuery?.matches ?? false\n\t}\n\n\t/**\n\t * Update bottom offset for schmancy-page/fullHeight consumers\n\t */\n\tprivate updateBottomOffset() {\n\t\tconst shouldSetOffset = !this.isFullscreen && this.isMobileViewport()\n\t\ttheme.setBottomOffset(shouldSetOffset ? NAV_BAR_HEIGHT : 0)\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Set up mobile media query\n\t\tthis.mobileMediaQuery = window.matchMedia(MOBILE_BREAKPOINT)\n\n\t\t// Listen to viewport changes\n\t\tfromEvent<MediaQueryListEvent>(this.mobileMediaQuery, 'change').pipe(\n\t\t\ttap(() => this.updateBottomOffset()),\n\t\t\ttakeUntil(this.disconnecting)\n\t\t).subscribe()\n\n\t\t// Subscribe to fullscreen observable\n\t\ttheme.fullscreen$.pipe(\n\t\t\ttap(isFullscreen => {\n\t\t\t\tthis.isFullscreen = isFullscreen\n\t\t\t\tthis.visibility$.next(!this.isFullscreen && !this.isHiddenByScroll)\n\t\t\t\tthis.updateBottomOffset()\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting)\n\t\t).subscribe()\n\n\t\t// Initial offset update\n\t\tthis.updateBottomOffset()\n\n\t\t// Listen to bar-item-click events using RxJS\n\t\tfromEvent(this, 'bar-item-click').pipe(\n\t\t\ttap((event: Event) => this.handleItemClick(event as CustomEvent)),\n\t\t\ttakeUntil(this.disconnecting)\n\t\t).subscribe()\n\n\t\t// Listen to keydown events using RxJS\n\t\tfromEvent(this, 'keydown').pipe(\n\t\t\ttap((event: Event) => this.handleKeyDown(event as KeyboardEvent)),\n\t\t\ttakeUntil(this.disconnecting)\n\t\t).subscribe()\n\n\t\t// Subscribe to active index changes\n\t\tthis.activeIndex$.pipe(\n\t\t\ttakeUntil(this.disconnecting)\n\t\t).subscribe(index => {\n\t\t\tthis.updateActiveStates(index)\n\t\t})\n\n\t\t// Set up scroll listener if hideOnScroll is enabled\n\t\tif (this.hideOnScroll) {\n\t\t\tthis.setupScrollListener()\n\t\t}\n\n\t\tthis.updateItems()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\t// Clear offset when nav bar is removed\n\t\ttheme.setBottomOffset(0)\n\t\tthis.mobileMediaQuery = null\n\t}\n\n\t/**\n\t * Set up RxJS-based scroll listener\n\t */\n\tprivate setupScrollListener() {\n\t\t// Create scroll observable\n\t\tfromEvent(window, 'scroll').pipe(\n\t\t\tthrottleTime(100), // Throttle for performance\n\t\t\tmap(() => window.scrollY),\n\t\t\tpairwise(), // Get pairs of [previous, current] scroll positions\n\t\t\tfilter(([prev, curr]) => Math.abs(curr - prev) > this.SCROLL_THRESHOLD), // Only react if scrolled enough\n\t\t\ttap(([prev, curr]) => {\n\t\t\t\tconst scrollingDown = curr > prev\n\t\t\t\tconst scrollingUp = curr < prev\n\t\t\t\tconst previousHiddenState = this.isHiddenByScroll\n\n\t\t\t\t// Hide when scrolling down, show when scrolling up\n\t\t\t\tif (scrollingDown && !this.isHiddenByScroll) {\n\t\t\t\t\tthis.isHiddenByScroll = true\n\t\t\t\t} else if (scrollingUp && this.isHiddenByScroll) {\n\t\t\t\t\tthis.isHiddenByScroll = false\n\t\t\t\t}\n\n\t\t\t\t// Always show when near top\n\t\t\t\tif (curr <= this.SCROLL_THRESHOLD) {\n\t\t\t\t\tthis.isHiddenByScroll = false\n\t\t\t\t}\n\n\t\t\t\t// Update visibility if scroll state changed\n\t\t\t\tif (previousHiddenState !== this.isHiddenByScroll) {\n\t\t\t\t\tthis.visibility$.next(!this.isHiddenByScroll && !this.isFullscreen)\n\t\t\t\t}\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting)\n\t\t).subscribe()\n\t}\n\n\n\t/**\n\t * Handle item click events\n\t */\n\tprivate handleItemClick = (event: CustomEvent) => {\n\t\tconst items = this.getItems()\n\t\tconst clickedItem = event.target as HTMLElement\n\t\tconst index = items.findIndex(it => it === clickedItem)\n\n\t\tif (index === -1) return\n\n\t\t// Clicking the already-active item toggles the sidebar\n\t\tif (this.activeIndex === index) {\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent(SchmancyEvents.NavDrawer_toggle, {\n\t\t\t\t\tdetail: { state: 'toggle' },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t\treturn\n\t\t}\n\n\t\tconst oldIndex = this.activeIndex\n\t\t// Setting activeIndex will trigger the BehaviorSubject\n\t\tthis.activeIndex = index\n\n\t\t// Emit navigation change event\n\t\tthis.dispatchEvent(new CustomEvent('navigation-change', {\n\t\t\tdetail: {\n\t\t\t\toldIndex,\n\t\t\t\tnewIndex: index,\n\t\t\t\titem: clickedItem\n\t\t\t},\n\t\t\tbubbles: true,\n\t\t\tcomposed: true\n\t\t}))\n\t}\n\n\t/**\n\t * Handle keyboard navigation\n\t */\n\tprivate handleKeyDown = (event: KeyboardEvent) => {\n\t\tconst items = this.getItems()\n\t\tconst currentIndex = this.focusedIndex === -1 ? this.activeIndex : this.focusedIndex\n\n\t\tswitch (event.key) {\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tevent.preventDefault()\n\t\t\t\tif (currentIndex > 0) {\n\t\t\t\t\tthis.focusItem(currentIndex - 1)\n\t\t\t\t}\n\t\t\t\tbreak\n\n\t\t\tcase 'ArrowRight':\n\t\t\t\tevent.preventDefault()\n\t\t\t\tif (currentIndex < items.length - 1) {\n\t\t\t\t\tthis.focusItem(currentIndex + 1)\n\t\t\t\t}\n\t\t\t\tbreak\n\n\t\t\tcase 'Home':\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.focusItem(0)\n\t\t\t\tbreak\n\n\t\t\tcase 'End':\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.focusItem(items.length - 1)\n\t\t\t\tbreak\n\n\t\t\tcase 'Enter':\n\t\t\tcase ' ':\n\t\t\t\tevent.preventDefault()\n\t\t\t\tif (this.focusedIndex !== -1) {\n\t\t\t\t\titems[this.focusedIndex]?.click()\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\t/**\n\t * Focus a specific item by index\n\t */\n\tprivate focusItem(index: number) {\n\t\tconst items = this.getItems()\n\t\tif (items[index]) {\n\t\t\tthis.focusedIndex = index\n\t\t\t;(items[index] as HTMLElement).focus()\n\t\t}\n\t}\n\n\t/**\n\t * Update the list of navigation items\n\t */\n\tprivate updateItems() {\n\t\tconst slot = this.shadowRoot?.querySelector('slot')\n\t\tif (slot) {\n\t\t\tconst handleSlotChange = () => {\n\t\t\t\t// Update active states when slot content changes\n\t\t\t\tthis.updateActiveStates(this.activeIndex)\n\t\t\t}\n\t\t\tslot.addEventListener('slotchange', handleSlotChange)\n\t\t\thandleSlotChange() // Initial update\n\t\t}\n\t}\n\n\n\t/**\n\t * Add a boat item to the navigation bar\n\t * @param config Configuration for the boat item\n\t * @returns The created or existing navigation bar item element\n\t */\n\tpublic addBoatItem(config: { id: string; title: string; icon?: string }) {\n\t\t// Check if item already exists\n\t\tconst existingItem = this.querySelector(`[value=\"${config.id}\"]`) as HTMLElement\n\t\tif (existingItem) {\n\t\t\t// Item already exists, just return it\n\t\t\treturn existingItem\n\t\t}\n\n\t\t// Create new item\n\t\tconst item = document.createElement('schmancy-navigation-bar-item')\n\t\titem.setAttribute('value', config.id)\n\t\titem.innerHTML = `\n\t\t\t<schmancy-icon>${config.icon || 'widgets'}</schmancy-icon>\n\t\t\t<span>${config.title}</span>\n\t\t`\n\t\tthis.appendChild(item)\n\t\treturn item\n\t}\n\n\t/**\n\t * Update active states on all items\n\t */\n\tprivate updateActiveStates(activeIndex: number) {\n\t\tconst items = this.getItems()\n\t\titems.forEach((item, index) => {\n\t\t\t// Use setActive method to trigger item's reactive update\n\t\t\titem.setActive(index === activeIndex)\n\t\t\titem.hideLabels = this.hideLabels\n\t\t\t// Set tabindex for accessibility\n\t\t\titem.tabIndex = index === activeIndex ? 0 : -1\n\t\t})\n\t}\n\n\tupdated(changedProperties: Map<string, unknown>) {\n\t\tsuper.updated(changedProperties)\n\n\t\tif (changedProperties.has('hideLabels')) {\n\t\t\t// Only update hide labels, active state is handled by the BehaviorSubject\n\t\t\tthis.updateActiveStates(this.activeIndex)\n\t\t}\n\n\t\tif (changedProperties.has('hideOnScroll')) {\n\t\t\tif (this.hideOnScroll && !changedProperties.get('hideOnScroll')) {\n\t\t\t\t// hideOnScroll was just enabled\n\t\t\t\tthis.setupScrollListener()\n\t\t\t} else if (!this.hideOnScroll) {\n\t\t\t\t// hideOnScroll was disabled, reset hidden state\n\t\t\t\tthis.isHiddenByScroll = false\n\t\t\t\t// Update visibility since we're now visible\n\t\t\t\tthis.visibility$.next(!this.isFullscreen)\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected render() {\n\t\t// Determine if the bar should be visually hidden\n\t\tconst isVisuallyHidden = this.isFullscreen || this.isHiddenByScroll\n\n\t\tconst containerClasses = {\n\t\t\t'h-20': true, // 80px height\n\t\t\t'flex items-center justify-around': true,\n\t\t\t'px-2 py-3 box-border': true,\n\t\t\t'transition-all duration-300 ease-in-out': true,\n\t\t\t'z-10': true, // Consistent with navigation-rail z-index\n\t\t\t// Elevation shadows\n\t\t\t'shadow-none': this.elevation === 0,\n\t\t\t'shadow-sm': this.elevation === 1,\n\t\t\t'shadow-md': this.elevation === 2,\n\t\t\t'shadow-lg': this.elevation === 3,\n\t\t\t'shadow-xl': this.elevation === 4,\n\t\t\t'shadow-2xl': this.elevation === 5,\n\t\t}\n\n\t\t// Apply transform for hide/show animation\n\t\tconst transformStyle = isVisuallyHidden ? 'translateY(100%)' : 'translateY(0)'\n\n\t\treturn html`\n\t\t\t<nav\n\t\t\t\tclass=${this.classMap(containerClasses)}\n\t\t\t\trole=\"navigation\"\n\t\t\t\taria-label=\"Main navigation\"\n\t\t\t\taria-hidden=${isVisuallyHidden}\n\t\t\t\tstyle=\"transform: ${transformStyle};\"\n\t\t\t\t${color({\n\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.container,\n\t\t\t\t\tcolor: SchmancyTheme.sys.color.surface.on\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<slot></slot>\n\t\t\t</nav>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-navigation-bar': SchmancyNavigationBar\n\t}\n}","import { bufferTime, concatMap, filter, fromEvent, map, of, Subject, take, tap, timeout, zip } from 'rxjs'\nimport { SchmancyTeleportation } from './teleport.component'\n\nexport type WhereAreYouRickyEvent = CustomEvent<{\n\tid: string\n\tcallerID: number\n}>\n\nexport const WhereAreYouRicky = 'whereAreYouRicky'\n\nexport type HereMortyEvent = CustomEvent<{\n\tcomponent: SchmancyTeleportation\n}>\n\nexport type FLIP_REQUEST = {\n\tfrom: {\n\t\trect: DOMRect\n\t\telement?: HTMLElement\n\t}\n\tto: {\n\t\trect: DOMRect\n\t\telement: HTMLElement\n\t}\n\tstagger?: number\n\thost: HTMLElement\n}\nexport const HereMorty = 'hereMorty'\n\nclass Teleportation {\n\tactiveTeleportations = new Map<string, DOMRect>()\n\tflipRequests = new Subject<FLIP_REQUEST>()\n\n\tconstructor() {\n\t\tthis.flipRequests\n\t\t\t.pipe(\n\t\t\t\tbufferTime(1),\n\t\t\t\tmap(requests =>\n\t\t\t\t\trequests.map(({ from, to, host }, i) => ({\n\t\t\t\t\t\tfrom,\n\t\t\t\t\t\tto,\n\t\t\t\t\t\thost,\n\t\t\t\t\t\ti,\n\t\t\t\t\t})),\n\t\t\t\t),\n\t\t\t\tconcatMap(requests => zip(requests.map(request => of(this.flip(request))))),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tfind = (component: SchmancyTeleportation) => {\n\t\treturn zip([\n\t\t\tfromEvent<HereMortyEvent>(window, HereMorty).pipe(\n\t\t\t\tfilter(\n\t\t\t\t\te =>\n\t\t\t\t\t\t!!e.detail.component.uuid &&\n\t\t\t\t\t\t!!component.id &&\n\t\t\t\t\t\te.detail.component.id === component.id &&\n\t\t\t\t\t\te.detail.component.uuid !== component.uuid,\n\t\t\t\t),\n\t\t\t\tmap(e => e.detail.component),\n\t\t\t\ttake(1),\n\t\t\t),\n\t\t\tof(component).pipe(\n\t\t\t\ttap(() => {\n\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\tnew CustomEvent<WhereAreYouRickyEvent['detail']>(WhereAreYouRicky, {\n\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\tid: component.id,\n\t\t\t\t\t\t\t\tcallerID: component.uuid,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t),\n\t\t]).pipe(\n\t\t\tmap(([component]) => component),\n\t\t\ttimeout(0),\n\t\t)\n\t}\n\n\tflip = (request: {\n\t\tfrom: {\n\t\t\trect: DOMRect\n\t\t}\n\t\tto: {\n\t\t\telement: HTMLElement\n\t\t\trect: DOMRect\n\t\t}\n\t\thost: HTMLElement\n\t\ti: number\n\t}) => {\n\t\tconst { from, to } = request\n\n\t\t// Prepare the element for animation\n\t\tconst originalZIndex = to.element.style.zIndex\n\t\tto.element.style.transformOrigin = 'top left'\n\t\tto.element.style.setProperty('visibility', 'visible')\n\t\tto.element.style.zIndex = '1000'\n\n\t\t// \"onBegin\" logic goes here (since Web Animations doesn't have onBegin).\n\t\t// If you had more logic, place it here:\n\n\t\t// Calculate starting and ending transforms\n\t\tconst startX = from.rect.left - to.rect.left\n\t\tconst startY = from.rect.top - to.rect.top\n\t\tconst startScaleX = from.rect.width / to.rect.width\n\t\tconst startScaleY = from.rect.height / to.rect.height\n\n\t\t// Create keyframes\n\t\tconst keyframes: Keyframe[] = [\n\t\t\t{\n\t\t\t\ttransform: `translate(${startX}px, ${startY}px) scale(${startScaleX}, ${startScaleY})`,\n\t\t\t},\n\t\t\t{\n\t\t\t\ttransform: 'translate(0, 0) scale(1, 1)',\n\t\t\t},\n\t\t]\n\n\t\t// Use native Web Animations API\n\t\tconst animation = to.element.animate(keyframes, {\n\t\t\tduration: 250,\n\t\t\tdelay: 10, // if desired\n\t\t\t// Approximate 'inOutQuad' via a cubic-bezier easing.\n\t\t\t// You can adjust these values to taste, or use a standard one:\n\t\t\teasing: 'cubic-bezier(0.455, 0.03, 0.515, 0.955)',\n\t\t\t// or simply 'ease-in-out'\n\t\t})\n\n\t\t// \"onComplete\" logic goes here\n\t\tanimation.onfinish = () => {\n\t\t\tto.element.style.zIndex = originalZIndex\n\t\t\tto.element.style.transformOrigin = ''\n\t\t\t// If you have additional cleanup, place it here\n\t\t}\n\t}\n}\n\nexport const teleport = new Teleportation()\nexport default teleport\n","import { Observable, interval } from 'rxjs'\nimport { distinctUntilChanged, map, take } from 'rxjs/operators'\n\n// Function to monitor element's bounding client rect\nexport function watchElementRect(element: Element): Observable<DOMRectReadOnly> {\n\treturn interval(50).pipe(\n\t\t// startWith(true),\n\t\tmap(() => element.getBoundingClientRect()),\n\t\tdistinctUntilChanged(\n\t\t\t(prev, curr) =>\n\t\t\t\tprev.width === curr.width &&\n\t\t\t\tprev.height === curr.height &&\n\t\t\t\tprev.top === curr.top &&\n\t\t\t\tprev.right === curr.right &&\n\t\t\t\tprev.bottom === curr.bottom &&\n\t\t\t\tprev.left === curr.left,\n\t\t),\n\t\ttake(1),\n\t)\n}\n","import { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { filter, fromEvent, merge, of, takeUntil, tap, throwIfEmpty } from 'rxjs'\nimport { FINDING_MORTIES, FINDING_MORTIES_EVENT, HERE_RICKY, HERE_RICKY_EVENT } from '..'\nimport {\n\tHereMorty,\n\tHereMortyEvent,\n\tWhereAreYouRicky,\n\tWhereAreYouRickyEvent,\n\tdefault as teleport,\n\tdefault as teleportationService,\n} from './teleport.service'\nimport { watchElementRect } from './watcher'\nimport { SchmancyElement } from '@mixins/index'\n@customElement('schmancy-teleport')\nexport class SchmancyTeleportation extends SchmancyElement {\n\tstatic styles = [css``]\n\n\t/**\n\t * @attr {string} uuid - The component tag to teleport\n\t * @readonly\n\t */\n\t@property({ type: Number, reflect: true }) uuid = Math.floor(Math.random() * Date.now())\n\n\t/**\n\t * @attr {string} id - The component tag to teleport\n\t * @required\n\t */\n\t@property({ type: String }) id!: string\n\n\t@property({ type: Number }) delay = 0\n\n\tdebugging = Boolean(import.meta.env.DEV)\n\n\tget _slottedChildren() {\n\t\tconst slot = this.shadowRoot.querySelector('slot')\n\t\treturn slot.assignedElements({ flatten: true })\n\t}\n\n\tconnectedCallback(): void {\n\t\tif (this.id === undefined) throw new Error('id is required')\n\t\tsuper.connectedCallback()\n\t\tmerge(\n\t\t\tfromEvent<FINDING_MORTIES_EVENT>(window, FINDING_MORTIES).pipe(\n\t\t\t\ttap({\n\t\t\t\t\tnext: () => {\n\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\tnew CustomEvent<HERE_RICKY_EVENT['detail']>(HERE_RICKY, {\n\t\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\t\tcomponent: this,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t)\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t),\n\t\t\tfromEvent<WhereAreYouRickyEvent>(window, WhereAreYouRicky).pipe(\n\t\t\t\ttap({\n\t\t\t\t\tnext: e => {\n\t\t\t\t\t\tif (e.detail.id === this.id && this.uuid && e.detail.callerID !== this.uuid) {\n\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent<HereMortyEvent['detail']>(HereMorty, {\n\t\t\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\t\t\tcomponent: this,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t),\n\t\t)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe()\n\t}\n\n\tasync firstUpdated() {\n\t\tof(teleportationService.activeTeleportations.get(this.id))\n\t\t\t.pipe(\n\t\t\t\tfilter(a => !!a),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tthrowIfEmpty(),\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: domRect => {\n\t\t\t\t\tconsole.count('teleport')\n\t\t\t\t\tthis.style.setProperty('visibility', 'hidden')\n\t\t\t\t\t// teleport.flipRequests.next({ from: component, to: this, stagger: 0 })\n\t\t\t\t\twatchElementRect(this)\n\t\t\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t\t\t.subscribe({\n\t\t\t\t\t\t\tnext: e => {\n\t\t\t\t\t\t\t\tteleportationService.activeTeleportations.set(this.id, e)\n\t\t\t\t\t\t\t\tteleport.flipRequests.next({\n\t\t\t\t\t\t\t\t\tfrom: {\n\t\t\t\t\t\t\t\t\t\trect: domRect,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tto: {\n\t\t\t\t\t\t\t\t\t\trect: e,\n\t\t\t\t\t\t\t\t\t\telement: this._slottedChildren[0] as HTMLElement,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\thost: this,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\terror: () => {\n\t\t\t\t\tthis.style.setProperty('visibility', 'visible')\n\t\t\t\t\twatchElementRect(this)\n\t\t\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t\t\t.subscribe({\n\t\t\t\t\t\t\tnext: e => {\n\t\t\t\t\t\t\t\tteleportationService.activeTeleportations.set(this.id, e)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tcomplete: () => {},\n\t\t\t})\n\t}\n\n\trender() {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-teleport': SchmancyTeleportation\n\t}\n}\n"],"mappings":"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"}