@mhmo91/schmancy 0.4.92 → 0.4.94

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 (378) hide show
  1. package/ai/area.md +181 -968
  2. package/dist/ai/area.md +181 -968
  3. package/dist/{animated-text-CUFCt7Zg.js → animated-text-BLDqQ33G.js} +3 -3
  4. package/dist/{animated-text-CUFCt7Zg.js.map → animated-text-BLDqQ33G.js.map} +1 -1
  5. package/dist/{animated-text-CM1zqBki.cjs → animated-text-CIgDmUF0.cjs} +2 -2
  6. package/dist/{animated-text-CM1zqBki.cjs.map → animated-text-CIgDmUF0.cjs.map} +1 -1
  7. package/dist/animated-text.cjs +1 -1
  8. package/dist/animated-text.js +1 -1
  9. package/dist/area.cjs +1 -1
  10. package/dist/area.js +1 -1
  11. package/dist/{autocomplete-CFREt7Vm.cjs → autocomplete-35wx4zfo.cjs} +6 -6
  12. package/dist/autocomplete-35wx4zfo.cjs.map +1 -0
  13. package/dist/{autocomplete-09_SfjsP.js → autocomplete-DMbJLodc.js} +35 -35
  14. package/dist/autocomplete-DMbJLodc.js.map +1 -0
  15. package/dist/autocomplete.cjs +1 -1
  16. package/dist/autocomplete.js +1 -1
  17. package/dist/{avatar-CKp3Ukk4.js → avatar-BqGZ5lKc.js} +152 -200
  18. package/dist/avatar-BqGZ5lKc.js.map +1 -0
  19. package/dist/{avatar-C8PC_n9i.cjs → avatar-UnP-o7T9.cjs} +21 -69
  20. package/dist/avatar-UnP-o7T9.cjs.map +1 -0
  21. package/dist/badge.cjs +1 -1
  22. package/dist/badge.js +1 -1
  23. package/dist/{boat-DDJK4CS4.js → boat-PVy1fXfm.js} +2 -2
  24. package/dist/{boat-DDJK4CS4.js.map → boat-PVy1fXfm.js.map} +1 -1
  25. package/dist/{boat-Ddi4PegB.cjs → boat-zVJF22wK.cjs} +2 -2
  26. package/dist/{boat-Ddi4PegB.cjs.map → boat-zVJF22wK.cjs.map} +1 -1
  27. package/dist/boat.cjs +1 -1
  28. package/dist/boat.js +1 -1
  29. package/dist/busy.cjs +1 -1
  30. package/dist/busy.js +1 -1
  31. package/dist/button.cjs +1 -1
  32. package/dist/button.js +1 -1
  33. package/dist/card.cjs +1 -1
  34. package/dist/card.js +1 -1
  35. package/dist/{checkbox-TclkD2h5.cjs → checkbox-BtZqKgPT.cjs} +2 -2
  36. package/dist/{checkbox-TclkD2h5.cjs.map → checkbox-BtZqKgPT.cjs.map} +1 -1
  37. package/dist/{checkbox-BU1x0W8U.js → checkbox-DAFDBz7J.js} +2 -2
  38. package/dist/{checkbox-BU1x0W8U.js.map → checkbox-DAFDBz7J.js.map} +1 -1
  39. package/dist/checkbox.cjs +1 -1
  40. package/dist/checkbox.js +1 -1
  41. package/dist/{chips-DQBHJNSu.cjs → chips-BRigd0oB.cjs} +10 -21
  42. package/dist/{chips-DQBHJNSu.cjs.map → chips-BRigd0oB.cjs.map} +1 -1
  43. package/dist/{chips-Bxsoq1vm.js → chips-BnA6mVWq.js} +56 -67
  44. package/dist/{chips-Bxsoq1vm.js.map → chips-BnA6mVWq.js.map} +1 -1
  45. package/dist/chips.cjs +1 -1
  46. package/dist/chips.js +1 -1
  47. package/dist/code-highlight.cjs +1 -1
  48. package/dist/code-highlight.js +1 -1
  49. package/dist/{code-preview-C9Imx-RX.cjs → code-preview-BYWzA52m.cjs} +2 -2
  50. package/dist/{code-preview-C9Imx-RX.cjs.map → code-preview-BYWzA52m.cjs.map} +1 -1
  51. package/dist/{code-preview-DnUM87ZB.js → code-preview-CUc2NHQu.js} +2 -2
  52. package/dist/{code-preview-DnUM87ZB.js.map → code-preview-CUc2NHQu.js.map} +1 -1
  53. package/dist/components.cjs +1 -1
  54. package/dist/components.js +1 -1
  55. package/dist/content-drawer.cjs +1 -1
  56. package/dist/content-drawer.js +1 -1
  57. package/dist/{date-range-DF7MnRi3.js → date-range-DFNdMN6p.js} +4 -4
  58. package/dist/{date-range-DF7MnRi3.js.map → date-range-DFNdMN6p.js.map} +1 -1
  59. package/dist/{date-range-D1A1Xrmw.cjs → date-range-DhWbY9Ph.cjs} +2 -2
  60. package/dist/{date-range-D1A1Xrmw.cjs.map → date-range-DhWbY9Ph.cjs.map} +1 -1
  61. package/dist/{date-range-inline-CwLJLOe1.cjs → date-range-inline-FiCLIta4.cjs} +2 -2
  62. package/dist/{date-range-inline-CwLJLOe1.cjs.map → date-range-inline-FiCLIta4.cjs.map} +1 -1
  63. package/dist/{date-range-inline-Ca4DPfeR.js → date-range-inline-xh0mrWH9.js} +3 -3
  64. package/dist/{date-range-inline-Ca4DPfeR.js.map → date-range-inline-xh0mrWH9.js.map} +1 -1
  65. package/dist/date-range-inline.cjs +1 -1
  66. package/dist/date-range-inline.js +1 -1
  67. package/dist/date-range.cjs +1 -1
  68. package/dist/date-range.js +1 -1
  69. package/dist/{delay-hXu_bFxW.js → delay-BTRy2v5H.js} +2 -2
  70. package/dist/{delay-hXu_bFxW.js.map → delay-BTRy2v5H.js.map} +1 -1
  71. package/dist/{delay-DQKt6VVn.cjs → delay-dCLgp1B7.cjs} +2 -2
  72. package/dist/{delay-DQKt6VVn.cjs.map → delay-dCLgp1B7.cjs.map} +1 -1
  73. package/dist/delay.cjs +1 -1
  74. package/dist/delay.js +1 -1
  75. package/dist/{details-Ft0ivj0F.cjs → details-Bf0qMDKW.cjs} +2 -2
  76. package/dist/{details-Ft0ivj0F.cjs.map → details-Bf0qMDKW.cjs.map} +1 -1
  77. package/dist/{details-Ci0XXz0g.js → details-BsmaD0yr.js} +2 -2
  78. package/dist/{details-Ci0XXz0g.js.map → details-BsmaD0yr.js.map} +1 -1
  79. package/dist/details.cjs +1 -1
  80. package/dist/details.js +1 -1
  81. package/dist/{dialog-content-7tFlrTFn.cjs → dialog-content-0w0WQYF3.cjs} +2 -2
  82. package/dist/{dialog-content-7tFlrTFn.cjs.map → dialog-content-0w0WQYF3.cjs.map} +1 -1
  83. package/dist/{dialog-content-DXnLwUtv.js → dialog-content-r1Ai3BZj.js} +4 -4
  84. package/dist/{dialog-content-DXnLwUtv.js.map → dialog-content-r1Ai3BZj.js.map} +1 -1
  85. package/dist/dialog-service-CgJH8clD.cjs +2 -0
  86. package/dist/dialog-service-CgJH8clD.cjs.map +1 -0
  87. package/dist/{dialog-service-DwhuICgc.js → dialog-service-PQ9ssbsY.js} +53 -47
  88. package/dist/dialog-service-PQ9ssbsY.js.map +1 -0
  89. package/dist/dialog.cjs +1 -1
  90. package/dist/dialog.js +2 -2
  91. package/dist/directives.cjs +1 -1
  92. package/dist/directives.js +1 -1
  93. package/dist/divider-BPsLFNzK.js +22 -0
  94. package/dist/divider-BPsLFNzK.js.map +1 -0
  95. package/dist/divider-CYPKRC_-.cjs +2 -0
  96. package/dist/divider-CYPKRC_-.cjs.map +1 -0
  97. package/dist/divider.cjs +1 -1
  98. package/dist/divider.js +1 -1
  99. package/dist/{dropdown-content-BCk2WbXc.js → dropdown-content-B51-eGbI.js} +40 -41
  100. package/dist/dropdown-content-B51-eGbI.js.map +1 -0
  101. package/dist/{dropdown-content-CXxTjA0j.cjs → dropdown-content-DelDUcfW.cjs} +5 -10
  102. package/dist/dropdown-content-DelDUcfW.cjs.map +1 -0
  103. package/dist/dropdown.cjs +1 -1
  104. package/dist/dropdown.js +1 -1
  105. package/dist/{email-recipients-BWIYYwA8.cjs → email-recipients-BlSATi3L.cjs} +24 -24
  106. package/dist/email-recipients-BlSATi3L.cjs.map +1 -0
  107. package/dist/{email-recipients-BT3xPoBN.js → email-recipients-hkvv_vgI.js} +141 -144
  108. package/dist/email-recipients-hkvv_vgI.js.map +1 -0
  109. package/dist/extra.cjs +1 -1
  110. package/dist/extra.js +1 -1
  111. package/dist/{flex-DJEZ1DdQ.js → flex-BDtCUg0s.js} +2 -2
  112. package/dist/{flex-DJEZ1DdQ.js.map → flex-BDtCUg0s.js.map} +1 -1
  113. package/dist/{flex-DflXFgVs.cjs → flex-_K-5RVZM.cjs} +2 -2
  114. package/dist/{flex-DflXFgVs.cjs.map → flex-_K-5RVZM.cjs.map} +1 -1
  115. package/dist/{form-7OiDtJT4.js → form-BTmhZIB8.js} +11 -23
  116. package/dist/form-BTmhZIB8.js.map +1 -0
  117. package/dist/form-jw1NVkyp.cjs +2 -0
  118. package/dist/form-jw1NVkyp.cjs.map +1 -0
  119. package/dist/form.cjs +1 -1
  120. package/dist/form.js +1 -1
  121. package/dist/{formField.mixin-3i7VOHMH.js → formField.mixin-D_1WwNWJ.js} +2 -2
  122. package/dist/{formField.mixin-3i7VOHMH.js.map → formField.mixin-D_1WwNWJ.js.map} +1 -1
  123. package/dist/{formField.mixin-B1vJlhmI.cjs → formField.mixin-HN79lSIE.cjs} +2 -2
  124. package/dist/{formField.mixin-B1vJlhmI.cjs.map → formField.mixin-HN79lSIE.cjs.map} +1 -1
  125. package/dist/{icon-BMhWh8Ib.js → icon-Clqcexag.js} +2 -2
  126. package/dist/{icon-BMhWh8Ib.js.map → icon-Clqcexag.js.map} +1 -1
  127. package/dist/{icon-button-DOZuY9x8.js → icon-button-Bu_eEqfk.js} +5 -5
  128. package/dist/icon-button-Bu_eEqfk.js.map +1 -0
  129. package/dist/{icon-button-CLDy5tUS.cjs → icon-button-M5CqyRR4.cjs} +4 -4
  130. package/dist/icon-button-M5CqyRR4.cjs.map +1 -0
  131. package/dist/{icon-TPLdDnCq.cjs → icon-pFAWVSGq.cjs} +2 -2
  132. package/dist/{icon-TPLdDnCq.cjs.map → icon-pFAWVSGq.cjs.map} +1 -1
  133. package/dist/icons.cjs +1 -1
  134. package/dist/icons.js +1 -1
  135. package/dist/index.cjs +1 -1
  136. package/dist/index.js +49 -49
  137. package/dist/{input-Dre3bMuF.js → input-CFlQ_9Cq.js} +40 -44
  138. package/dist/input-CFlQ_9Cq.js.map +1 -0
  139. package/dist/input-CWOVMdSb.cjs +51 -0
  140. package/dist/input-CWOVMdSb.cjs.map +1 -0
  141. package/dist/input.cjs +1 -1
  142. package/dist/input.js +1 -1
  143. package/dist/layout.cjs +1 -1
  144. package/dist/layout.js +1 -1
  145. package/dist/lazy-DObpkuL6.cjs.map +1 -1
  146. package/dist/lazy-E2LCDm7n.js.map +1 -1
  147. package/dist/{list-DZ43cTnR.cjs → list-CDXL73JQ.cjs} +2 -2
  148. package/dist/{list-DZ43cTnR.cjs.map → list-CDXL73JQ.cjs.map} +1 -1
  149. package/dist/{list-2mBZmMCP.js → list-rmfIuWZK.js} +2 -2
  150. package/dist/{list-2mBZmMCP.js.map → list-rmfIuWZK.js.map} +1 -1
  151. package/dist/list.cjs +1 -1
  152. package/dist/list.js +1 -1
  153. package/dist/{litElement.mixin-Bj0zv3lK.js → litElement.mixin-Dm9SOPDp.js} +2 -2
  154. package/dist/{litElement.mixin-Bj0zv3lK.js.map → litElement.mixin-Dm9SOPDp.js.map} +1 -1
  155. package/dist/{litElement.mixin-CjRG_9tZ.cjs → litElement.mixin-YJ8D9a8Z.cjs} +2 -2
  156. package/dist/{litElement.mixin-CjRG_9tZ.cjs.map → litElement.mixin-YJ8D9a8Z.cjs.map} +1 -1
  157. package/dist/mailbox.cjs +1 -1
  158. package/dist/mailbox.js +1 -1
  159. package/dist/{map-sSS6ACVH.js → map-BfP3ZVm_.js} +2 -2
  160. package/dist/{map-sSS6ACVH.js.map → map-BfP3ZVm_.js.map} +1 -1
  161. package/dist/{map-D69SEPpf.cjs → map-DQwGv46m.cjs} +2 -2
  162. package/dist/{map-D69SEPpf.cjs.map → map-DQwGv46m.cjs.map} +1 -1
  163. package/dist/map.cjs +1 -1
  164. package/dist/map.js +1 -1
  165. package/dist/media-B28J9yez.js +261 -0
  166. package/dist/media-B28J9yez.js.map +1 -0
  167. package/dist/media-DtYChqKs.cjs +177 -0
  168. package/dist/media-DtYChqKs.cjs.map +1 -0
  169. package/dist/{menu-CATzB9tA.js → menu-C0iTDVTM.js} +3 -3
  170. package/dist/{menu-CATzB9tA.js.map → menu-C0iTDVTM.js.map} +1 -1
  171. package/dist/{menu-BOeTdvk_.cjs → menu-jcodrTEA.cjs} +2 -2
  172. package/dist/{menu-BOeTdvk_.cjs.map → menu-jcodrTEA.cjs.map} +1 -1
  173. package/dist/menu.cjs +1 -1
  174. package/dist/menu.js +1 -1
  175. package/dist/nav-drawer.cjs +1 -1
  176. package/dist/nav-drawer.js +1 -1
  177. package/dist/{notification-service-DrwmIgoR.js → notification-service-BIH173dS.js} +62 -58
  178. package/dist/notification-service-BIH173dS.js.map +1 -0
  179. package/dist/{notification-service-LnNx5EDh.cjs → notification-service-CD-XzDeP.cjs} +7 -7
  180. package/dist/notification-service-CD-XzDeP.cjs.map +1 -0
  181. package/dist/notification.cjs +1 -1
  182. package/dist/notification.js +2 -2
  183. package/dist/{notify-C41nYdUf.js → notify-4u_P6A9W.js} +2 -2
  184. package/dist/{notify-C41nYdUf.js.map → notify-4u_P6A9W.js.map} +1 -1
  185. package/dist/{notify-DQMcgjgZ.cjs → notify-C95rxXiW.cjs} +2 -2
  186. package/dist/{notify-DQMcgjgZ.cjs.map → notify-C95rxXiW.cjs.map} +1 -1
  187. package/dist/{option-DbBr0StZ.js → option-CTkTl7Pz.js} +12 -12
  188. package/dist/option-CTkTl7Pz.js.map +1 -0
  189. package/dist/{option-BNKGfKgL.cjs → option-D-Itfwmu.cjs} +5 -5
  190. package/dist/option-D-Itfwmu.cjs.map +1 -0
  191. package/dist/option.cjs +1 -1
  192. package/dist/option.js +1 -1
  193. package/dist/{payment-card-form-_jHodv7G.js → payment-card-form-DcipYS1-.js} +3 -3
  194. package/dist/{payment-card-form-_jHodv7G.js.map → payment-card-form-DcipYS1-.js.map} +1 -1
  195. package/dist/{payment-card-form-ByWbYHhd.cjs → payment-card-form-HQsOp4z5.cjs} +2 -2
  196. package/dist/{payment-card-form-ByWbYHhd.cjs.map → payment-card-form-HQsOp4z5.cjs.map} +1 -1
  197. package/dist/{progress-BY7K7Etz.cjs → progress-B3Q1qs5e.cjs} +2 -2
  198. package/dist/{progress-BY7K7Etz.cjs.map → progress-B3Q1qs5e.cjs.map} +1 -1
  199. package/dist/{progress-Cix7Mu1p.js → progress-zOZKeIA7.js} +2 -2
  200. package/dist/{progress-Cix7Mu1p.js.map → progress-zOZKeIA7.js.map} +1 -1
  201. package/dist/progress.cjs +1 -1
  202. package/dist/progress.js +1 -1
  203. package/dist/{radio-button-BNmjg-i9.js → radio-button-C4TI0v9W.js} +27 -27
  204. package/dist/radio-button-C4TI0v9W.js.map +1 -0
  205. package/dist/radio-button-COzEX5Ar.cjs +41 -0
  206. package/dist/radio-button-COzEX5Ar.cjs.map +1 -0
  207. package/dist/radio-group.cjs +1 -1
  208. package/dist/radio-group.js +1 -1
  209. package/dist/{ripple-BumgqsDT.js → ripple-Cy-nvO8W.js} +24 -22
  210. package/dist/ripple-Cy-nvO8W.js.map +1 -0
  211. package/dist/ripple-DqQrvaTe.cjs +16 -0
  212. package/dist/ripple-DqQrvaTe.cjs.map +1 -0
  213. package/dist/route.component-Cr-M16SZ.cjs +12 -0
  214. package/dist/route.component-Cr-M16SZ.cjs.map +1 -0
  215. package/dist/route.component-Df4CQy4C.js +320 -0
  216. package/dist/route.component-Df4CQy4C.js.map +1 -0
  217. package/dist/{schmancy-steps-container-BUE4fG8_.js → schmancy-steps-container-DC6Ca6-A.js} +2 -2
  218. package/dist/{schmancy-steps-container-BUE4fG8_.js.map → schmancy-steps-container-DC6Ca6-A.js.map} +1 -1
  219. package/dist/{schmancy-steps-container-D69TfC2I.cjs → schmancy-steps-container-DfzodwEn.cjs} +2 -2
  220. package/dist/{schmancy-steps-container-D69TfC2I.cjs.map → schmancy-steps-container-DfzodwEn.cjs.map} +1 -1
  221. package/dist/{select-Bspcrc-h.js → select-Br2sY6MK.js} +16 -16
  222. package/dist/select-Br2sY6MK.js.map +1 -0
  223. package/dist/select-wUk1qE31.cjs +57 -0
  224. package/dist/select-wUk1qE31.cjs.map +1 -0
  225. package/dist/select.cjs +1 -1
  226. package/dist/select.js +1 -1
  227. package/dist/{sheet-BxOGSGJ0.js → sheet-BjJdVvvp.js} +3 -3
  228. package/dist/{sheet-BxOGSGJ0.js.map → sheet-BjJdVvvp.js.map} +1 -1
  229. package/dist/{sheet-CuE9tUeo.cjs → sheet-D3RmdvbL.cjs} +2 -2
  230. package/dist/{sheet-CuE9tUeo.cjs.map → sheet-D3RmdvbL.cjs.map} +1 -1
  231. package/dist/sheet.cjs +1 -1
  232. package/dist/sheet.js +1 -1
  233. package/dist/{slider-ChQVbnYO.js → slider-Dgwlzvr-.js} +3 -3
  234. package/dist/{slider-ChQVbnYO.js.map → slider-Dgwlzvr-.js.map} +1 -1
  235. package/dist/{slider-DeKwZONn.cjs → slider-XoN7Z9iO.cjs} +2 -2
  236. package/dist/{slider-DeKwZONn.cjs.map → slider-XoN7Z9iO.cjs.map} +1 -1
  237. package/dist/slider.cjs +1 -1
  238. package/dist/slider.js +1 -1
  239. package/dist/{spinner-C5tMQys5.cjs → spinner-D9l0j12i.cjs} +2 -2
  240. package/dist/{spinner-C5tMQys5.cjs.map → spinner-D9l0j12i.cjs.map} +1 -1
  241. package/dist/{spinner-y1dPMTQp.js → spinner-e06PNB2u.js} +2 -2
  242. package/dist/{spinner-y1dPMTQp.js.map → spinner-e06PNB2u.js.map} +1 -1
  243. package/dist/steps.cjs +1 -1
  244. package/dist/steps.js +1 -1
  245. package/dist/{surface-4MzhEaru.cjs → surface-BgLZnRcp.cjs} +2 -2
  246. package/dist/{surface-4MzhEaru.cjs.map → surface-BgLZnRcp.cjs.map} +1 -1
  247. package/dist/{surface-BYmdH754.js → surface-trk3Zpii.js} +2 -2
  248. package/dist/{surface-BYmdH754.js.map → surface-trk3Zpii.js.map} +1 -1
  249. package/dist/surface.cjs +1 -1
  250. package/dist/surface.js +1 -1
  251. package/dist/{table-YBHaxQzQ.js → table-BfFAQg7K.js} +2 -2
  252. package/dist/{table-YBHaxQzQ.js.map → table-BfFAQg7K.js.map} +1 -1
  253. package/dist/{table-J5EVvpXy.cjs → table-g0Wsm45r.cjs} +2 -2
  254. package/dist/{table-J5EVvpXy.cjs.map → table-g0Wsm45r.cjs.map} +1 -1
  255. package/dist/table.cjs +1 -1
  256. package/dist/table.js +1 -1
  257. package/dist/{tabs-compatibility-ezB19WI8.js → tabs-compatibility-D1RfuRqZ.js} +2 -2
  258. package/dist/{tabs-compatibility-ezB19WI8.js.map → tabs-compatibility-D1RfuRqZ.js.map} +1 -1
  259. package/dist/{tabs-compatibility-JMTsaND_.cjs → tabs-compatibility-FkpvGEG3.cjs} +2 -2
  260. package/dist/{tabs-compatibility-JMTsaND_.cjs.map → tabs-compatibility-FkpvGEG3.cjs.map} +1 -1
  261. package/dist/tabs.cjs +1 -1
  262. package/dist/tabs.js +1 -1
  263. package/dist/tailwind.mixin-CPuO9c5y.js +43 -0
  264. package/dist/{tailwind.mixin-Cwbr8x57.js.map → tailwind.mixin-CPuO9c5y.js.map} +1 -1
  265. package/dist/tailwind.mixin-Cb-fyJ_y.cjs +2 -0
  266. package/dist/{tailwind.mixin-B-VcpMHn.cjs.map → tailwind.mixin-Cb-fyJ_y.cjs.map} +1 -1
  267. package/dist/teleport.cjs +1 -1
  268. package/dist/teleport.js +1 -1
  269. package/dist/{textarea-B3nWhCra.cjs → textarea-DBKIOjBp.cjs} +2 -2
  270. package/dist/{textarea-B3nWhCra.cjs.map → textarea-DBKIOjBp.cjs.map} +1 -1
  271. package/dist/{textarea-yn7IFbnu.js → textarea-U-fvfv2M.js} +3 -3
  272. package/dist/{textarea-yn7IFbnu.js.map → textarea-U-fvfv2M.js.map} +1 -1
  273. package/dist/textarea.cjs +1 -1
  274. package/dist/textarea.js +1 -1
  275. package/dist/{theme-button-I_c1ZWWV.cjs → theme-button-C-6Y_Mib.cjs} +2 -2
  276. package/dist/{theme-button-I_c1ZWWV.cjs.map → theme-button-C-6Y_Mib.cjs.map} +1 -1
  277. package/dist/{theme-button-CGArg1pu.js → theme-button-CnWM9ZCv.js} +2 -2
  278. package/dist/{theme-button-CGArg1pu.js.map → theme-button-CnWM9ZCv.js.map} +1 -1
  279. package/dist/theme-button.cjs +1 -1
  280. package/dist/theme-button.js +1 -1
  281. package/dist/theme.cjs +1 -1
  282. package/dist/{theme.component-B5zp-4OG.js → theme.component-CfLAvCYi.js} +168 -168
  283. package/dist/{theme.component-B5zp-4OG.js.map → theme.component-CfLAvCYi.js.map} +1 -1
  284. package/dist/{theme.component-CdSDaeU0.cjs → theme.component-Dko2yi2n.cjs} +3 -3
  285. package/dist/{theme.component-CdSDaeU0.cjs.map → theme.component-Dko2yi2n.cjs.map} +1 -1
  286. package/dist/theme.js +1 -1
  287. package/dist/{timezone-CepyC8kw.js → timezone-CXGJk88N.js} +3 -3
  288. package/dist/{timezone-CepyC8kw.js.map → timezone-CXGJk88N.js.map} +1 -1
  289. package/dist/{timezone-DRBf5biI.cjs → timezone-Wy7jf5gf.cjs} +2 -2
  290. package/dist/{timezone-DRBf5biI.cjs.map → timezone-Wy7jf5gf.cjs.map} +1 -1
  291. package/dist/tooltip-BXCWSU_6.cjs +7 -0
  292. package/dist/tooltip-BXCWSU_6.cjs.map +1 -0
  293. package/dist/{tooltip-C6HlAqs2.js → tooltip-CuDCLzkr.js} +55 -55
  294. package/dist/tooltip-CuDCLzkr.js.map +1 -0
  295. package/dist/tooltip.cjs +1 -1
  296. package/dist/tooltip.js +1 -1
  297. package/dist/{tree-CpqWMdfb.cjs → tree-Bux6udiH.cjs} +2 -2
  298. package/dist/{tree-CpqWMdfb.cjs.map → tree-Bux6udiH.cjs.map} +1 -1
  299. package/dist/{tree-CxJAr7G3.js → tree-CfcLl-dV.js} +2 -2
  300. package/dist/{tree-CxJAr7G3.js.map → tree-CfcLl-dV.js.map} +1 -1
  301. package/dist/tree.cjs +1 -1
  302. package/dist/tree.js +1 -1
  303. package/dist/{typewriter-D3QLAVdz.js → typewriter-C63WkKf1.js} +64 -76
  304. package/dist/typewriter-C63WkKf1.js.map +1 -0
  305. package/dist/{typewriter-BWg7Otk8.cjs → typewriter-HZThI3m1.cjs} +3 -15
  306. package/dist/typewriter-HZThI3m1.cjs.map +1 -0
  307. package/dist/typewriter.cjs +1 -1
  308. package/dist/typewriter.js +1 -1
  309. package/dist/{typography-DGOOlbC1.cjs → typography-DNj4eHeR.cjs} +2 -2
  310. package/dist/{typography-DGOOlbC1.cjs.map → typography-DNj4eHeR.cjs.map} +1 -1
  311. package/dist/{typography-C8NCP_rr.js → typography-DRkYb9R0.js} +2 -2
  312. package/dist/{typography-C8NCP_rr.js.map → typography-DRkYb9R0.js.map} +1 -1
  313. package/dist/typography.cjs +1 -1
  314. package/dist/typography.js +1 -1
  315. package/package.json +1 -1
  316. package/types/src/area/area.component.d.ts +8 -3
  317. package/types/src/area/area.service.d.ts +1 -0
  318. package/types/src/area/route.component.d.ts +4 -5
  319. package/types/src/area/utils.d.ts +2 -1
  320. package/types/src/card/card.d.ts +56 -3
  321. package/types/src/directives/ripple.d.ts +2 -1
  322. package/types/src/dropdown/dropdown-component.d.ts +1 -0
  323. package/types/src/form/form-v2.d.ts +0 -1
  324. package/types/src/form/form.d.ts +0 -1
  325. package/types/src/mailbox/email-editor.d.ts +1 -2
  326. package/types/src/notification/notification-audio.d.ts +9 -0
  327. package/types/src/notification/notification-container.d.ts +1 -0
  328. package/dist/autocomplete-09_SfjsP.js.map +0 -1
  329. package/dist/autocomplete-CFREt7Vm.cjs.map +0 -1
  330. package/dist/avatar-C8PC_n9i.cjs.map +0 -1
  331. package/dist/avatar-CKp3Ukk4.js.map +0 -1
  332. package/dist/dialog-service-DwhuICgc.js.map +0 -1
  333. package/dist/dialog-service-juvsgc5X.cjs +0 -2
  334. package/dist/dialog-service-juvsgc5X.cjs.map +0 -1
  335. package/dist/divider-BG9uDpUp.js +0 -103
  336. package/dist/divider-BG9uDpUp.js.map +0 -1
  337. package/dist/divider-CWnAg2p-.cjs +0 -83
  338. package/dist/divider-CWnAg2p-.cjs.map +0 -1
  339. package/dist/dropdown-content-BCk2WbXc.js.map +0 -1
  340. package/dist/dropdown-content-CXxTjA0j.cjs.map +0 -1
  341. package/dist/email-recipients-BT3xPoBN.js.map +0 -1
  342. package/dist/email-recipients-BWIYYwA8.cjs.map +0 -1
  343. package/dist/form-7OiDtJT4.js.map +0 -1
  344. package/dist/form-nHwPpyhJ.cjs +0 -14
  345. package/dist/form-nHwPpyhJ.cjs.map +0 -1
  346. package/dist/icon-button-CLDy5tUS.cjs.map +0 -1
  347. package/dist/icon-button-DOZuY9x8.js.map +0 -1
  348. package/dist/input-CqLneJhz.cjs +0 -51
  349. package/dist/input-CqLneJhz.cjs.map +0 -1
  350. package/dist/input-Dre3bMuF.js.map +0 -1
  351. package/dist/media-B-VIbSH_.js +0 -151
  352. package/dist/media-B-VIbSH_.js.map +0 -1
  353. package/dist/media-Cew1Mxkj.cjs +0 -100
  354. package/dist/media-Cew1Mxkj.cjs.map +0 -1
  355. package/dist/notification-service-DrwmIgoR.js.map +0 -1
  356. package/dist/notification-service-LnNx5EDh.cjs.map +0 -1
  357. package/dist/option-BNKGfKgL.cjs.map +0 -1
  358. package/dist/option-DbBr0StZ.js.map +0 -1
  359. package/dist/radio-button-BNmjg-i9.js.map +0 -1
  360. package/dist/radio-button-CYq6qTSb.cjs +0 -41
  361. package/dist/radio-button-CYq6qTSb.cjs.map +0 -1
  362. package/dist/ripple-BumgqsDT.js.map +0 -1
  363. package/dist/ripple-C2BHbhcS.cjs +0 -16
  364. package/dist/ripple-C2BHbhcS.cjs.map +0 -1
  365. package/dist/route.component-CzCd2fMa.cjs +0 -12
  366. package/dist/route.component-CzCd2fMa.cjs.map +0 -1
  367. package/dist/route.component-Q3rCkryr.js +0 -321
  368. package/dist/route.component-Q3rCkryr.js.map +0 -1
  369. package/dist/select-B-yc3JB7.cjs +0 -57
  370. package/dist/select-B-yc3JB7.cjs.map +0 -1
  371. package/dist/select-Bspcrc-h.js.map +0 -1
  372. package/dist/tailwind.mixin-B-VcpMHn.cjs +0 -2
  373. package/dist/tailwind.mixin-Cwbr8x57.js +0 -43
  374. package/dist/tooltip-C6HlAqs2.js.map +0 -1
  375. package/dist/tooltip-CCX8PidC.cjs +0 -7
  376. package/dist/tooltip-CCX8PidC.cjs.map +0 -1
  377. package/dist/typewriter-BWg7Otk8.cjs.map +0 -1
  378. package/dist/typewriter-D3QLAVdz.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"autocomplete-09_SfjsP.js","sources":["../src/autocomplete/autocomplete.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { InputSize, SchmancyInput } from '@schmancy/input'\nimport SchmancyOption from '@schmancy/option/option'\nimport { html } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport {\n BehaviorSubject,\n combineLatest,\n EMPTY,\n fromEvent,\n of,\n Subject,\n timer\n} from 'rxjs'\nimport {\n debounceTime,\n distinctUntilChanged,\n filter,\n switchMap,\n take,\n takeUntil,\n tap,\n withLatestFrom\n} from 'rxjs/operators'\nimport style from './autocomplete.scss?inline'\n\n// Import the similarity function (or include it inline)\nimport { similarity } from '../utils/search'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n value: string | string[]\n values?: string[]\n}>\n\ninterface FilteredOption {\n option: SchmancyOption\n score: number\n}\n\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n // Public API properties\n @property({ type: Boolean }) required = false\n @property({ type: String }) placeholder = ''\n @property({ type: String, reflect: true }) label = ''\n @property({ type: String }) name = ''\n @property({ type: String }) maxHeight = '300px'\n @property({ type: Boolean }) multi = false\n @property({ type: String }) description = ''\n @property({ type: String, reflect: true }) size: InputSize = 'md'\n @property({ type: String }) autocomplete = 'on'\n @property({ type: Number }) debounceMs = 200\n @property({ type: Number }) similarityThreshold = 0.3 // Minimum similarity score to show option\n\n // Values property for multi-select mode\n @property({ type: Array })\n get values() {\n return [...this._selectedValues$.value]\n }\n set values(vals: string[]) {\n this._selectedValues$.next(Array.isArray(vals) ? [...vals] : [])\n }\n\n // Value property\n @property({ type: String, reflect: true })\n get value() {\n return this.multi \n ? this._selectedValues$.value.join(',')\n : this._selectedValue$.value\n }\n set value(val: string) {\n if (this.multi) {\n this._selectedValues$.next(\n val ? val.split(',').map(v => v.trim()).filter(Boolean) : []\n )\n } else {\n this._selectedValue$.next(val)\n }\n }\n\n // State\n @state() private _open = false\n @state() private _inputValue = ''\n @state() private _visibleOptionsCount = 0\n @state() private _hasResults = true\n\n // DOM references\n @query('#options') _listbox!: HTMLUListElement\n @query('sch-input') _input!: SchmancyInput\n @queryAssignedElements({ flatten: true }) private _options!: SchmancyOption[]\n private _inputElementRef = createRef<HTMLInputElement>()\n\n // RxJS Subjects\n private _selectedValue$ = new BehaviorSubject<string>('')\n private _selectedValues$ = new BehaviorSubject<string[]>([])\n private _inputValue$ = new BehaviorSubject<string>('')\n private _open$ = new BehaviorSubject<boolean>(false)\n private _options$ = new BehaviorSubject<SchmancyOption[]>([])\n private _optionSelect$ = new Subject<SchmancyOption>()\n private _documentClick$ = new Subject<MouseEvent>()\n\n connectedCallback() {\n super.connectedCallback()\n \n if (!this.id) {\n this.id = `sch-autocomplete-${Math.random().toString(36).slice(2, 9)}`\n }\n\n this._setupAutocompleteLogic()\n this._setupDocumentClickHandler()\n // Complex autofill detection disabled - using simple auto-select on blur instead\n // this._setupAutofillDetection()\n }\n\n private _setupAutocompleteLogic() {\n // Options management pipeline\n this._options$.pipe(\n tap(options => {\n options.forEach((option, index) => {\n option.setAttribute('role', 'option')\n option.tabIndex = -1\n if (!option.id) {\n option.id = `${this.id}-option-${index}`\n }\n if (!option.hasAttribute('data-event-bound')) {\n fromEvent(option, 'pointerdown').pipe(\n tap(e => {\n e.preventDefault() // Prevent blur from firing\n e.stopPropagation()\n }),\n takeUntil(this.disconnecting)\n ).subscribe(() => this._optionSelect$.next(option))\n option.setAttribute('data-event-bound', 'true')\n }\n })\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Selection sync pipeline\n combineLatest([\n this._selectedValue$,\n this._selectedValues$,\n this._options$\n ]).pipe(\n tap(([selectedValue, selectedValues, options]) => {\n options.forEach(option => {\n option.selected = this.multi \n ? selectedValues.includes(option.value)\n : option.value === selectedValue\n option.setAttribute('aria-selected', String(option.selected))\n })\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Enhanced fuzzy filtering pipeline\n this._inputValue$.pipe(\n distinctUntilChanged(),\n debounceTime(this.debounceMs),\n withLatestFrom(this._options$, this._open$),\n tap(([searchTerm, options, isOpen]) => {\n if (!isOpen) return\n\n const term = searchTerm.trim()\n \n if (!term) {\n // Show all options if no search term\n options.forEach(option => {\n option.hidden = false\n option.style.order = '0' // Reset order\n })\n this._visibleOptionsCount = options.length\n this._hasResults = true\n } else {\n // Calculate similarity scores for all options\n const scoredOptions: FilteredOption[] = options.map(option => {\n // Get text to search in (prioritize label, then textContent, then value)\n const optionLabel = option.label || option.textContent || ''\n const optionValue = option.value\n \n // Calculate similarity scores for both label and value\n const labelScore = similarity(term, optionLabel)\n const valueScore = similarity(term, optionValue)\n \n // Use the higher score (prioritizing label matches)\n const score = Math.max(labelScore * 1.1, valueScore) // Slight boost for label matches\n \n return { option, score }\n })\n \n // Sort by score (highest first)\n scoredOptions.sort((a, b) => b.score - a.score)\n \n // Apply visibility and ordering\n let visibleCount = 0\n scoredOptions.forEach((item, index) => {\n const { option, score } = item\n \n // Hide options below threshold\n if (score < this.similarityThreshold) {\n option.hidden = true\n } else {\n option.hidden = false\n visibleCount++\n // Use CSS order to sort visible options by relevance\n option.style.order = String(index)\n }\n })\n \n this._visibleOptionsCount = visibleCount\n this._hasResults = visibleCount > 0\n }\n \n this._announceToScreenReader(\n this._visibleOptionsCount > 0 \n ? `${this._visibleOptionsCount} option${this._visibleOptionsCount === 1 ? '' : 's'} available.`\n : 'No results found.'\n )\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Option selection pipeline\n this._optionSelect$.pipe(\n withLatestFrom(this._selectedValue$, this._selectedValues$),\n tap(([option, _, currentValues]) => {\n if (this.multi) {\n const index = currentValues.indexOf(option.value)\n const newValues = index > -1\n ? [...currentValues.slice(0, index), ...currentValues.slice(index + 1)]\n : [...currentValues, option.value]\n this._selectedValues$.next(newValues)\n \n this._inputValue$.next('')\n this._inputValue = ''\n \n const labels = this._getSelectedLabels()\n this._announceToScreenReader(\n labels.length > 0 \n ? `Selected: ${labels.join(', ')}`\n : 'No options selected'\n )\n } else {\n this._selectedValue$.next(option.value)\n this._open$.next(false)\n this._open = false\n \n this._inputValue = option.label || option.textContent || ''\n this._inputValue$.next(this._inputValue)\n \n timer(100).pipe(\n tap(() => this._inputElementRef.value?.blur()),\n take(1)\n ).subscribe()\n \n this._announceToScreenReader(`Selected: ${option.label || option.textContent}`)\n }\n }),\n tap(() => this._fireChangeEvent()),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Display update pipeline\n combineLatest([\n this._open$,\n this._selectedValue$,\n this._selectedValues$,\n this._options$\n ]).pipe(\n filter(() => !this._open$.value),\n tap(([, selectedValue, selectedValues, options]) => {\n if (this.multi) {\n const labels = options\n .filter(opt => selectedValues.includes(opt.value))\n .map(opt => opt.label || opt.textContent || '')\n this._inputValue = labels.join(', ')\n } else {\n const option = options.find(opt => opt.value === selectedValue)\n this._inputValue = option ? option.label || option.textContent || '' : ''\n }\n this._inputValue$.next(this._inputValue)\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Open state sync\n this._open$.pipe(\n tap(open => this._open = open),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n private _setupDocumentClickHandler() {\n this._documentClick$.pipe(\n filter(e => !e.composedPath().includes(this)),\n filter(e => !this._options.some(opt => e.composedPath().includes(opt))),\n filter(() => this._open),\n tap(() => {\n this._open$.next(false)\n this._updateInputDisplay()\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n this._open$.pipe(\n distinctUntilChanged(),\n switchMap(open => \n open \n ? timer(10).pipe(\n tap(() => document.addEventListener('click', e => this._documentClick$.next(e))),\n switchMap(() => EMPTY)\n )\n : of(null).pipe(\n tap(() => document.removeEventListener('click', e => this._documentClick$.next(e)))\n )\n ),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n\n private _updateInputDisplay() {\n of(null).pipe(\n withLatestFrom(\n this._selectedValue$,\n this._selectedValues$,\n this._options$,\n this._open$\n ),\n tap(([, selectedValue, selectedValues, options, isOpen]) => {\n if (!this._inputElementRef.value) return\n\n if (!isOpen || !this.multi) {\n if (this.multi) {\n const labels = options\n .filter(opt => selectedValues.includes(opt.value))\n .map(opt => opt.label || opt.textContent || '')\n this._inputValue = labels.join(', ')\n } else {\n const option = options.find(opt => opt.value === selectedValue)\n this._inputValue = option ? option.label || option.textContent || '' : ''\n }\n this._inputValue$.next(this._inputValue)\n this._inputElementRef.value.value = this._inputValue\n }\n }),\n take(1)\n ).subscribe()\n }\n\n private _getSelectedLabels(): string[] {\n return this._options\n .filter(option => \n this.multi \n ? this._selectedValues$.value.includes(option.value)\n : option.value === this._selectedValue$.value\n )\n .map(option => option.label || option.textContent || '')\n }\n\n private _announceToScreenReader(message: string) {\n const liveRegion = this.shadowRoot?.querySelector('#live-status')\n if (liveRegion) {\n liveRegion.textContent = message\n }\n }\n\n private _fireChangeEvent() {\n const detail: SchmancyAutocompleteChangeEvent['detail'] = {\n value: this.value,\n }\n\n if (this.multi) {\n detail.values = [...this._selectedValues$.value]\n }\n\n this.dispatchEvent(\n new CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n detail,\n bubbles: true,\n composed: true,\n })\n )\n }\n\n public checkValidity(): boolean {\n if (!this.required) return true\n return this.multi \n ? this._selectedValues$.value.length > 0 \n : Boolean(this._selectedValue$.value)\n }\n\n public reportValidity(): boolean {\n if (this._inputElementRef.value) {\n return this._inputElementRef.value.reportValidity()\n }\n return this.checkValidity()\n }\n\n firstUpdated() {\n // Auto-selection now happens on blur, no need for autofill detection\n }\n\n render() {\n const descriptionId = `${this.id}-desc`\n\n return html`\n <div class=\"relative\">\n <!-- Screen reader live region -->\n <div id=\"live-status\" role=\"status\" aria-live=\"polite\" class=\"sr-only\"></div>\n\n <!-- Description -->\n ${this.description ? html`<div id=\"${descriptionId}\" class=\"sr-only\">${this.description}</div>` : ''}\n\n <!-- Input -->\n <slot name=\"trigger\">\n <schmancy-input\n .size=${this.size}\n ${ref(this._inputElementRef)}\n id=\"autocomplete-input\"\n class=\"w-full\"\n .name=${this.name || this.label?.toLowerCase().replace(/\\s+/g, '-')}\n .label=${this.label}\n .placeholder=${this.placeholder}\n .required=${this.required}\n .value=${this._inputValue}\n type=\"text\"\n autocomplete=${this.autocomplete}\n clickable\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-controls=\"options\"\n aria-expanded=${this._open}\n aria-describedby=${this.description ? descriptionId : undefined}\n @input=${(e: Event) => {\n const value = (e.target as HTMLInputElement).value\n this._inputValue = value\n this._inputValue$.next(value)\n }}\n @focus=${(e: FocusEvent) => {\n e.stopPropagation()\n \n const hasSelection = this.multi \n ? this._selectedValues$.value.length > 0\n : !!this._selectedValue$.value\n \n if (this.multi && !hasSelection) {\n this._inputValue = ''\n this._inputValue$.next('')\n if (this._inputElementRef.value) {\n this._inputElementRef.value.value = ''\n }\n }\n \n this._open$.next(true)\n }}\n @click=${(e: MouseEvent) => {\n e.stopPropagation()\n this._open$.next(true)\n }}\n @keydown=${(e: KeyboardEvent) => {\n this._handleKeyDown(e)\n }}\n @blur=${() => {\n this._handleAutoSelectOnBlur()\n }}\n >\n </schmancy-input>\n </slot>\n\n <!-- Options dropdown -->\n <ul\n id=\"options\"\n class=${classMap({\n 'absolute': true,\n 'z-[1000]': true,\n 'mt-1': true,\n 'w-full': true,\n 'rounded-md': true,\n 'shadow-md': true,\n 'overflow-auto': true,\n 'min-w-full': true,\n 'bg-surface-low': true,\n 'flex': true,\n 'flex-col': true, // Enable flexbox for ordering\n })}\n role=\"listbox\"\n aria-multiselectable=${this.multi ? 'true' : 'false'}\n aria-label=${`${this.label || 'Options'} dropdown`}\n ?hidden=${!this._open}\n style=\"max-height: ${this.maxHeight}; display: ${this._open ? 'flex' : 'none'};\"\n @slotchange=${() => {\n this._options$.next(this._options)\n }}\n >\n <slot></slot>\n ${!this._hasResults ? html`\n <li class=\"px-3 py-2 text-sm text-muted\">No results found</li>\n ` : ''}\n </ul>\n </div>\n `\n }\n\n private _handleAutoSelectOnBlur() {\n // Only auto-select in single-select mode and when dropdown is open with a search term\n if (this.multi || !this._open || !this._inputValue.trim()) {\n return\n }\n \n const searchTerm = this._inputValue.trim()\n \n // Find the best matching option using the same similarity logic as filtering\n let bestMatch: SchmancyOption | null = null\n let bestScore = 0\n \n this._options.forEach(option => {\n // Skip hidden options\n if (option.hidden) return\n \n // Get text to search in (prioritize label, then textContent, then value)\n const optionLabel = option.label || option.textContent || ''\n const optionValue = option.value\n \n // Calculate similarity scores for both label and value\n const labelScore = similarity(searchTerm, optionLabel)\n const valueScore = similarity(searchTerm, optionValue)\n \n // Use the higher score (prioritizing label matches)\n const score = Math.max(labelScore * 1.1, valueScore) // Slight boost for label matches\n \n // Keep track of best match that meets threshold\n if (score > bestScore && score >= this.similarityThreshold) {\n bestScore = score\n bestMatch = option\n }\n })\n \n // Auto-select the best match if found\n if (bestMatch) {\n // Select the option using the existing pipeline\n this._optionSelect$.next(bestMatch)\n \n // Close the dropdown\n this._open$.next(false)\n this._open = false\n \n }\n }\n\n private _handleKeyDown(_e: KeyboardEvent) {\n fromEvent<KeyboardEvent>(document, 'keydown').pipe(\n take(1),\n withLatestFrom(this._open$, this._options$),\n tap(([event, isOpen, options]) => {\n if (!isOpen && (event.key === 'ArrowDown' || event.key === 'Enter')) {\n event.preventDefault()\n this._open$.next(true)\n \n timer(10).pipe(\n tap(() => {\n const firstVisible = options.find(opt => !opt.hidden)\n firstVisible?.focus()\n }),\n take(1)\n ).subscribe()\n return\n }\n\n if (!isOpen) return\n\n const visibleOptions = options.filter(opt => !opt.hidden)\n .sort((a, b) => parseInt(a.style.order || '0') - parseInt(b.style.order || '0'))\n \n const focusedOption = visibleOptions.find(opt => opt === document.activeElement)\n const currentIndex = focusedOption ? visibleOptions.indexOf(focusedOption) : -1\n\n switch (event.key) {\n case 'Escape':\n event.preventDefault()\n this._open$.next(false)\n this._updateInputDisplay()\n this._inputElementRef.value?.focus()\n break\n\n case 'Tab':\n this._open$.next(false)\n this._updateInputDisplay()\n break\n\n case 'ArrowDown':\n event.preventDefault()\n const nextIndex = currentIndex < visibleOptions.length - 1 ? currentIndex + 1 : 0\n visibleOptions[nextIndex]?.focus()\n break\n\n case 'ArrowUp':\n event.preventDefault()\n const prevIndex = currentIndex > 0 ? currentIndex - 1 : visibleOptions.length - 1\n visibleOptions[prevIndex]?.focus()\n break\n\n case 'Home':\n event.preventDefault()\n visibleOptions[0]?.focus()\n break\n\n case 'End':\n event.preventDefault()\n visibleOptions[visibleOptions.length - 1]?.focus()\n break\n\n case 'Enter':\n case ' ':\n if (focusedOption) {\n event.preventDefault()\n this._optionSelect$.next(focusedOption)\n }\n break\n }\n })\n ).subscribe()\n }\n}\n\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'schmancy-autocomplete': SchmancyAutocomplete\n }\n}"],"names":["SchmancyAutocomplete","$LitElement","constructor","super","arguments","this","required","placeholder","label","name","maxHeight","multi","description","size","autocomplete","debounceMs","similarityThreshold","_open","_inputValue","_visibleOptionsCount","_hasResults","_inputElementRef","createRef","_selectedValue$","BehaviorSubject","_selectedValues$","_inputValue$","_open$","_options$","_optionSelect$","Subject","_documentClick$","values","value","vals","next","Array","isArray","join","val","split","map","v","trim","filter","Boolean","connectedCallback","id","Math","random","toString","slice","_setupAutocompleteLogic","_setupDocumentClickHandler","pipe","tap","options","forEach","option","index","setAttribute","tabIndex","hasAttribute","fromEvent","e","preventDefault","stopPropagation","takeUntil","disconnecting","subscribe","combineLatest","selectedValue","selectedValues","selected","includes","String","distinctUntilChanged","debounceTime","withLatestFrom","searchTerm","isOpen","term","scoredOptions","optionLabel","textContent","optionValue","labelScore","similarity","valueScore","score","max","sort","a","b","visibleCount","item","hidden","style","order","length","_announceToScreenReader","_","currentValues","indexOf","newValues","labels","_getSelectedLabels","timer","blur","take","_fireChangeEvent","opt","find","open","composedPath","_options","some","_updateInputDisplay","switchMap","document","addEventListener","EMPTY","of","removeEventListener","message","liveRegion","shadowRoot","querySelector","detail","dispatchEvent","CustomEvent","bubbles","composed","checkValidity","reportValidity","firstUpdated","render","descriptionId","html","ref","toLowerCase","replace","target","hasSelection","_handleKeyDown","_handleAutoSelectOnBlur","classMap","absolute","flex","bestMatch","bestScore","_e","event","key","firstVisible","focus","visibleOptions","parseInt","focusedOption","activeElement","currentIndex","nextIndex","prevIndex","__decorateClass","property","type","prototype","reflect","Number","state","query","queryAssignedElements","flatten","customElement"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"autocomplete-CFREt7Vm.cjs","sources":["../src/autocomplete/autocomplete.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { InputSize, SchmancyInput } from '@schmancy/input'\nimport SchmancyOption from '@schmancy/option/option'\nimport { html } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport {\n BehaviorSubject,\n combineLatest,\n EMPTY,\n fromEvent,\n of,\n Subject,\n timer\n} from 'rxjs'\nimport {\n debounceTime,\n distinctUntilChanged,\n filter,\n switchMap,\n take,\n takeUntil,\n tap,\n withLatestFrom\n} from 'rxjs/operators'\nimport style from './autocomplete.scss?inline'\n\n// Import the similarity function (or include it inline)\nimport { similarity } from '../utils/search'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n value: string | string[]\n values?: string[]\n}>\n\ninterface FilteredOption {\n option: SchmancyOption\n score: number\n}\n\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n // Public API properties\n @property({ type: Boolean }) required = false\n @property({ type: String }) placeholder = ''\n @property({ type: String, reflect: true }) label = ''\n @property({ type: String }) name = ''\n @property({ type: String }) maxHeight = '300px'\n @property({ type: Boolean }) multi = false\n @property({ type: String }) description = ''\n @property({ type: String, reflect: true }) size: InputSize = 'md'\n @property({ type: String }) autocomplete = 'on'\n @property({ type: Number }) debounceMs = 200\n @property({ type: Number }) similarityThreshold = 0.3 // Minimum similarity score to show option\n\n // Values property for multi-select mode\n @property({ type: Array })\n get values() {\n return [...this._selectedValues$.value]\n }\n set values(vals: string[]) {\n this._selectedValues$.next(Array.isArray(vals) ? [...vals] : [])\n }\n\n // Value property\n @property({ type: String, reflect: true })\n get value() {\n return this.multi \n ? this._selectedValues$.value.join(',')\n : this._selectedValue$.value\n }\n set value(val: string) {\n if (this.multi) {\n this._selectedValues$.next(\n val ? val.split(',').map(v => v.trim()).filter(Boolean) : []\n )\n } else {\n this._selectedValue$.next(val)\n }\n }\n\n // State\n @state() private _open = false\n @state() private _inputValue = ''\n @state() private _visibleOptionsCount = 0\n @state() private _hasResults = true\n\n // DOM references\n @query('#options') _listbox!: HTMLUListElement\n @query('sch-input') _input!: SchmancyInput\n @queryAssignedElements({ flatten: true }) private _options!: SchmancyOption[]\n private _inputElementRef = createRef<HTMLInputElement>()\n\n // RxJS Subjects\n private _selectedValue$ = new BehaviorSubject<string>('')\n private _selectedValues$ = new BehaviorSubject<string[]>([])\n private _inputValue$ = new BehaviorSubject<string>('')\n private _open$ = new BehaviorSubject<boolean>(false)\n private _options$ = new BehaviorSubject<SchmancyOption[]>([])\n private _optionSelect$ = new Subject<SchmancyOption>()\n private _documentClick$ = new Subject<MouseEvent>()\n\n connectedCallback() {\n super.connectedCallback()\n \n if (!this.id) {\n this.id = `sch-autocomplete-${Math.random().toString(36).slice(2, 9)}`\n }\n\n this._setupAutocompleteLogic()\n this._setupDocumentClickHandler()\n // Complex autofill detection disabled - using simple auto-select on blur instead\n // this._setupAutofillDetection()\n }\n\n private _setupAutocompleteLogic() {\n // Options management pipeline\n this._options$.pipe(\n tap(options => {\n options.forEach((option, index) => {\n option.setAttribute('role', 'option')\n option.tabIndex = -1\n if (!option.id) {\n option.id = `${this.id}-option-${index}`\n }\n if (!option.hasAttribute('data-event-bound')) {\n fromEvent(option, 'pointerdown').pipe(\n tap(e => {\n e.preventDefault() // Prevent blur from firing\n e.stopPropagation()\n }),\n takeUntil(this.disconnecting)\n ).subscribe(() => this._optionSelect$.next(option))\n option.setAttribute('data-event-bound', 'true')\n }\n })\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Selection sync pipeline\n combineLatest([\n this._selectedValue$,\n this._selectedValues$,\n this._options$\n ]).pipe(\n tap(([selectedValue, selectedValues, options]) => {\n options.forEach(option => {\n option.selected = this.multi \n ? selectedValues.includes(option.value)\n : option.value === selectedValue\n option.setAttribute('aria-selected', String(option.selected))\n })\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Enhanced fuzzy filtering pipeline\n this._inputValue$.pipe(\n distinctUntilChanged(),\n debounceTime(this.debounceMs),\n withLatestFrom(this._options$, this._open$),\n tap(([searchTerm, options, isOpen]) => {\n if (!isOpen) return\n\n const term = searchTerm.trim()\n \n if (!term) {\n // Show all options if no search term\n options.forEach(option => {\n option.hidden = false\n option.style.order = '0' // Reset order\n })\n this._visibleOptionsCount = options.length\n this._hasResults = true\n } else {\n // Calculate similarity scores for all options\n const scoredOptions: FilteredOption[] = options.map(option => {\n // Get text to search in (prioritize label, then textContent, then value)\n const optionLabel = option.label || option.textContent || ''\n const optionValue = option.value\n \n // Calculate similarity scores for both label and value\n const labelScore = similarity(term, optionLabel)\n const valueScore = similarity(term, optionValue)\n \n // Use the higher score (prioritizing label matches)\n const score = Math.max(labelScore * 1.1, valueScore) // Slight boost for label matches\n \n return { option, score }\n })\n \n // Sort by score (highest first)\n scoredOptions.sort((a, b) => b.score - a.score)\n \n // Apply visibility and ordering\n let visibleCount = 0\n scoredOptions.forEach((item, index) => {\n const { option, score } = item\n \n // Hide options below threshold\n if (score < this.similarityThreshold) {\n option.hidden = true\n } else {\n option.hidden = false\n visibleCount++\n // Use CSS order to sort visible options by relevance\n option.style.order = String(index)\n }\n })\n \n this._visibleOptionsCount = visibleCount\n this._hasResults = visibleCount > 0\n }\n \n this._announceToScreenReader(\n this._visibleOptionsCount > 0 \n ? `${this._visibleOptionsCount} option${this._visibleOptionsCount === 1 ? '' : 's'} available.`\n : 'No results found.'\n )\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Option selection pipeline\n this._optionSelect$.pipe(\n withLatestFrom(this._selectedValue$, this._selectedValues$),\n tap(([option, _, currentValues]) => {\n if (this.multi) {\n const index = currentValues.indexOf(option.value)\n const newValues = index > -1\n ? [...currentValues.slice(0, index), ...currentValues.slice(index + 1)]\n : [...currentValues, option.value]\n this._selectedValues$.next(newValues)\n \n this._inputValue$.next('')\n this._inputValue = ''\n \n const labels = this._getSelectedLabels()\n this._announceToScreenReader(\n labels.length > 0 \n ? `Selected: ${labels.join(', ')}`\n : 'No options selected'\n )\n } else {\n this._selectedValue$.next(option.value)\n this._open$.next(false)\n this._open = false\n \n this._inputValue = option.label || option.textContent || ''\n this._inputValue$.next(this._inputValue)\n \n timer(100).pipe(\n tap(() => this._inputElementRef.value?.blur()),\n take(1)\n ).subscribe()\n \n this._announceToScreenReader(`Selected: ${option.label || option.textContent}`)\n }\n }),\n tap(() => this._fireChangeEvent()),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Display update pipeline\n combineLatest([\n this._open$,\n this._selectedValue$,\n this._selectedValues$,\n this._options$\n ]).pipe(\n filter(() => !this._open$.value),\n tap(([, selectedValue, selectedValues, options]) => {\n if (this.multi) {\n const labels = options\n .filter(opt => selectedValues.includes(opt.value))\n .map(opt => opt.label || opt.textContent || '')\n this._inputValue = labels.join(', ')\n } else {\n const option = options.find(opt => opt.value === selectedValue)\n this._inputValue = option ? option.label || option.textContent || '' : ''\n }\n this._inputValue$.next(this._inputValue)\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Open state sync\n this._open$.pipe(\n tap(open => this._open = open),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n private _setupDocumentClickHandler() {\n this._documentClick$.pipe(\n filter(e => !e.composedPath().includes(this)),\n filter(e => !this._options.some(opt => e.composedPath().includes(opt))),\n filter(() => this._open),\n tap(() => {\n this._open$.next(false)\n this._updateInputDisplay()\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n this._open$.pipe(\n distinctUntilChanged(),\n switchMap(open => \n open \n ? timer(10).pipe(\n tap(() => document.addEventListener('click', e => this._documentClick$.next(e))),\n switchMap(() => EMPTY)\n )\n : of(null).pipe(\n tap(() => document.removeEventListener('click', e => this._documentClick$.next(e)))\n )\n ),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n\n private _updateInputDisplay() {\n of(null).pipe(\n withLatestFrom(\n this._selectedValue$,\n this._selectedValues$,\n this._options$,\n this._open$\n ),\n tap(([, selectedValue, selectedValues, options, isOpen]) => {\n if (!this._inputElementRef.value) return\n\n if (!isOpen || !this.multi) {\n if (this.multi) {\n const labels = options\n .filter(opt => selectedValues.includes(opt.value))\n .map(opt => opt.label || opt.textContent || '')\n this._inputValue = labels.join(', ')\n } else {\n const option = options.find(opt => opt.value === selectedValue)\n this._inputValue = option ? option.label || option.textContent || '' : ''\n }\n this._inputValue$.next(this._inputValue)\n this._inputElementRef.value.value = this._inputValue\n }\n }),\n take(1)\n ).subscribe()\n }\n\n private _getSelectedLabels(): string[] {\n return this._options\n .filter(option => \n this.multi \n ? this._selectedValues$.value.includes(option.value)\n : option.value === this._selectedValue$.value\n )\n .map(option => option.label || option.textContent || '')\n }\n\n private _announceToScreenReader(message: string) {\n const liveRegion = this.shadowRoot?.querySelector('#live-status')\n if (liveRegion) {\n liveRegion.textContent = message\n }\n }\n\n private _fireChangeEvent() {\n const detail: SchmancyAutocompleteChangeEvent['detail'] = {\n value: this.value,\n }\n\n if (this.multi) {\n detail.values = [...this._selectedValues$.value]\n }\n\n this.dispatchEvent(\n new CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n detail,\n bubbles: true,\n composed: true,\n })\n )\n }\n\n public checkValidity(): boolean {\n if (!this.required) return true\n return this.multi \n ? this._selectedValues$.value.length > 0 \n : Boolean(this._selectedValue$.value)\n }\n\n public reportValidity(): boolean {\n if (this._inputElementRef.value) {\n return this._inputElementRef.value.reportValidity()\n }\n return this.checkValidity()\n }\n\n firstUpdated() {\n // Auto-selection now happens on blur, no need for autofill detection\n }\n\n render() {\n const descriptionId = `${this.id}-desc`\n\n return html`\n <div class=\"relative\">\n <!-- Screen reader live region -->\n <div id=\"live-status\" role=\"status\" aria-live=\"polite\" class=\"sr-only\"></div>\n\n <!-- Description -->\n ${this.description ? html`<div id=\"${descriptionId}\" class=\"sr-only\">${this.description}</div>` : ''}\n\n <!-- Input -->\n <slot name=\"trigger\">\n <schmancy-input\n .size=${this.size}\n ${ref(this._inputElementRef)}\n id=\"autocomplete-input\"\n class=\"w-full\"\n .name=${this.name || this.label?.toLowerCase().replace(/\\s+/g, '-')}\n .label=${this.label}\n .placeholder=${this.placeholder}\n .required=${this.required}\n .value=${this._inputValue}\n type=\"text\"\n autocomplete=${this.autocomplete}\n clickable\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-controls=\"options\"\n aria-expanded=${this._open}\n aria-describedby=${this.description ? descriptionId : undefined}\n @input=${(e: Event) => {\n const value = (e.target as HTMLInputElement).value\n this._inputValue = value\n this._inputValue$.next(value)\n }}\n @focus=${(e: FocusEvent) => {\n e.stopPropagation()\n \n const hasSelection = this.multi \n ? this._selectedValues$.value.length > 0\n : !!this._selectedValue$.value\n \n if (this.multi && !hasSelection) {\n this._inputValue = ''\n this._inputValue$.next('')\n if (this._inputElementRef.value) {\n this._inputElementRef.value.value = ''\n }\n }\n \n this._open$.next(true)\n }}\n @click=${(e: MouseEvent) => {\n e.stopPropagation()\n this._open$.next(true)\n }}\n @keydown=${(e: KeyboardEvent) => {\n this._handleKeyDown(e)\n }}\n @blur=${() => {\n this._handleAutoSelectOnBlur()\n }}\n >\n </schmancy-input>\n </slot>\n\n <!-- Options dropdown -->\n <ul\n id=\"options\"\n class=${classMap({\n 'absolute': true,\n 'z-[1000]': true,\n 'mt-1': true,\n 'w-full': true,\n 'rounded-md': true,\n 'shadow-md': true,\n 'overflow-auto': true,\n 'min-w-full': true,\n 'bg-surface-low': true,\n 'flex': true,\n 'flex-col': true, // Enable flexbox for ordering\n })}\n role=\"listbox\"\n aria-multiselectable=${this.multi ? 'true' : 'false'}\n aria-label=${`${this.label || 'Options'} dropdown`}\n ?hidden=${!this._open}\n style=\"max-height: ${this.maxHeight}; display: ${this._open ? 'flex' : 'none'};\"\n @slotchange=${() => {\n this._options$.next(this._options)\n }}\n >\n <slot></slot>\n ${!this._hasResults ? html`\n <li class=\"px-3 py-2 text-sm text-muted\">No results found</li>\n ` : ''}\n </ul>\n </div>\n `\n }\n\n private _handleAutoSelectOnBlur() {\n // Only auto-select in single-select mode and when dropdown is open with a search term\n if (this.multi || !this._open || !this._inputValue.trim()) {\n return\n }\n \n const searchTerm = this._inputValue.trim()\n \n // Find the best matching option using the same similarity logic as filtering\n let bestMatch: SchmancyOption | null = null\n let bestScore = 0\n \n this._options.forEach(option => {\n // Skip hidden options\n if (option.hidden) return\n \n // Get text to search in (prioritize label, then textContent, then value)\n const optionLabel = option.label || option.textContent || ''\n const optionValue = option.value\n \n // Calculate similarity scores for both label and value\n const labelScore = similarity(searchTerm, optionLabel)\n const valueScore = similarity(searchTerm, optionValue)\n \n // Use the higher score (prioritizing label matches)\n const score = Math.max(labelScore * 1.1, valueScore) // Slight boost for label matches\n \n // Keep track of best match that meets threshold\n if (score > bestScore && score >= this.similarityThreshold) {\n bestScore = score\n bestMatch = option\n }\n })\n \n // Auto-select the best match if found\n if (bestMatch) {\n // Select the option using the existing pipeline\n this._optionSelect$.next(bestMatch)\n \n // Close the dropdown\n this._open$.next(false)\n this._open = false\n \n }\n }\n\n private _handleKeyDown(_e: KeyboardEvent) {\n fromEvent<KeyboardEvent>(document, 'keydown').pipe(\n take(1),\n withLatestFrom(this._open$, this._options$),\n tap(([event, isOpen, options]) => {\n if (!isOpen && (event.key === 'ArrowDown' || event.key === 'Enter')) {\n event.preventDefault()\n this._open$.next(true)\n \n timer(10).pipe(\n tap(() => {\n const firstVisible = options.find(opt => !opt.hidden)\n firstVisible?.focus()\n }),\n take(1)\n ).subscribe()\n return\n }\n\n if (!isOpen) return\n\n const visibleOptions = options.filter(opt => !opt.hidden)\n .sort((a, b) => parseInt(a.style.order || '0') - parseInt(b.style.order || '0'))\n \n const focusedOption = visibleOptions.find(opt => opt === document.activeElement)\n const currentIndex = focusedOption ? visibleOptions.indexOf(focusedOption) : -1\n\n switch (event.key) {\n case 'Escape':\n event.preventDefault()\n this._open$.next(false)\n this._updateInputDisplay()\n this._inputElementRef.value?.focus()\n break\n\n case 'Tab':\n this._open$.next(false)\n this._updateInputDisplay()\n break\n\n case 'ArrowDown':\n event.preventDefault()\n const nextIndex = currentIndex < visibleOptions.length - 1 ? currentIndex + 1 : 0\n visibleOptions[nextIndex]?.focus()\n break\n\n case 'ArrowUp':\n event.preventDefault()\n const prevIndex = currentIndex > 0 ? currentIndex - 1 : visibleOptions.length - 1\n visibleOptions[prevIndex]?.focus()\n break\n\n case 'Home':\n event.preventDefault()\n visibleOptions[0]?.focus()\n break\n\n case 'End':\n event.preventDefault()\n visibleOptions[visibleOptions.length - 1]?.focus()\n break\n\n case 'Enter':\n case ' ':\n if (focusedOption) {\n event.preventDefault()\n this._optionSelect$.next(focusedOption)\n }\n break\n }\n })\n ).subscribe()\n }\n}\n\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'schmancy-autocomplete': SchmancyAutocomplete\n }\n}"],"names":["SchmancyAutocomplete","$LitElement","constructor","super","arguments","this","required","placeholder","label","name","maxHeight","multi","description","size","autocomplete","debounceMs","similarityThreshold","_open","_inputValue","_visibleOptionsCount","_hasResults","_inputElementRef","createRef","_selectedValue$","BehaviorSubject","_selectedValues$","_inputValue$","_open$","_options$","_optionSelect$","Subject","_documentClick$","values","value","vals","next","Array","isArray","join","val","split","map","v","trim","filter","Boolean","connectedCallback","id","Math","random","toString","slice","_setupAutocompleteLogic","_setupDocumentClickHandler","pipe","tap","options","forEach","option","index","setAttribute","tabIndex","hasAttribute","fromEvent","e","preventDefault","stopPropagation","takeUntil","disconnecting","subscribe","combineLatest","selectedValue","selectedValues","selected","includes","String","distinctUntilChanged","debounceTime","withLatestFrom","searchTerm","isOpen","term","scoredOptions","optionLabel","textContent","optionValue","labelScore","similarity","valueScore","score","max","sort","a","b","visibleCount","item","hidden","style","order","length","_announceToScreenReader","_","currentValues","indexOf","newValues","labels","_getSelectedLabels","timer","blur","take","_fireChangeEvent","opt","find","open","composedPath","_options","some","_updateInputDisplay","switchMap","document","addEventListener","EMPTY","of","removeEventListener","message","liveRegion","shadowRoot","querySelector","detail","dispatchEvent","CustomEvent","bubbles","composed","checkValidity","reportValidity","firstUpdated","render","descriptionId","html","ref","toLowerCase","replace","target","hasSelection","_handleKeyDown","_handleAutoSelectOnBlur","classMap","absolute","flex","bestMatch","bestScore","_e","event","key","focus","visibleOptions","parseInt","focusedOption","activeElement","currentIndex","nextIndex","prevIndex","__decorateClass","property","type","prototype","reflect","Number","state","query","queryAssignedElements","flatten","customElement"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"avatar-C8PC_n9i.cjs","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/context.ts","../src/nav-drawer/appbar.ts","../src/nav-drawer/content.ts","../src/nav-drawer/drawer.ts","../src/nav-drawer/navbar.ts","../src/teleport/teleport.service.ts","../src/teleport/watcher.ts","../src/teleport/teleport.component.ts","../src/avatar.ts"],"sourcesContent":["import { TailwindElement } 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'\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 TailwindElement(css`\n\t:host {\n\t\tdisplay: inline-flex;\n\t}\n\n\t.badge-content {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tline-height: 1;\n\t\tletter-spacing: 0.01em;\n\t\tfont-kerning: normal;\n\t}\n\n\t/* Improved vertical alignment for icon and text */\n\t::slotted(*) {\n\t\tvertical-align: middle;\n\t}\n\n\t/* Add space between icon and text */\n\t.icon-container {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tline-height: 1;\n\t}\n\n\t/* Icon spacing adjustments - based on golden ratio principles */\n\t.icon-container + .badge-content {\n\t\tmargin-left: 0.38em; /* Approximately 1/1.618 of 0.618em */\n\t}\n\n\t/* Ensure the icon is properly centered */\n\tschmancy-icon {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t}\n\n\t/* Elegant hover effect for better interactivity */\n\t:host([outlined]) div[part=\"badge\"] {\n\t\ttransition: all 0.2s ease;\n\t}\n\n\t:host([outlined]) div[part=\"badge\"]:hover {\n\t\tfilter: brightness(0.95);\n\t\ttransform: translateY(-1px);\n\t}\n\n\t/* Non-outlined badges get subtle hover effects */\n\t:host(:not([outlined])) div[part=\"badge\"]:hover {\n\t\tfilter: brightness(0.98);\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}\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[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}\n\n\t\t// Refined styles for a more elegant look\n\t\tconst styles = {\n\t\t\tborderColor: colorStyles.border,\n\t\t\ttransition: 'all 0.2s ease',\n\t\t\t...(this.outlined ? {\n\t\t\t\tbackdropFilter: 'blur(4px)',\n\t\t\t\tborderWidth: '1px',\n\t\t\t} : {}),\n\t\t\t...(this.size === 'lg' && !this.outlined ? {\n\t\t\t\tboxShadow: '0 1px 2px rgba(0, 0, 0, 0.06), 0 1px 3px rgba(0, 0, 0, 0.1)'\n\t\t\t} : {}),\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=\"icon-container flex-shrink-0 flex items-center justify-center\">\n\t\t\t\t\t\t\t\t\t<schmancy-icon .size=${iconSize} class=\"flex items-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 -->\n\t\t\t\t<div part=\"content\" class=\"badge-content\">\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 { Subject } from 'rxjs'\n\ntype DrawerAction = 'dismiss' | 'render' | 'push'\ntype TRef = Element | Window\ntype TRenderRequest = HTMLElement\nexport type TRenderCustomEvent = CustomEvent<{\n\tcomponent: TRenderRequest\n\ttitle?: string\n}>\n\ntype ComponentType = string | HTMLElement | (() => HTMLElement) | (() => Promise<{ default: any }>)\n\nclass DrawerService {\n\tprivate $drawer = new Subject<{\n\t\tref: TRef\n\t\taction: DrawerAction\n\t\tcomponent?: TRenderRequest | ComponentType\n\t\ttitle?: string\n\t}>()\n\tprivate lastComponent: HTMLElement | null = null\n\n\tconstructor() {\n\t\tthis.$drawer.pipe().subscribe(data => {\n\t\t\tif (data.action === 'dismiss') {\n\t\t\t\tdata.ref.dispatchEvent(\n\t\t\t\t\tnew CustomEvent(SchmancyEvents.ContentDrawerToggle, {\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} else if (data.action === 'render') {\n\t\t\t\tdata.ref.dispatchEvent(\n\t\t\t\t\tnew CustomEvent(SchmancyEvents.ContentDrawerToggle, {\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\tdata.ref.dispatchEvent(\n\t\t\t\t\tnew CustomEvent('schmancy-content-drawer-render', {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tcomponent: data.component,\n\t\t\t\t\t\t\ttitle: data.title,\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 if (data.action === 'push') {\n\t\t\t\tthis.handlePush(data.ref, data.component as ComponentType)\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 async handlePush(ref: TRef, component: ComponentType) {\n\t\tlet resolvedComponent: HTMLElement\n\n\t\t// Resolve component to HTMLElement\n\t\tif (typeof component === 'string') {\n\t\t\t// String tag name - create element\n\t\t\tresolvedComponent = document.createElement(component) as HTMLElement\n\t\t} else if (component instanceof HTMLElement) {\n\t\t\t// Already an HTMLElement\n\t\t\tresolvedComponent = component\n\t\t} else if (typeof component === 'function') {\n\t\t\t// Factory function or async module\n\t\t\ttry {\n\t\t\t\tconst result = await component()\n\t\t\t\tif (result && typeof result === 'object' && 'default' in result) {\n\t\t\t\t\t// ES module with default export\n\t\t\t\t\tconst Constructor = result.default\n\t\t\t\t\tresolvedComponent = new Constructor() as HTMLElement\n\t\t\t\t} else if (result instanceof HTMLElement) {\n\t\t\t\t\t// Factory returned HTMLElement\n\t\t\t\t\tresolvedComponent = result\n\t\t\t\t} else {\n\t\t\t\t\t// Assume it's a constructor\n\t\t\t\t\tresolvedComponent = new (result as any)() as HTMLElement\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Failed to resolve component:', error)\n\t\t\t\treturn\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.error('Invalid component type:', component)\n\t\t\treturn\n\t\t}\n\n\t\t// Check if it's the same component instance and force update\n\t\tif (this.lastComponent === resolvedComponent && 'requestUpdate' in resolvedComponent) {\n\t\t\t(resolvedComponent as any).requestUpdate()\n\t\t}\n\t\tthis.lastComponent = resolvedComponent\n\n\t\t// Dispatch events to open drawer and render component\n\t\tref.dispatchEvent(\n\t\t\tnew CustomEvent(SchmancyEvents.ContentDrawerToggle, {\n\t\t\t\tdetail: { state: 'open' },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t\tref.dispatchEvent(\n\t\t\tnew CustomEvent('schmancy-content-drawer-render', {\n\t\t\t\tdetail: { component: resolvedComponent },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tpush(component: ComponentType) {\n\t\t// Use window as default ref for simplicity\n\t\tthis.$drawer.next({\n\t\t\taction: 'push',\n\t\t\tref: window,\n\t\t\tcomponent: component,\n\t\t})\n\t}\n}\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 { $LitElement } 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 $LitElement(css`\n\t:host {\n\t\tposition: relative;\n\t\tinset: 0;\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t}\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\tfirstUpdated(): void {\n\t\tmerge(fromEvent<CustomEvent>(window, 'resize'), fromEvent<CustomEvent>(window, SchmancyEvents.ContentDrawerResize))\n\t\t\t.pipe(\n\t\t\t\tstartWith(true),\n\t\t\t\tmap(() => (this.clientWidth ? this.clientWidth : window.innerWidth)),\n\t\t\t\tmap(width => width >= this.minWidth.main + this.minWidth.sheet),\n\t\t\t\tdebounceTime(100),\n\t\t\t\ttap(() => {\n\t\t\t\t\tthis.maxHeight = `${window.innerHeight - this.getOffsetTop(this) - 32}px`\n\t\t\t\t\tthis.style.setProperty('max-height', this.maxHeight)\n\t\t\t\t}),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(lgScreen => {\n\t\t\t\tif (lgScreen) {\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\t/*\n\t\t * Listen to the toggle event\n\t\t */\n\t\tfromEvent<CustomEvent>(window, SchmancyEvents.ContentDrawerToggle)\n\t\t\t.pipe(\n\t\t\t\ttap(event => {\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t}),\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\n\t\tfromEvent<TRenderCustomEvent>(window, 'schmancy-content-drawer-render')\n\t\t\t.pipe(\n\t\t\t\ttap(event => {\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t}),\n\t\t\t\tmap(event => event.detail),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(({ component, title }) => {\n\t\t\t\tif (this.mode === 'push') {\n\t\t\t\t\t// TODO: Fix the router to render if constructor has different arguments\n\t\t\t\t\tarea.push({\n\t\t\t\t\t\tarea: this.schmancyContentDrawerID,\n\t\t\t\t\t\tcomponent: 'empty',\n\t\t\t\t\t\thistoryStrategy: 'silent',\n\t\t\t\t\t})\n\t\t\t\t\tarea.push({\n\t\t\t\t\t\tarea: this.schmancyContentDrawerID,\n\t\t\t\t\t\tcomponent: component,\n\t\t\t\t\t\thistoryStrategy: 'silent',\n\t\t\t\t\t})\n\t\t\t\t} else if ((this.mode = 'overlay')) {\n\t\t\t\t\tsheet.open({ component: component, uid: this.schmancyContentDrawerID, title })\n\t\t\t\t}\n\t\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\t\treturn html`\n\t\t\t<schmancy-grid\n\t\t\t\tcols=${this.mode === 'overlay' ? '1fr' : 'auto 1fr'}\n\t\t\t\trows=\"1fr\"\n\t\t\t\tflow=\"col\"\n\t\t\t\tjustify=\"stretch\"\n\t\t\t\talign=\"stretch\"\n\t\t\t>\n\t\t\t\t<slot></slot>\n\t\t\t</schmancy-grid>\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 { $LitElement } 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 $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t}\n`) {\n\t@property({ type: Number })\n\tminWidth\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\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\t\treturn html`\n\t\t\t<section class=\"relative inset-0 h-full\">\n\t\t\t\t<schmancy-grid\n\t\t\t\t\tclass=\"h-full relative overflow-scroll\"\n\t\t\t\t\tcols=\"${this.mode === 'push' ? 'auto 1fr' : '1fr'}\"\n\t\t\t\t\trows=\"1fr\"\n\t\t\t\t\tflow=\"col\"\n\t\t\t\t\talign=\"stretch\"\n\t\t\t\t\tjustify=\"stretch\"\n\t\t\t\t>\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</schmancy-grid>\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 { $LitElement } 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 $LitElement(css`\n\t:host {\n\t\toverflow: scroll;\n\t}\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, any>) {\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: 500,\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: 500,\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\tblock: 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 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 { 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 { consume } from '@lit/context'\nimport { TailwindElement } from '@mixins/index'\nimport {\n\tSchmancyDrawerNavbarMode,\n\tSchmancyDrawerNavbarState,\n\tTSchmancyDrawerNavbarMode,\n} from '@schmancy/nav-drawer/context'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\nimport { SchmancyEvents } from '..'\n\n/**\n * @element schmancy-nav-drawer-appbar\n * @slot toggler - The toggler slot\n * @slot - The default slot\n */\n@customElement('schmancy-nav-drawer-appbar')\nexport class SchmancyDrawerAppbar extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`) {\n\t@consume({ context: SchmancyDrawerNavbarMode, subscribe: true })\n\t@state()\n\tsidebarMode: TSchmancyDrawerNavbarMode\n\n\t@consume({ context: SchmancyDrawerNavbarState, subscribe: true })\n\t@state()\n\tsidebarOpen\n\n\t@property({ type: Boolean }) toggler = true\n\n\trender() {\n\t\tconst appbarClasses = {\n\t\t\t'block z-50': true,\n\t\t}\n\t\tconst sidebarToggler = {\n\t\t\t'block left-3 z-50': this.sidebarMode === 'overlay',\n\t\t\thidden: this.sidebarMode === 'push',\n\t\t}\n\t\tconst gridClasses = {\n\t\t\t...appbarClasses,\n\t\t\t'grid gap-2 items-center': true,\n\t\t\t'grid-cols-[auto_1fr]': this.sidebarMode === 'overlay' && this.toggler,\n\t\t\t'grid-cols-1': !(this.sidebarMode === 'overlay' && this.toggler),\n\t\t}\n\n\t\treturn html`\n\t\t\t<div class=${this.classMap(gridClasses)}>\n\t\t\t\t${when(\n\t\t\t\t\tthis.sidebarMode === 'overlay' && this.toggler,\n\t\t\t\t\t() =>\n\t\t\t\t\t\thtml`<slot name=\"toggler\">\n\t\t\t\t\t\t\t<div class=\"${this.classMap(sidebarToggler)}\">\n\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\t\t\t\tnew CustomEvent(SchmancyEvents.NavDrawer_toggle, {\n\t\t\t\t\t\t\t\t\t\t\t\tdetail: { state: this.sidebarOpen === 'open' ? 'close' : 'open' },\n\t\t\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t${when(\n\t\t\t\t\t\t\t\t\t\tthis.sidebarOpen === 'close',\n\t\t\t\t\t\t\t\t\t\t() => html`menu`,\n\t\t\t\t\t\t\t\t\t\t() => html`menu_open`,\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</slot>`,\n\t\t\t\t)}\n\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-nav-drawer-appbar': SchmancyDrawerAppbar\n\t}\n}\n","import { $LitElement } 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 $LitElement(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\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 { provide } from '@lit/context'\nimport { $LitElement } from '@mixins/index'\nimport { css, html, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { debounceTime, distinctUntilChanged, fromEvent, map, takeUntil, tap } from 'rxjs'\nimport { SchmancyEvents } from '..'\nimport { fullHeight } from './../directives/height'\nimport {\n\tSchmancyDrawerNavbarMode,\n\tSchmancyDrawerNavbarState,\n\tTSchmancyDrawerNavbarMode,\n\tTSchmancyDrawerNavbarState,\n} from './context'\n\n/**\n * @element schmancy-nav-drawer\n * @slot appbar - The appbar slot\n * @slot - The content slot\n */\n@customElement('schmancy-nav-drawer')\nexport class SchmancyNavigationDrawer extends $LitElement(css`\n\t:host {\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t\toverflow: hidden;\n\t\t/* Initially hide the component until it’s ready */\n\t\tvisibility: hidden;\n\t}\n\t/* Once the component is ready, remove the hidden style */\n\t:host([data-ready]) {\n\t\tvisibility: visible;\n\t}\n`) {\n\t// fullscreen property\n\t@property({ type: Boolean })\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 * The following default values are used:\n\t * - sm: 640px\n\t * - md: 768px (default)\n\t * - lg: 1024px\n\t * - xl: 1280px\n\t *\n\t * @attr breakpoint\n\t * @type {\"sm\" | \"md\" | \"lg\" | \"xl\"}\n\t */\n\t@property({ type: String, attribute: 'breakpoint' })\n\tbreakpoint: 'sm' | 'md' | 'lg' | 'xl' = 'md'\n\n\t/**\n\t * Mapping of Tailwind breakpoint tokens to their numeric pixel values.\n\t */\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/**\n\t * The mode of the sidebar.\n\t */\n\t@provide({ context: SchmancyDrawerNavbarMode })\n\t@state()\n\tmode: TSchmancyDrawerNavbarMode\n\n\t/**\n\t * The open/close state of the sidebar.\n\t */\n\t@provide({ context: SchmancyDrawerNavbarState })\n\t@property()\n\topen: TSchmancyDrawerNavbarState\n\n\t/**\n\t * A flag indicating that the initial state has been set.\n\t */\n\t@state()\n\tprivate _initialized = false\n\n\t/**\n\t * In firstUpdated, we can safely read attribute-set properties.\n\t * We also initialize our state and subscribe to events.\n\t */\n\tfirstUpdated() {\n\t\t// Set the initial state based on the current window width.\n\t\tthis.updateState(window.innerWidth)\n\t\t// Mark the component as ready\n\t\tthis._initialized = true\n\t\tthis.setAttribute('data-ready', '')\n\n\t\t// Subscribe to window resize events.\n\t\tfromEvent(window, 'resize')\n\t\t\t.pipe(\n\t\t\t\t// Extract the inner width.\n\t\t\t\tmap(event => (event.target as Window).innerWidth),\n\t\t\t\t// Determine if we're above the breakpoint.\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\t// Listen to the custom toggle event.\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\tdistinctUntilChanged(),\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// When in push mode, ignore a request to close the sidebar.\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\t/**\n\t * Helper method to update state based on a given width.\n\t */\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\t// Optionally, you can check _initialized here,\n\t\t// but the CSS will already hide the component until it's ready.\n\t\tif (!this._initialized) return nothing\n\n\t\treturn html`\n\t\t\t<schmancy-grid\n\t\t\t\tcols=${this.fullscreen ? '1fr' : 'auto 1fr'}\n\t\t\t\trows=\"1fr\"\n\t\t\t\tflow=\"col\"\n\t\t\t\tjustify=\"stretch\"\n\t\t\t\talign=\"stretch\"\n\t\t\t\t${fullHeight()}\n\t\t\t>\n\t\t\t\t<slot></slot>\n\t\t\t</schmancy-grid>\n\t\t`\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 { $LitElement } 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 $LitElement() {\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 = '320px'\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, any>) {\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'p-[16px] 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.container,\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 { 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 { $LitElement } from '@mixins/index'\n@customElement('schmancy-teleport')\nexport class SchmancyTeleportation extends $LitElement(css``) {\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 = import.meta.env.DEV ? true : false\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","import { $LitElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { color } from '@schmancy/directives'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\nexport type AvatarColor = 'primary' | 'secondary' | 'tertiary' | 'success' | 'error' | 'neutral'\nexport type AvatarShape = 'circle' | 'square'\nexport type AvatarStatus = 'online' | 'offline' | 'busy' | 'away' | 'none'\n\n/**\n * A customizable avatar component that displays initials or an icon\n * Designed to match the Schmancy design system\n *\n * @element schmancy-avatar\n *\n * @property {string} initials - Text initials to display (limited to 2 characters)\n * @property {string} src - URL of an image to display\n * @property {string} icon - Name of an icon to display\n * @property {AvatarSize} size - Size of the avatar (xs, sm, md, lg, xl)\n * @property {AvatarColor} color - Color theme of the avatar\n * @property {AvatarShape} shape - Shape of the avatar (circle or square)\n * @property {boolean} bordered - Whether to add a border around the avatar\n * @property {AvatarStatus} status - Optional status indicator to display\n *\n * @example\n * <schmancy-avatar\n * initials=\"JD\"\n * size=\"md\"\n * color=\"primary\"\n * ></schmancy-avatar>\n */\n@customElement('schmancy-avatar')\nexport class SchmancyAvatar extends $LitElement() {\n\t@property({ type: String }) initials: string = ''\n\t@property({ type: String }) src: string = ''\n\t@property({ type: String }) icon: string = ''\n\t@property({ type: String }) size: AvatarSize = 'md'\n\t@property({ type: String }) color: AvatarColor = 'primary'\n\t@property({ type: String }) shape: AvatarShape = 'circle'\n\t@property({ type: Boolean }) bordered: boolean = false\n\t@property({ type: String }) status: AvatarStatus = 'none'\n\n\trender() {\n\t\t// Determine content to display (image, initials, or icon)\n\t\tlet content\n\t\tif (this.src) {\n\t\t\tcontent = html`<img class=\"w-full h-full object-cover\" src=\"${this.src}\" alt=\"Avatar\" />`\n\t\t} else if (this.initials) {\n\t\t\tcontent = html`<span class=\"text-center font-medium\">${this.initials.substring(0, 2).toUpperCase()}</span>`\n\t\t} else if (this.icon) {\n\t\t\tcontent = html`<schmancy-icon>${this.icon}</schmancy-icon>`\n\t\t} else {\n\t\t\tcontent = html`<schmancy-icon>person</schmancy-icon>`\n\t\t}\n\n\t\t// Size classes\n\t\tconst sizeClasses = {\n\t\t\txs: 'w-6 h-6 text-xs',\n\t\t\tsm: 'w-8 h-8 text-sm',\n\t\t\tmd: 'w-10 h-10 text-base',\n\t\t\tlg: 'w-12 h-12 text-lg',\n\t\t\txl: 'w-16 h-16 text-xl',\n\t\t}\n\n\t\t// Shape classes\n\t\tconst shapeClasses = {\n\t\t\tcircle: 'rounded-full',\n\t\t\tsquare: 'rounded-md',\n\t\t}\n\n\t\t// Combine classes\n\t\tconst avatarClasses = {\n\t\t\t'relative flex items-center justify-center overflow-hidden': true,\n\t\t\t[sizeClasses[this.size]]: true,\n\t\t\t[shapeClasses[this.shape]]: true,\n\t\t\t'border-2 border-surface-container': this.bordered,\n\t\t}\n\n\t\t// Get theme colors\n\t\tconst colorAttrs = this.getColorAttributes()\n\n\t\treturn html`\n\t\t\t<div class=\"${this.classMap(avatarClasses)}\" ${colorAttrs}>\n\t\t\t\t${content} ${this.status !== 'none' ? this.renderStatusIndicator() : ''}\n\t\t\t</div>\n\t\t`\n\t}\n\n\tprivate getColorAttributes() {\n\t\tconst colorMap = {\n\t\t\tprimary: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.primary.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.primary.onContainer,\n\t\t\t},\n\t\t\tsecondary: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.secondary.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.secondary.onContainer,\n\t\t\t},\n\t\t\ttertiary: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.tertiary.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.tertiary.onContainer,\n\t\t\t},\n\t\t\tsuccess: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.success.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.success.onContainer,\n\t\t\t},\n\t\t\terror: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.error.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.error.onContainer,\n\t\t\t},\n\t\t\tneutral: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.surface.on,\n\t\t\t},\n\t\t}\n\n\t\treturn color(colorMap[this.color])\n\t}\n\n\tprivate renderStatusIndicator() {\n\t\tconst statusColors = {\n\t\t\tonline: SchmancyTheme.sys.color.success.default,\n\t\t\toffline: SchmancyTheme.sys.color.surface.onVariant,\n\t\t\tbusy: SchmancyTheme.sys.color.error.default,\n\t\t\taway: SchmancyTheme.sys.color.tertiary.default,\n\t\t}\n\n\t\tconst sizeMap = {\n\t\t\txs: 'w-1.5 h-1.5',\n\t\t\tsm: 'w-2 h-2',\n\t\t\tmd: 'w-2.5 h-2.5',\n\t\t\tlg: 'w-3 h-3',\n\t\t\txl: 'w-4 h-4',\n\t\t}\n\n\t\tconst statusClasses = {\n\t\t\t'absolute bottom-0 right-0 rounded-full border-2 border-surface-default': true,\n\t\t\t[sizeMap[this.size]]: true,\n\t\t}\n\n\t\treturn html`\n\t\t\t<div class=\"${this.classMap(statusClasses)}\" style=\"background-color: ${statusColors[this.status]};\"></div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-avatar': SchmancyAvatar\n\t}\n}\n"],"names":["SchmancyBadgeV2","TailwindElement","css","constructor","super","arguments","this","color","size","shape","outlined","icon","pulse","getSizeClasses","getShapeClasses","getIconSize","getExoticStyles","styles","letterSpacing","fontWeight","getColorStyles","primary","bg","SchmancyTheme","sys","container","default","text","onContainer","border","surface","highest","secondary","tertiary","success","bright","warning","error","neutral","high","outline","on","sizeClasses","shapeClasses","colorStyles","iconSize","exoticStyles","badgeClasses","shadow","borderColor","transition","backdropFilter","borderWidth","boxShadow","html","classMap","styleMap","bgColor","__decorateClass","property","type","String","reflect","prototype","Boolean","customElement","ScBadgeV2","schmancyContentDrawer","$drawer","Subject","lastComponent","pipe","subscribe","data","action","ref","dispatchEvent","CustomEvent","SchmancyEvents","ContentDrawerToggle","detail","state","bubbles","composed","component","title","handlePush","next","resolvedComponent","document","createElement","HTMLElement","result","requestUpdate","window","SchmancyContentDrawerSheetMode","createContext","SchmancyContentDrawerSheetState","SchmancyContentDrawerID","Math","floor","random","Date","now","toString","SchmancyContentDrawerMaxHeight","SchmancyContentDrawerMinWidth","SchmancyContentDrawer","$LitElement","minWidth","main","sheet","schmancyContentDrawerID","maxHeight","firstUpdated","merge","fromEvent","ContentDrawerResize","startWith","map","clientWidth","innerWidth","width","debounceTime","tap","innerHeight","getOffsetTop","style","setProperty","distinctUntilChanged","takeUntil","disconnecting","lgScreen","mode","open","event","stopPropagation","area","push","historyStrategy","uid","element","offsetTop","offsetParent","render","nothing","provide","context","queryAssignedElements","flatten","SchmancyContentDrawerMain","connectedCallback","drawerMinWidth","changedProperties","update","has","when","Number","consume","SchmancyContentDrawerSheet","updated","closeAll","dismiss","position","display","animate","opacity","transform","duration","easing","from","closeModalSheet","closeSheet","of","Observable","observer","onfinish","complete","sheetClasses","block","query","slot","schmancyNavDrawer","NavDrawer_toggle","self","SchmancyDrawerNavbarMode","SchmancyDrawerNavbarState","SchmancyDrawerAppbar","toggler","sidebarToggler","sidebarMode","hidden","gridClasses","sidebarOpen","SchmancyNavigationDrawerContent","e","parentElement","SchmancyNavigationDrawer","fullscreen","breakpoint","_initialized","updateState","setAttribute","target","BREAKPOINTS","isLargeScreen","fullHeight","sm","md","lg","xl","attribute","ANIMATION_EASING","SchmancyNavigationDrawerSidebar","drawerState","nav","overlay","openOverlay","showNavDrawer","hideNavDrawer","closeOverlay","fill","handleOverlayClick","sidebarClasses","scrim","WhereAreYouRicky","HereMorty","teleport","activeTeleportations","Map","flipRequests","find","zip","filter","uuid","id","take","callerID","timeout","flip","request","to","originalZIndex","zIndex","transformOrigin","keyframes","rect","left","top","height","delay","bufferTime","requests","host","i","concatMap","watchElementRect","interval","getBoundingClientRect","prev","curr","right","bottom","SchmancyTeleportation","debugging","_slottedChildren","shadowRoot","querySelector","assignedElements","Error","FINDING_MORTIES","HERE_RICKY","teleportationService","get","a","throwIfEmpty","domRect","set","SchmancyAvatar","initials","src","bordered","status","content","substring","toUpperCase","avatarClasses","xs","circle","square","colorAttrs","getColorAttributes","renderStatusIndicator","colorMap","statusColors","online","offline","onVariant","busy","away","statusClasses"],"mappings":"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"}