@mhmo91/schmancy 0.5.25 → 0.5.27

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 (362) hide show
  1. package/ai/checkbox.md +93 -52
  2. package/dist/ai/checkbox.md +93 -52
  3. package/dist/{animated-text-Q61RCdXT.js → animated-text-Bn8-ILmB.js} +3 -3
  4. package/dist/{animated-text-Q61RCdXT.js.map → animated-text-Bn8-ILmB.js.map} +1 -1
  5. package/dist/{animated-text-CiHeHOww.cjs → animated-text-vdNivzdc.cjs} +2 -2
  6. package/dist/{animated-text-CiHeHOww.cjs.map → animated-text-vdNivzdc.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.component-C_cHSKz0.cjs → area.component-DwPL6bdo.cjs} +2 -2
  11. package/dist/{area.component-C_cHSKz0.cjs.map → area.component-DwPL6bdo.cjs.map} +1 -1
  12. package/dist/{area.component-DYMGLvuA.js → area.component-pd24G8zW.js} +3 -3
  13. package/dist/{area.component-DYMGLvuA.js.map → area.component-pd24G8zW.js.map} +1 -1
  14. package/dist/area.js +1 -1
  15. package/dist/{autocomplete-DuQWyQeT.js → autocomplete-BlhAOtex.js} +4 -4
  16. package/dist/{autocomplete-DuQWyQeT.js.map → autocomplete-BlhAOtex.js.map} +1 -1
  17. package/dist/{autocomplete-ZT3BOEA5.cjs → autocomplete-GW91jVqw.cjs} +2 -2
  18. package/dist/{autocomplete-ZT3BOEA5.cjs.map → autocomplete-GW91jVqw.cjs.map} +1 -1
  19. package/dist/autocomplete.cjs +1 -1
  20. package/dist/autocomplete.js +1 -1
  21. package/dist/{avatar-BcnWoLvo.js → avatar-4sGidVGe.js} +51 -51
  22. package/dist/{avatar-BcnWoLvo.js.map → avatar-4sGidVGe.js.map} +1 -1
  23. package/dist/{avatar-8CSFLRvq.cjs → avatar-q32dkyky.cjs} +2 -2
  24. package/dist/{avatar-8CSFLRvq.cjs.map → avatar-q32dkyky.cjs.map} +1 -1
  25. package/dist/badge.cjs +1 -1
  26. package/dist/badge.js +1 -1
  27. package/dist/boat-DNmaFlxD.cjs +83 -0
  28. package/dist/boat-DNmaFlxD.cjs.map +1 -0
  29. package/dist/boat-dSTPix8t.js +240 -0
  30. package/dist/boat-dSTPix8t.js.map +1 -0
  31. package/dist/boat.cjs +1 -1
  32. package/dist/boat.js +1 -1
  33. package/dist/busy.cjs +1 -1
  34. package/dist/busy.js +1 -1
  35. package/dist/button.cjs +1 -1
  36. package/dist/button.js +1 -1
  37. package/dist/card.cjs +1 -1
  38. package/dist/card.js +1 -1
  39. package/dist/{checkbox-D0LwTB_L.cjs → checkbox-BJ5aqrKY.cjs} +2 -2
  40. package/dist/{checkbox-D0LwTB_L.cjs.map → checkbox-BJ5aqrKY.cjs.map} +1 -1
  41. package/dist/{checkbox-WxVuYamU.js → checkbox-CU2tyEL0.js} +2 -2
  42. package/dist/{checkbox-WxVuYamU.js.map → checkbox-CU2tyEL0.js.map} +1 -1
  43. package/dist/checkbox.cjs +1 -1
  44. package/dist/checkbox.js +1 -1
  45. package/dist/chips.cjs +1 -1
  46. package/dist/chips.js +2 -2
  47. package/dist/code-highlight.cjs +1 -1
  48. package/dist/code-highlight.js +1 -1
  49. package/dist/{code-preview-7uzeIcQP.js → code-preview-KDpn0Q3T.js} +2 -2
  50. package/dist/{code-preview-7uzeIcQP.js.map → code-preview-KDpn0Q3T.js.map} +1 -1
  51. package/dist/{code-preview-BcwituOr.cjs → code-preview-fda91FDi.cjs} +2 -2
  52. package/dist/{code-preview-BcwituOr.cjs.map → code-preview-fda91FDi.cjs.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-eygGuBZz.cjs → date-range-0nOdLk-l.cjs} +2 -2
  58. package/dist/{date-range-eygGuBZz.cjs.map → date-range-0nOdLk-l.cjs.map} +1 -1
  59. package/dist/{date-range-inline-97fWguq7.cjs → date-range-inline-UoP6EDug.cjs} +2 -2
  60. package/dist/{date-range-inline-97fWguq7.cjs.map → date-range-inline-UoP6EDug.cjs.map} +1 -1
  61. package/dist/{date-range-inline-B2QQNDMg.js → date-range-inline-b0yYxPn_.js} +3 -3
  62. package/dist/{date-range-inline-B2QQNDMg.js.map → date-range-inline-b0yYxPn_.js.map} +1 -1
  63. package/dist/date-range-inline.cjs +1 -1
  64. package/dist/date-range-inline.js +1 -1
  65. package/dist/{date-range-s3Us154k.js → date-range-yd-FnXRe.js} +3 -3
  66. package/dist/{date-range-s3Us154k.js.map → date-range-yd-FnXRe.js.map} +1 -1
  67. package/dist/date-range.cjs +1 -1
  68. package/dist/date-range.js +1 -1
  69. package/dist/{delay-CQEb521T.js → delay-CE9VOJBG.js} +2 -2
  70. package/dist/{delay-CQEb521T.js.map → delay-CE9VOJBG.js.map} +1 -1
  71. package/dist/{delay-B0GqQ3C1.cjs → delay-CaOsI0yP.cjs} +2 -2
  72. package/dist/{delay-B0GqQ3C1.cjs.map → delay-CaOsI0yP.cjs.map} +1 -1
  73. package/dist/delay.cjs +1 -1
  74. package/dist/delay.js +1 -1
  75. package/dist/details-B_kKG0Du.cjs +143 -0
  76. package/dist/details-B_kKG0Du.cjs.map +1 -0
  77. package/dist/details-m-njXkGl.js +210 -0
  78. package/dist/details-m-njXkGl.js.map +1 -0
  79. package/dist/details.cjs +1 -1
  80. package/dist/details.js +1 -1
  81. package/dist/{dialog-content-DMImBN73.cjs → dialog-content-B5MUa6uq.cjs} +2 -2
  82. package/dist/{dialog-content-DMImBN73.cjs.map → dialog-content-B5MUa6uq.cjs.map} +1 -1
  83. package/dist/{dialog-content-CcNZ5YU6.js → dialog-content-BireCTdH.js} +3 -3
  84. package/dist/{dialog-content-CcNZ5YU6.js.map → dialog-content-BireCTdH.js.map} +1 -1
  85. package/dist/dialog.cjs +1 -1
  86. package/dist/dialog.js +1 -1
  87. package/dist/{divider-DvznHh3I.js → divider-CMaqpnia.js} +3 -3
  88. package/dist/{divider-DvznHh3I.js.map → divider-CMaqpnia.js.map} +1 -1
  89. package/dist/{divider-DNxHAfMo.cjs → divider-DekMH80a.cjs} +2 -2
  90. package/dist/{divider-DNxHAfMo.cjs.map → divider-DekMH80a.cjs.map} +1 -1
  91. package/dist/divider.cjs +1 -1
  92. package/dist/divider.js +1 -1
  93. package/dist/{dropdown-content-CtMauszk.js → dropdown-content-CViuccZ6.js} +3 -3
  94. package/dist/{dropdown-content-CtMauszk.js.map → dropdown-content-CViuccZ6.js.map} +1 -1
  95. package/dist/{dropdown-content-CH5MB5mz.cjs → dropdown-content-eXth59vX.cjs} +2 -2
  96. package/dist/{dropdown-content-CH5MB5mz.cjs.map → dropdown-content-eXth59vX.cjs.map} +1 -1
  97. package/dist/dropdown.cjs +1 -1
  98. package/dist/dropdown.js +1 -1
  99. package/dist/{email-recipients-BxiV610x.js → email-recipients-BSopuO1J.js} +5 -5
  100. package/dist/{email-recipients-BxiV610x.js.map → email-recipients-BSopuO1J.js.map} +1 -1
  101. package/dist/{email-recipients-pW93YxrA.cjs → email-recipients-DNcWf4_1.cjs} +2 -2
  102. package/dist/{email-recipients-pW93YxrA.cjs.map → email-recipients-DNcWf4_1.cjs.map} +1 -1
  103. package/dist/extra.cjs +1 -1
  104. package/dist/extra.js +1 -1
  105. package/dist/{flex-H2ZPqfIW.cjs → flex-CE0IKjR4.cjs} +2 -2
  106. package/dist/{flex-H2ZPqfIW.cjs.map → flex-CE0IKjR4.cjs.map} +1 -1
  107. package/dist/{flex-ykbucnko.js → flex-Czj-zqJQ.js} +2 -2
  108. package/dist/{flex-ykbucnko.js.map → flex-Czj-zqJQ.js.map} +1 -1
  109. package/dist/{form-CGGeAQbK.js → form-CAvvBQiv.js} +2 -2
  110. package/dist/{form-CGGeAQbK.js.map → form-CAvvBQiv.js.map} +1 -1
  111. package/dist/{form-C7FRhHOX.cjs → form-OUNdJnUW.cjs} +2 -2
  112. package/dist/{form-C7FRhHOX.cjs.map → form-OUNdJnUW.cjs.map} +1 -1
  113. package/dist/form.cjs +1 -1
  114. package/dist/form.js +1 -1
  115. package/dist/{formField.mixin-MbkisYHL.cjs → formField.mixin-Bu0ygAbE.cjs} +2 -2
  116. package/dist/{formField.mixin-MbkisYHL.cjs.map → formField.mixin-Bu0ygAbE.cjs.map} +1 -1
  117. package/dist/{formField.mixin-D-3pktvx.js → formField.mixin-DlYLC82X.js} +2 -2
  118. package/dist/{formField.mixin-D-3pktvx.js.map → formField.mixin-DlYLC82X.js.map} +1 -1
  119. package/dist/{icon-CnVNGmjD.cjs → icon-BwhQbcAk.cjs} +2 -2
  120. package/dist/{icon-CnVNGmjD.cjs.map → icon-BwhQbcAk.cjs.map} +1 -1
  121. package/dist/{icon-BiHCgOyT.js → icon-D0EaNtwd.js} +2 -2
  122. package/dist/{icon-BiHCgOyT.js.map → icon-D0EaNtwd.js.map} +1 -1
  123. package/dist/{icon-button-CB52pDFa.cjs → icon-button-BrRSVzzx.cjs} +2 -2
  124. package/dist/{icon-button-CB52pDFa.cjs.map → icon-button-BrRSVzzx.cjs.map} +1 -1
  125. package/dist/{icon-button--hjJtAL_.js → icon-button-CGMdsmXS.js} +3 -3
  126. package/dist/{icon-button--hjJtAL_.js.map → icon-button-CGMdsmXS.js.map} +1 -1
  127. package/dist/icons.cjs +1 -1
  128. package/dist/icons.js +1 -1
  129. package/dist/index.cjs +1 -1
  130. package/dist/index.js +166 -163
  131. package/dist/{input-Mrc7DrIK.js → input-DZYN1TnY.js} +3 -3
  132. package/dist/{input-Mrc7DrIK.js.map → input-DZYN1TnY.js.map} +1 -1
  133. package/dist/{input-chip-BRdk5zlg.js → input-chip-CNLkwei6.js} +2 -2
  134. package/dist/{input-chip-BRdk5zlg.js.map → input-chip-CNLkwei6.js.map} +1 -1
  135. package/dist/{input-chip-DnM_iJbj.cjs → input-chip-Cf25jEob.cjs} +2 -2
  136. package/dist/{input-chip-DnM_iJbj.cjs.map → input-chip-Cf25jEob.cjs.map} +1 -1
  137. package/dist/{input-BXcrOvCH.cjs → input-lzxE1e5L.cjs} +2 -2
  138. package/dist/{input-BXcrOvCH.cjs.map → input-lzxE1e5L.cjs.map} +1 -1
  139. package/dist/input.cjs +1 -1
  140. package/dist/input.js +1 -1
  141. package/dist/layout.cjs +1 -1
  142. package/dist/layout.js +1 -1
  143. package/dist/{list-CXBxuSyn.js → list-Cqo45m_h.js} +2 -2
  144. package/dist/{list-CXBxuSyn.js.map → list-Cqo45m_h.js.map} +1 -1
  145. package/dist/{list-CYvT9cR6.cjs → list-rGx4YHgo.cjs} +2 -2
  146. package/dist/{list-CYvT9cR6.cjs.map → list-rGx4YHgo.cjs.map} +1 -1
  147. package/dist/list.cjs +1 -1
  148. package/dist/list.js +1 -1
  149. package/dist/{litElement.mixin-DvxIa-6i.js → litElement.mixin-B0Rsd4Km.js} +2 -2
  150. package/dist/{litElement.mixin-DvxIa-6i.js.map → litElement.mixin-B0Rsd4Km.js.map} +1 -1
  151. package/dist/{litElement.mixin-BlkckXzw.cjs → litElement.mixin-DUiUa087.cjs} +2 -2
  152. package/dist/{litElement.mixin-BlkckXzw.cjs.map → litElement.mixin-DUiUa087.cjs.map} +1 -1
  153. package/dist/mailbox.cjs +1 -1
  154. package/dist/mailbox.js +1 -1
  155. package/dist/{map-CnBZmqCI.cjs → map-8DhybTup.cjs} +2 -2
  156. package/dist/{map-CnBZmqCI.cjs.map → map-8DhybTup.cjs.map} +1 -1
  157. package/dist/{map-DwJzufvh.js → map-DWf43TA1.js} +2 -2
  158. package/dist/{map-DwJzufvh.js.map → map-DWf43TA1.js.map} +1 -1
  159. package/dist/map.cjs +1 -1
  160. package/dist/map.js +1 -1
  161. package/dist/media-BVKgZzK_.js +243 -0
  162. package/dist/media-BVKgZzK_.js.map +1 -0
  163. package/dist/media-BZwiyJto.cjs +152 -0
  164. package/dist/media-BZwiyJto.cjs.map +1 -0
  165. package/dist/{menu-dj8ocrls.js → menu-CGaCEOer.js} +3 -3
  166. package/dist/{menu-dj8ocrls.js.map → menu-CGaCEOer.js.map} +1 -1
  167. package/dist/{menu-1D8Grlkb.cjs → menu-D8qP_e7D.cjs} +2 -2
  168. package/dist/{menu-1D8Grlkb.cjs.map → menu-D8qP_e7D.cjs.map} +1 -1
  169. package/dist/menu.cjs +1 -1
  170. package/dist/menu.js +1 -1
  171. package/dist/mixins/tailwind.css +0 -247
  172. package/dist/nav-drawer.cjs +1 -1
  173. package/dist/nav-drawer.js +1 -1
  174. package/dist/navigation-bar.cjs +1 -1
  175. package/dist/navigation-bar.js +1 -1
  176. package/dist/{navigation-rail-CO20kIzL.cjs → navigation-rail-BzMOzaFm.cjs} +77 -39
  177. package/dist/navigation-rail-BzMOzaFm.cjs.map +1 -0
  178. package/dist/{navigation-rail-DDSUxYea.js → navigation-rail-CjBw96pi.js} +88 -50
  179. package/dist/navigation-rail-CjBw96pi.js.map +1 -0
  180. package/dist/navigation-rail.cjs +1 -1
  181. package/dist/navigation-rail.js +1 -1
  182. package/dist/{notification-service-DcZEP2es.cjs → notification-service-DCmDSvc-.cjs} +2 -2
  183. package/dist/{notification-service-DcZEP2es.cjs.map → notification-service-DCmDSvc-.cjs.map} +1 -1
  184. package/dist/{notification-service-pckh5tN0.js → notification-service-Dv4oQi_Z.js} +5 -5
  185. package/dist/{notification-service-pckh5tN0.js.map → notification-service-Dv4oQi_Z.js.map} +1 -1
  186. package/dist/notification.cjs +1 -1
  187. package/dist/notification.js +2 -2
  188. package/dist/{notify-CkVQ8Yk1.js → notify-COuaNTJP.js} +2 -2
  189. package/dist/{notify-CkVQ8Yk1.js.map → notify-COuaNTJP.js.map} +1 -1
  190. package/dist/{notify-G37oQhaA.cjs → notify-XY2e8y_a.cjs} +2 -2
  191. package/dist/{notify-G37oQhaA.cjs.map → notify-XY2e8y_a.cjs.map} +1 -1
  192. package/dist/{option-aPValeTc.js → option-CSSmqUBi.js} +2 -2
  193. package/dist/{option-aPValeTc.js.map → option-CSSmqUBi.js.map} +1 -1
  194. package/dist/{option-Cjwmga85.cjs → option-q-dig7LF.cjs} +2 -2
  195. package/dist/{option-Cjwmga85.cjs.map → option-q-dig7LF.cjs.map} +1 -1
  196. package/dist/option.cjs +1 -1
  197. package/dist/option.js +1 -1
  198. package/dist/{payment-card-form-CbGx00Fm.cjs → payment-card-form-C8bWa_hh.cjs} +2 -2
  199. package/dist/{payment-card-form-CbGx00Fm.cjs.map → payment-card-form-C8bWa_hh.cjs.map} +1 -1
  200. package/dist/{payment-card-form-B0kQ8Wr5.js → payment-card-form-CWboYwqO.js} +3 -3
  201. package/dist/{payment-card-form-B0kQ8Wr5.js.map → payment-card-form-CWboYwqO.js.map} +1 -1
  202. package/dist/{progress-CmI5A7Z_.cjs → progress-CP2lpJsl.cjs} +2 -2
  203. package/dist/{progress-CmI5A7Z_.cjs.map → progress-CP2lpJsl.cjs.map} +1 -1
  204. package/dist/{progress-DuqVkW8o.js → progress-Cci0dXzp.js} +2 -2
  205. package/dist/{progress-DuqVkW8o.js.map → progress-Cci0dXzp.js.map} +1 -1
  206. package/dist/progress.cjs +1 -1
  207. package/dist/progress.js +1 -1
  208. package/dist/{radio-button-Chlsm46k.cjs → radio-button-CU-lMs92.cjs} +2 -2
  209. package/dist/{radio-button-Chlsm46k.cjs.map → radio-button-CU-lMs92.cjs.map} +1 -1
  210. package/dist/{radio-button-sQa0jt-L.js → radio-button-DFbfVgox.js} +3 -3
  211. package/dist/{radio-button-sQa0jt-L.js.map → radio-button-DFbfVgox.js.map} +1 -1
  212. package/dist/radio-group.cjs +1 -1
  213. package/dist/radio-group.js +1 -1
  214. package/dist/{schmancy-steps-container-r34O78hN.cjs → schmancy-steps-container-CQY1zmws.cjs} +2 -2
  215. package/dist/{schmancy-steps-container-r34O78hN.cjs.map → schmancy-steps-container-CQY1zmws.cjs.map} +1 -1
  216. package/dist/{schmancy-steps-container-BsVtwIIR.js → schmancy-steps-container-vW7r1ZTL.js} +2 -2
  217. package/dist/{schmancy-steps-container-BsVtwIIR.js.map → schmancy-steps-container-vW7r1ZTL.js.map} +1 -1
  218. package/dist/{select-lhS0e1Jw.cjs → select-Be8HIqWu.cjs} +2 -2
  219. package/dist/{select-lhS0e1Jw.cjs.map → select-Be8HIqWu.cjs.map} +1 -1
  220. package/dist/{select-DQNDWSWh.js → select-BkGodZaS.js} +4 -4
  221. package/dist/{select-DQNDWSWh.js.map → select-BkGodZaS.js.map} +1 -1
  222. package/dist/select.cjs +1 -1
  223. package/dist/select.js +1 -1
  224. package/dist/{sheet-DImUVTqD.js → sheet-DECb9whB.js} +3 -3
  225. package/dist/{sheet-DImUVTqD.js.map → sheet-DECb9whB.js.map} +1 -1
  226. package/dist/{sheet-CVQ6px7m.cjs → sheet-dK5UPVjp.cjs} +2 -2
  227. package/dist/{sheet-CVQ6px7m.cjs.map → sheet-dK5UPVjp.cjs.map} +1 -1
  228. package/dist/sheet.cjs +1 -1
  229. package/dist/sheet.js +1 -1
  230. package/dist/{slider-CZMt67fl.js → slider-BhFc1oRj.js} +3 -3
  231. package/dist/{slider-CZMt67fl.js.map → slider-BhFc1oRj.js.map} +1 -1
  232. package/dist/{slider-MzOpDc_J.cjs → slider-CP3JRaWR.cjs} +2 -2
  233. package/dist/{slider-MzOpDc_J.cjs.map → slider-CP3JRaWR.cjs.map} +1 -1
  234. package/dist/slider.cjs +1 -1
  235. package/dist/slider.js +1 -1
  236. package/dist/{spinner-BuujVERe.cjs → spinner-BD8cXVK_.cjs} +2 -2
  237. package/dist/{spinner-BuujVERe.cjs.map → spinner-BD8cXVK_.cjs.map} +1 -1
  238. package/dist/{spinner-CUHM2lNo.js → spinner-DGyRYqUZ.js} +2 -2
  239. package/dist/{spinner-CUHM2lNo.js.map → spinner-DGyRYqUZ.js.map} +1 -1
  240. package/dist/steps.cjs +1 -1
  241. package/dist/steps.js +1 -1
  242. package/dist/{suggestion-chip-CzMoacAF.cjs → suggestion-chip-C1n2VYBG.cjs} +31 -20
  243. package/dist/suggestion-chip-C1n2VYBG.cjs.map +1 -0
  244. package/dist/{suggestion-chip-8mpcT2Lk.js → suggestion-chip-Cl0cPTKV.js} +89 -70
  245. package/dist/suggestion-chip-Cl0cPTKV.js.map +1 -0
  246. package/dist/surface-C3V23wh9.js +140 -0
  247. package/dist/surface-C3V23wh9.js.map +1 -0
  248. package/dist/surface-ClIDhSRv.cjs +119 -0
  249. package/dist/surface-ClIDhSRv.cjs.map +1 -0
  250. package/dist/surface.cjs +1 -1
  251. package/dist/surface.js +1 -1
  252. package/dist/{table-Dt0gOEZZ.cjs → table-1New2HBS.cjs} +2 -2
  253. package/dist/{table-Dt0gOEZZ.cjs.map → table-1New2HBS.cjs.map} +1 -1
  254. package/dist/{table-DkaAXbrh.js → table-CLA3cxIk.js} +2 -2
  255. package/dist/{table-DkaAXbrh.js.map → table-CLA3cxIk.js.map} +1 -1
  256. package/dist/table.cjs +1 -1
  257. package/dist/table.js +1 -1
  258. package/dist/{tabs-compatibility-5WVuGrk5.cjs → tabs-compatibility-DDtYFCUj.cjs} +2 -2
  259. package/dist/{tabs-compatibility-5WVuGrk5.cjs.map → tabs-compatibility-DDtYFCUj.cjs.map} +1 -1
  260. package/dist/{tabs-compatibility-DGvPxrEr.js → tabs-compatibility-RMzYuSJ1.js} +2 -2
  261. package/dist/{tabs-compatibility-DGvPxrEr.js.map → tabs-compatibility-RMzYuSJ1.js.map} +1 -1
  262. package/dist/tabs.cjs +1 -1
  263. package/dist/tabs.js +1 -1
  264. package/dist/tailwind.mixin-CFrLBtkD.cjs +2 -0
  265. package/dist/{tailwind.mixin-BiRVB4Hl.cjs.map → tailwind.mixin-CFrLBtkD.cjs.map} +1 -1
  266. package/dist/tailwind.mixin-CZKT1dUr.js +43 -0
  267. package/dist/{tailwind.mixin-BbF53_0W.js.map → tailwind.mixin-CZKT1dUr.js.map} +1 -1
  268. package/dist/teleport.cjs +1 -1
  269. package/dist/teleport.js +1 -1
  270. package/dist/{textarea-mc3Gk2Ch.js → textarea-B4DXG5Sg.js} +3 -3
  271. package/dist/{textarea-mc3Gk2Ch.js.map → textarea-B4DXG5Sg.js.map} +1 -1
  272. package/dist/{textarea-CJECXt0r.cjs → textarea-ChDsPBZz.cjs} +2 -2
  273. package/dist/{textarea-CJECXt0r.cjs.map → textarea-ChDsPBZz.cjs.map} +1 -1
  274. package/dist/textarea.cjs +1 -1
  275. package/dist/textarea.js +1 -1
  276. package/dist/{theme-button-cDGf9KiE.js → theme-button-DGjG_shg.js} +2 -2
  277. package/dist/{theme-button-cDGf9KiE.js.map → theme-button-DGjG_shg.js.map} +1 -1
  278. package/dist/{theme-button-1nU7sd5N.cjs → theme-button-qzDX0i9Q.cjs} +2 -2
  279. package/dist/{theme-button-1nU7sd5N.cjs.map → theme-button-qzDX0i9Q.cjs.map} +1 -1
  280. package/dist/theme-button.cjs +1 -1
  281. package/dist/theme-button.js +1 -1
  282. package/dist/theme.cjs +1 -1
  283. package/dist/theme.component-Blc_4wu9.cjs +3 -0
  284. package/dist/{theme.component-BpyyRbkh.cjs.map → theme.component-Blc_4wu9.cjs.map} +1 -1
  285. package/dist/theme.component-C3r_-QqQ.js +818 -0
  286. package/dist/{theme.component-HF6Qt0YA.js.map → theme.component-C3r_-QqQ.js.map} +1 -1
  287. package/dist/theme.interface-BLfE5J_1.js +5 -0
  288. package/dist/theme.interface-BLfE5J_1.js.map +1 -0
  289. package/dist/theme.interface-BMeNadVb.cjs +2 -0
  290. package/dist/theme.interface-BMeNadVb.cjs.map +1 -0
  291. package/dist/theme.js +13 -10
  292. package/dist/{timezone-8UCGVbbl.js → timezone-BkE20wzQ.js} +3 -3
  293. package/dist/{timezone-8UCGVbbl.js.map → timezone-BkE20wzQ.js.map} +1 -1
  294. package/dist/{timezone-DC3VVwlT.cjs → timezone-wWfEuXrb.cjs} +2 -2
  295. package/dist/{timezone-DC3VVwlT.cjs.map → timezone-wWfEuXrb.cjs.map} +1 -1
  296. package/dist/{tooltip-DNl5aBNp.cjs → tooltip-DLadXXnP.cjs} +2 -2
  297. package/dist/{tooltip-DNl5aBNp.cjs.map → tooltip-DLadXXnP.cjs.map} +1 -1
  298. package/dist/{tooltip-C5r_jUM1.js → tooltip-UtpbXzQX.js} +2 -2
  299. package/dist/{tooltip-C5r_jUM1.js.map → tooltip-UtpbXzQX.js.map} +1 -1
  300. package/dist/tooltip.cjs +1 -1
  301. package/dist/tooltip.js +1 -1
  302. package/dist/{tree-yiGCSyyN.cjs → tree-Brtho3Eu.cjs} +2 -2
  303. package/dist/{tree-yiGCSyyN.cjs.map → tree-Brtho3Eu.cjs.map} +1 -1
  304. package/dist/{tree-CeNor9l6.js → tree-VkXtw2P8.js} +2 -2
  305. package/dist/{tree-CeNor9l6.js.map → tree-VkXtw2P8.js.map} +1 -1
  306. package/dist/tree.cjs +1 -1
  307. package/dist/tree.js +1 -1
  308. package/dist/{typewriter-CWFH8-z-.cjs → typewriter-CEgaw_pR.cjs} +2 -2
  309. package/dist/{typewriter-CWFH8-z-.cjs.map → typewriter-CEgaw_pR.cjs.map} +1 -1
  310. package/dist/{typewriter-BbQsON2M.js → typewriter-CsReDsYS.js} +4 -4
  311. package/dist/{typewriter-BbQsON2M.js.map → typewriter-CsReDsYS.js.map} +1 -1
  312. package/dist/typewriter.cjs +1 -1
  313. package/dist/typewriter.js +1 -1
  314. package/dist/{typography-PFj-xY2T.js → typography-D_bM5DW7.js} +2 -2
  315. package/dist/{typography-PFj-xY2T.js.map → typography-D_bM5DW7.js.map} +1 -1
  316. package/dist/{typography-ByLTIj6U.cjs → typography-NurK7F-8.cjs} +2 -2
  317. package/dist/{typography-ByLTIj6U.cjs.map → typography-NurK7F-8.cjs.map} +1 -1
  318. package/dist/typography.cjs +1 -1
  319. package/dist/typography.js +1 -1
  320. package/package.json +1 -1
  321. package/types/src/boat/boat.d.ts +9 -0
  322. package/types/src/card/card.d.ts +5 -1
  323. package/types/src/chips/chips.d.ts +1 -6
  324. package/types/src/details/details.d.ts +4 -4
  325. package/types/src/theme/context.d.ts +222 -2
  326. package/types/src/theme/index.d.ts +10 -3
  327. package/types/src/theme/theme.elevation.d.ts +131 -0
  328. package/types/src/theme/theme.format.d.ts +32 -5
  329. package/types/src/theme/theme.interface.d.ts +231 -5
  330. package/types/src/theme/theme.motion.d.ts +198 -0
  331. package/types/src/theme/theme.service.d.ts +222 -2
  332. package/types/src/theme/theme.shape.d.ts +144 -0
  333. package/types/src/theme/theme.state.d.ts +546 -0
  334. package/types/src/theme/theme.typography.d.ts +74 -0
  335. package/dist/boat-BTSQNgJQ.js +0 -174
  336. package/dist/boat-BTSQNgJQ.js.map +0 -1
  337. package/dist/boat-BtViHW8M.cjs +0 -66
  338. package/dist/boat-BtViHW8M.cjs.map +0 -1
  339. package/dist/details-BSmS_ILq.cjs +0 -161
  340. package/dist/details-BSmS_ILq.cjs.map +0 -1
  341. package/dist/details-kr1zYIlK.js +0 -228
  342. package/dist/details-kr1zYIlK.js.map +0 -1
  343. package/dist/media-CdM6XhRo.cjs +0 -177
  344. package/dist/media-CdM6XhRo.cjs.map +0 -1
  345. package/dist/media-DOKkl0Ic.js +0 -261
  346. package/dist/media-DOKkl0Ic.js.map +0 -1
  347. package/dist/navigation-rail-CO20kIzL.cjs.map +0 -1
  348. package/dist/navigation-rail-DDSUxYea.js.map +0 -1
  349. package/dist/suggestion-chip-8mpcT2Lk.js.map +0 -1
  350. package/dist/suggestion-chip-CzMoacAF.cjs.map +0 -1
  351. package/dist/surface-C3B9Sbtw.cjs +0 -90
  352. package/dist/surface-C3B9Sbtw.cjs.map +0 -1
  353. package/dist/surface-DdR9DjO8.js +0 -111
  354. package/dist/surface-DdR9DjO8.js.map +0 -1
  355. package/dist/tailwind.mixin-BbF53_0W.js +0 -43
  356. package/dist/tailwind.mixin-BiRVB4Hl.cjs +0 -2
  357. package/dist/theme.component-BpyyRbkh.cjs +0 -3
  358. package/dist/theme.component-HF6Qt0YA.js +0 -814
  359. package/dist/theme.interface-C5Kj6WjD.js +0 -5
  360. package/dist/theme.interface-C5Kj6WjD.js.map +0 -1
  361. package/dist/theme.interface-Xg5Zi46a.cjs +0 -2
  362. package/dist/theme.interface-Xg5Zi46a.cjs.map +0 -1
@@ -1,174 +0,0 @@
1
- import { T as w } from "./tailwind.mixin-BbF53_0W.js";
2
- import { css as v, html as S } from "lit";
3
- import { property as g, state as p, customElement as z } from "lit/decorators.js";
4
- import { createRef as m, ref as x } from "lit/directives/ref.js";
5
- import { Subject as C, fromEvent as k, EMPTY as b, merge as R, of as l } from "rxjs";
6
- import { debounceTime as $, filter as A, tap as d, scan as F, switchMap as y, catchError as I, finalize as L, shareReplay as P, takeUntil as O } from "rxjs/operators";
7
- var E = Object.defineProperty, N = Object.getOwnPropertyDescriptor, c = (t, e, i, n) => {
8
- for (var r, s = n > 1 ? void 0 : n ? N(e, i) : e, a = t.length - 1; a >= 0; a--) (r = t[a]) && (s = (n ? r(e, i, s) : r(s)) || s);
9
- return n && s && E(e, i, s), s;
10
- };
11
- let o = class extends w(v`
12
- /* Performance optimization - GPU hints only */
13
- .boat-container {
14
- will-change: transform, border-radius, width, max-width, box-shadow;
15
- contain: layout style;
16
- transform: translate3d(0, 0, 0); /* Force GPU acceleration */
17
- backface-visibility: hidden;
18
- }
19
- `) {
20
- constructor() {
21
- super(...arguments), this.stateChange$ = new C(), this.containerRef = m(), this.contentRef = m(), this.iconRef = m(), this.ANIMATION_CONFIG = { durations: { expand: 350, minimize: 250, hide: 200, content: 300 }, easing: { emphasized: "cubic-bezier(0.2, 0.0, 0, 1.0)", decelerate: "cubic-bezier(0.05, 0.7, 0.1, 1.0)", accelerate: "cubic-bezier(0.3, 0.0, 0.8, 0.15)", standard: "cubic-bezier(0.4, 0.0, 0.2, 1)" }, shadows: { fab: "0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)", fabLowered: "0px 1px 3px 0px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 2px 1px -1px rgba(0, 0, 0, 0.12)", expanded: "0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)" } }, this.currentState = "minimized", this.isContentVisible = !1, this.isAnimating = !1, this.isLowered = !1;
22
- }
23
- get state() {
24
- return this.currentState;
25
- }
26
- set state(t) {
27
- this.stateChange$.next({ source: "external", target: t, type: "state" });
28
- }
29
- get lowered() {
30
- return this.isLowered;
31
- }
32
- set lowered(t) {
33
- this.stateChange$.next({ source: "external", target: this.currentState, type: "lowered" }), this.isLowered = t;
34
- }
35
- connectedCallback() {
36
- super.connectedCallback(), this.setupUnifiedPipeline();
37
- }
38
- setupUnifiedPipeline() {
39
- const t = typeof window < "u" ? k(window, "resize").pipe($(100), A(() => this.currentState === "expanded"), d(() => this.stateChange$.next({ source: "resize", type: "resize" }))) : b;
40
- R(l({ source: "internal", target: "minimized", type: "state" }), this.stateChange$, t).pipe(F((e, i) => i.type === "resize" && this.currentState === "expanded" ? (this.updateExpandedWidth(), { ...e, resized: !0 }) : i.type === "lowered" ? { ...e, lowered: !e.lowered } : i.type === "state" && i.target && i.target !== e.current ? { ...e, previous: e.current, current: i.target, pending: !0, source: i.source } : e, { current: "minimized", previous: "minimized", pending: !1, lowered: !1, resized: !1, source: "internal" }), d((e) => {
41
- this.isLowered = e.lowered;
42
- }), y((e) => !e.pending || this.isAnimating ? l(e) : (this.isAnimating = !0, this.animateTransition(e.previous, e.current).pipe(d(() => {
43
- this.currentState = e.current, this.isContentVisible = e.current === "expanded", this.dispatchEvent(new CustomEvent("toggle", { detail: e.current, bubbles: !0, composed: !0 }));
44
- }), I((i) => (this.currentState = e.current, this.isContentVisible = e.current === "expanded", l(e))), L(() => {
45
- this.isAnimating = !1;
46
- }), d(() => e.pending = !1)))), P(1), O(this.disconnecting)).subscribe();
47
- }
48
- animateTransition(t, e) {
49
- return l({ fromState: t, toState: e }).pipe(d(() => this.currentAnimation?.cancel()), y(({ fromState: i, toState: n }) => {
50
- if (!this.containerRef.value) return b;
51
- n === "expanded" && (this.isContentVisible = !0);
52
- const r = this.createAnimations(i, n);
53
- return new Promise((s) => {
54
- const a = r.container;
55
- a ? (this.currentAnimation = a, a.finished.then(() => {
56
- n !== "expanded" && (this.isContentVisible = !1), s();
57
- }).catch(() => s())) : s();
58
- });
59
- }));
60
- }
61
- createAnimations(t, e) {
62
- const i = this.containerRef.value, n = this.contentRef.value, r = this.iconRef.value, s = {};
63
- if (!i) return s;
64
- const a = this.ANIMATION_CONFIG, f = this.getStyleForState(t), h = this.getStyleForState(e);
65
- if (s.container = e === "expanded" ? i.animate([f, { ...h, transform: "translate3d(0, -8px, 0)", offset: 0.7 }, h], { duration: a.durations.expand, easing: a.easing.decelerate, fill: "forwards" }) : i.animate([f, h], { duration: e === "hidden" ? a.durations.hide : a.durations.minimize, easing: a.easing.accelerate, fill: "forwards" }), n && t === "expanded" && e === "minimized" ? n.animate([{ opacity: 1, transform: "translateY(0)" }, { opacity: 0, transform: "translateY(-8px)" }], { duration: 150, easing: a.easing.standard, fill: "forwards" }) : n && e === "expanded" && n.animate([{ opacity: 0, transform: "translateY(8px)" }, { opacity: 1, transform: "translateY(0)" }], { duration: a.durations.content, easing: a.easing.standard, fill: "forwards" }), r) {
66
- const u = e === "expanded";
67
- (u || t === "expanded" && e === "minimized") && r.animate([{ transform: u ? "rotate(0deg)" : "rotate(180deg)" }, { transform: u ? "rotate(180deg)" : "rotate(0deg)" }], { duration: 250, easing: a.easing.emphasized, fill: "forwards" });
68
- }
69
- return s;
70
- }
71
- getStyleForState(t) {
72
- const { shadows: e } = this.ANIMATION_CONFIG, i = { width: "300px", maxWidth: "300px", maxHeight: "auto", borderRadius: "16px" };
73
- return { hidden: { ...i, transform: "translate3d(0, calc(100% + 16px), 0)", boxShadow: "none", backdropFilter: "none" }, minimized: { ...i, transform: "translate3d(0, calc(100% - 56px), 0)", boxShadow: this.isLowered ? e.fabLowered : e.fab, backdropFilter: "none" }, expanded: { transform: "translate3d(0, 0, 0)", width: this.getResponsiveWidth(), maxWidth: "100%", maxHeight: "80vh", boxShadow: e.expanded, borderRadius: "8px 8px 0 0", backdropFilter: "blur(12px)" } }[t];
74
- }
75
- getResponsiveWidth() {
76
- if (typeof window > "u") return "40vw";
77
- const t = window.innerWidth;
78
- return t < 768 ? "calc(100vw - 32px)" : t < 1024 ? "70vw" : t < 1280 ? "60vw" : "40vw";
79
- }
80
- updateExpandedWidth() {
81
- const t = this.containerRef.value;
82
- t && this.currentState === "expanded" && (t.style.width = this.getResponsiveWidth());
83
- }
84
- firstUpdated() {
85
- this.applyInitialStyles();
86
- }
87
- applyInitialStyles() {
88
- const t = this.containerRef.value, e = this.contentRef.value, i = this.iconRef.value;
89
- if (t) {
90
- const n = this.getStyleForState(this.currentState);
91
- Object.assign(t.style, n), "webkitBackdropFilter" in t.style && (t.style.webkitBackdropFilter = n.backdropFilter);
92
- }
93
- e && (e.style.opacity = this.isContentVisible ? "1" : "0"), i && this.currentState === "expanded" && (i.style.transform = "rotate(180deg)");
94
- }
95
- toggleState() {
96
- const t = this.currentState === "minimized" ? "expanded" : "minimized";
97
- this.stateChange$.next({ source: "internal", target: t, type: "state" });
98
- }
99
- close() {
100
- this.stateChange$.next({ source: "internal", target: "hidden", type: "state" });
101
- }
102
- disconnectedCallback() {
103
- super.disconnectedCallback(), this.currentAnimation?.cancel(), this.stateChange$.complete();
104
- }
105
- render() {
106
- const t = this.currentState === "minimized" ? this.isLowered ? "1" : "3" : "4", e = this.currentState === "minimized", i = e ? "expand_less" : "expand_more";
107
- return S`
108
- <div
109
- class="boat-container z-[9999] fixed bottom-4 right-4 overflow-y-auto flex flex-col"
110
- ${x(this.containerRef)}
111
- >
112
- <!-- Header section -->
113
- <section class="sticky top-0 z-10">
114
- <schmancy-surface
115
- elevation="${t}"
116
- class="cursor-pointer"
117
- rounded="${e ? "none" : "top"}"
118
- type="containerLowest"
119
- @click=${() => this.toggleState()}
120
- >
121
- <div class="sticky top-0 px-3 py-2 flex items-center justify-between gap-3">
122
- <!-- Header content slot -->
123
- <div class="flex-1 flex items-center min-w-0">
124
- <slot name="header"></slot>
125
- </div>
126
-
127
- <!-- Control buttons -->
128
- <div class="flex items-center gap-1 flex-shrink-0">
129
- <!-- Toggle button -->
130
- <schmancy-icon-button
131
- variant="${e ? "text" : "filled tonal"}"
132
- @click=${(n) => {
133
- n.stopPropagation(), this.toggleState();
134
- }}
135
- title=${e ? "Expand" : "Minimize"}
136
- >
137
- <span class="icon-container" ${x(this.iconRef)}>
138
- ${i}
139
- </span>
140
- </schmancy-icon-button>
141
-
142
- <!-- Close button -->
143
- <schmancy-icon-button
144
- variant="text"
145
- @click=${(n) => {
146
- n.stopPropagation(), this.close();
147
- }}
148
- title="Close"
149
- >
150
- close
151
- </schmancy-icon-button>
152
- </div>
153
- </div>
154
- </schmancy-surface>
155
- </section>
156
-
157
- <!-- Content section -->
158
- <schmancy-surface
159
- .hidden=${!this.isContentVisible}
160
- type="containerLow"
161
- class="boat-content z-0 flex-1"
162
- ${x(this.contentRef)}
163
- >
164
- <slot></slot>
165
- </schmancy-surface>
166
- </div>
167
- `;
168
- }
169
- };
170
- c([g({ type: String, reflect: !0 })], o.prototype, "state", 1), c([g({ type: Boolean, reflect: !0 })], o.prototype, "lowered", 1), c([p()], o.prototype, "currentState", 2), c([p()], o.prototype, "isContentVisible", 2), c([p()], o.prototype, "isAnimating", 2), c([p()], o.prototype, "isLowered", 2), o = c([z("schmancy-boat")], o);
171
- export {
172
- o as S
173
- };
174
- //# sourceMappingURL=boat-BTSQNgJQ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"boat-BTSQNgJQ.js","sources":["../src/boat/boat.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/tailwind.mixin'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport {\n Subject,\n fromEvent,\n merge,\n of,\n EMPTY\n} from 'rxjs'\nimport {\n filter,\n switchMap,\n takeUntil,\n tap,\n finalize,\n catchError,\n debounceTime,\n scan,\n shareReplay\n} from 'rxjs/operators'\n\ntype BoatState = 'hidden' | 'minimized' | 'expanded'\n\n// State change event for the unified pipeline\ninterface StateChangeEvent {\n\tsource: 'internal' | 'external' | 'resize'\n\ttarget?: BoatState\n\ttype: 'state' | 'lowered' | 'resize'\n}\n\n@customElement('schmancy-boat')\nexport default class SchmancyBoat extends TailwindElement(css`\n\t/* Performance optimization - GPU hints only */\n\t.boat-container {\n\t\twill-change: transform, border-radius, width, max-width, box-shadow;\n\t\tcontain: layout style;\n\t\ttransform: translate3d(0, 0, 0); /* Force GPU acceleration */\n\t\tbackface-visibility: hidden;\n\t}\n`) {\n\t// Public properties - route ALL changes through stateChange$\n\t@property({ type: String, reflect: true })\n\tget state(): BoatState {\n\t\treturn this.currentState\n\t}\n\tset state(value: BoatState) {\n\t\t// Route external state changes through the unified pipeline\n\t\tthis.stateChange$.next({\n\t\t\tsource: 'external',\n\t\t\ttarget: value,\n\t\t\ttype: 'state'\n\t\t})\n\t}\n\n\t@property({ type: Boolean, reflect: true })\n\tget lowered(): boolean {\n\t\treturn this.isLowered\n\t}\n\tset lowered(value: boolean) {\n\t\tthis.stateChange$.next({\n\t\t\tsource: 'external',\n\t\t\ttarget: this.currentState,\n\t\t\ttype: 'lowered'\n\t\t})\n\t\tthis.isLowered = value\n\t}\n\n\t// Single unified state change stream - ALL state changes go through this\n\tprivate stateChange$ = new Subject<StateChangeEvent>()\n\n\t// Element references\n\tprivate containerRef: Ref<HTMLDivElement> = createRef()\n\tprivate contentRef: Ref<HTMLElement> = createRef()\n\tprivate iconRef: Ref<HTMLElement> = createRef()\n\n\t// Current animation reference\n\tprivate currentAnimation?: Animation\n\n\t// Animation configuration\n\tprivate readonly ANIMATION_CONFIG = {\n\t\tdurations: {\n\t\t\texpand: 350,\n\t\t\tminimize: 250,\n\t\t\thide: 200,\n\t\t\tcontent: 300,\n\t\t},\n\t\teasing: {\n\t\t\temphasized: 'cubic-bezier(0.2, 0.0, 0, 1.0)',\n\t\t\tdecelerate: 'cubic-bezier(0.05, 0.7, 0.1, 1.0)',\n\t\t\taccelerate: 'cubic-bezier(0.3, 0.0, 0.8, 0.15)',\n\t\t\tstandard: 'cubic-bezier(0.4, 0.0, 0.2, 1)',\n\t\t},\n\t\tshadows: {\n\t\t\tfab: '0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)',\n\t\t\tfabLowered: '0px 1px 3px 0px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 2px 1px -1px rgba(0, 0, 0, 0.12)',\n\t\t\texpanded: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n\t\t}\n\t}\n\n\t// Reactive state for template\n\t@state() private currentState: BoatState = 'minimized'\n\t@state() private isContentVisible: boolean = false\n\t@state() private isAnimating: boolean = false\n\t@state() private isLowered: boolean = false\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.setupUnifiedPipeline()\n\t}\n\n\tprivate setupUnifiedPipeline() {\n\t\t// Create resize stream\n\t\tconst resize$ = typeof window !== 'undefined'\n\t\t\t? fromEvent(window, 'resize').pipe(\n\t\t\t\tdebounceTime(100),\n\t\t\t\tfilter(() => this.currentState === 'expanded'),\n\t\t\t\ttap(() => this.stateChange$.next({\n\t\t\t\t\tsource: 'resize',\n\t\t\t\t\ttype: 'resize'\n\t\t\t\t}))\n\t\t\t)\n\t\t\t: EMPTY\n\n\t\t// SINGLE UNIFIED PIPELINE - All state management in ONE place\n\t\tmerge(\n\t\t\t// Initial state\n\t\t\tof({\n\t\t\t\tsource: 'internal' as const,\n\t\t\t\ttarget: 'minimized' as BoatState,\n\t\t\t\ttype: 'state' as const\n\t\t\t}),\n\t\t\t// All state changes\n\t\t\tthis.stateChange$,\n\t\t\t// Window resize events\n\t\t\tresize$\n\t\t).pipe(\n\t\t\t// Accumulate state and handle all changes\n\t\t\tscan((state, event: StateChangeEvent) => {\n\t\t\t\t// Handle different event types\n\t\t\t\tif (event.type === 'resize' && this.currentState === 'expanded') {\n\t\t\t\t\t// Just update width, no animation needed\n\t\t\t\t\tthis.updateExpandedWidth()\n\t\t\t\t\treturn { ...state, resized: true }\n\t\t\t\t}\n\n\t\t\t\tif (event.type === 'lowered') {\n\t\t\t\t\t// Update lowered state\n\t\t\t\t\treturn { ...state, lowered: !state.lowered }\n\t\t\t\t}\n\n\t\t\t\t// Handle state changes\n\t\t\t\tif (event.type === 'state' && event.target && event.target !== state.current) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\tprevious: state.current,\n\t\t\t\t\t\tcurrent: event.target,\n\t\t\t\t\t\tpending: true,\n\t\t\t\t\t\tsource: event.source\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn state\n\t\t\t}, {\n\t\t\t\tcurrent: 'minimized' as BoatState,\n\t\t\t\tprevious: 'minimized' as BoatState,\n\t\t\t\tpending: false,\n\t\t\t\tlowered: false,\n\t\t\t\tresized: false,\n\t\t\t\tsource: 'internal' as 'internal' | 'external' | 'resize'\n\t\t\t}),\n\n\t\t\t// Only process when there's a pending state change\n\t\t\ttap(state => {\n\t\t\t\t// Always update lowered state\n\t\t\t\tthis.isLowered = state.lowered\n\t\t\t}),\n\n\t\t\t// Handle animations for state transitions\n\t\t\tswitchMap(state => {\n\t\t\t\tif (!state.pending || this.isAnimating) {\n\t\t\t\t\treturn of(state)\n\t\t\t\t}\n\n\t\t\t\t// Mark as animating\n\t\t\t\tthis.isAnimating = true\n\n\t\t\t\t// Animate the transition\n\t\t\t\treturn this.animateTransition(state.previous, state.current).pipe(\n\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t// Update state after animation completes\n\t\t\t\t\t\tthis.currentState = state.current\n\t\t\t\t\t\tthis.isContentVisible = state.current === 'expanded'\n\n\t\t\t\t\t\t// Dispatch event\n\t\t\t\t\t\tthis.dispatchEvent(new CustomEvent('toggle', {\n\t\t\t\t\t\t\tdetail: state.current,\n\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t}))\n\t\t\t\t\t}),\n\t\t\t\t\tcatchError(err => {\n\t\t\t\t\t\tconsole.warn('Animation error:', err)\n\t\t\t\t\t\t// Still update state even if animation fails\n\t\t\t\t\t\tthis.currentState = state.current\n\t\t\t\t\t\tthis.isContentVisible = state.current === 'expanded'\n\t\t\t\t\t\treturn of(state)\n\t\t\t\t\t}),\n\t\t\t\t\tfinalize(() => {\n\t\t\t\t\t\tthis.isAnimating = false\n\t\t\t\t\t}),\n\t\t\t\t\t// Return the state for next iteration\n\t\t\t\t\ttap(() => state.pending = false)\n\t\t\t\t)\n\t\t\t}),\n\n\t\t\t// Share the pipeline result\n\t\t\tshareReplay(1),\n\t\t\ttakeUntil(this.disconnecting)\n\t\t).subscribe()\n\t}\n\n\t// Simplified animation transition method\n\tprivate animateTransition(fromState: BoatState, toState: BoatState) {\n\t\treturn of({ fromState, toState }).pipe(\n\t\t\ttap(() => this.currentAnimation?.cancel()),\n\t\t\tswitchMap(({ fromState, toState }) => {\n\t\t\t\tconst container = this.containerRef.value\n\t\t\t\tif (!container) return EMPTY\n\n\t\t\t\t// Update content visibility before expand, after minimize\n\t\t\t\tif (toState === 'expanded') {\n\t\t\t\t\tthis.isContentVisible = true\n\t\t\t\t}\n\n\t\t\t\t// Create animation based on target state\n\t\t\t\tconst animations = this.createAnimations(fromState, toState)\n\n\t\t\t\t// Execute animations and return completion promise\n\t\t\t\treturn new Promise<void>((resolve) => {\n\t\t\t\t\tconst mainAnimation = animations.container\n\t\t\t\t\tif (mainAnimation) {\n\t\t\t\t\t\tthis.currentAnimation = mainAnimation\n\t\t\t\t\t\tmainAnimation.finished.then(() => {\n\t\t\t\t\t\t\tif (toState !== 'expanded') {\n\t\t\t\t\t\t\t\tthis.isContentVisible = false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t}).catch(() => resolve())\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t\t)\n\t}\n\n\t// Create animations for state transition\n\tprivate createAnimations(fromState: BoatState, toState: BoatState) {\n\t\tconst container = this.containerRef.value\n\t\tconst content = this.contentRef.value\n\t\tconst icon = this.iconRef.value\n\t\tconst animations: { container?: Animation; content?: Animation; icon?: Animation } = {}\n\n\t\tif (!container) return animations\n\n\t\tconst config = this.ANIMATION_CONFIG\n\t\tconst fromStyles = this.getStyleForState(fromState)\n\t\tconst toStyles = this.getStyleForState(toState)\n\n\t\t// Container animation\n\t\tif (toState === 'expanded') {\n\t\t\t// Add bounce effect for expand\n\t\t\tanimations.container = container.animate([\n\t\t\t\tfromStyles,\n\t\t\t\t{ ...toStyles, transform: 'translate3d(0, -8px, 0)', offset: 0.7 },\n\t\t\t\ttoStyles,\n\t\t\t], {\n\t\t\t\tduration: config.durations.expand,\n\t\t\t\teasing: config.easing.decelerate,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t} else {\n\t\t\tanimations.container = container.animate([fromStyles, toStyles], {\n\t\t\t\tduration: toState === 'hidden' ? config.durations.hide : config.durations.minimize,\n\t\t\t\teasing: config.easing.accelerate,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t}\n\n\t\t// Content animation (only for expand/minimize transitions)\n\t\tif (content && fromState === 'expanded' && toState === 'minimized') {\n\t\t\t// Fade out content before minimizing\n\t\t\tcontent.animate([\n\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t{ opacity: 0, transform: 'translateY(-8px)' },\n\t\t\t], {\n\t\t\t\tduration: 150,\n\t\t\t\teasing: config.easing.standard,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t} else if (content && toState === 'expanded') {\n\t\t\t// Fade in content when expanding\n\t\t\tcontent.animate([\n\t\t\t\t{ opacity: 0, transform: 'translateY(8px)' },\n\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t], {\n\t\t\t\tduration: config.durations.content,\n\t\t\t\teasing: config.easing.standard,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t}\n\n\t\t// Icon rotation animation\n\t\tif (icon) {\n\t\t\tconst isExpanding = toState === 'expanded'\n\t\t\tconst isCollapsing = fromState === 'expanded' && toState === 'minimized'\n\n\t\t\tif (isExpanding || isCollapsing) {\n\t\t\t\ticon.animate([\n\t\t\t\t\t{ transform: isExpanding ? 'rotate(0deg)' : 'rotate(180deg)' },\n\t\t\t\t\t{ transform: isExpanding ? 'rotate(180deg)' : 'rotate(0deg)' },\n\t\t\t\t], {\n\t\t\t\t\tduration: 250,\n\t\t\t\t\teasing: config.easing.emphasized,\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\treturn animations\n\t}\n\n\t// Get styles for a specific state\n\tprivate getStyleForState(state: BoatState): Keyframe {\n\t\tconst { shadows } = this.ANIMATION_CONFIG\n\t\tconst baseStyles = {\n\t\t\twidth: '300px',\n\t\t\tmaxWidth: '300px',\n\t\t\tmaxHeight: 'auto',\n\t\t\tborderRadius: '16px',\n\t\t}\n\n\t\tconst stateStyles: Record<BoatState, Keyframe> = {\n\t\t\thidden: {\n\t\t\t\t...baseStyles,\n\t\t\t\ttransform: 'translate3d(0, calc(100% + 16px), 0)',\n\t\t\t\tboxShadow: 'none',\n\t\t\t\tbackdropFilter: 'none',\n\t\t\t},\n\t\t\tminimized: {\n\t\t\t\t...baseStyles,\n\t\t\t\ttransform: 'translate3d(0, calc(100% - 56px), 0)',\n\t\t\t\tboxShadow: this.isLowered ? shadows.fabLowered : shadows.fab,\n\t\t\t\tbackdropFilter: 'none',\n\t\t\t},\n\t\t\texpanded: {\n\t\t\t\ttransform: 'translate3d(0, 0, 0)',\n\t\t\t\twidth: this.getResponsiveWidth(),\n\t\t\t\tmaxWidth: '100%',\n\t\t\t\tmaxHeight: '80vh',\n\t\t\t\tboxShadow: shadows.expanded,\n\t\t\t\tborderRadius: '8px 8px 0 0',\n\t\t\t\tbackdropFilter: 'blur(12px)',\n\t\t\t},\n\t\t}\n\n\t\treturn stateStyles[state] as Keyframe\n\t}\n\n\t// Calculate responsive width based on viewport\n\tprivate getResponsiveWidth(): string {\n\t\tif (typeof window === 'undefined') return '40vw'\n\n\t\tconst vw = window.innerWidth\n\t\tif (vw < 768) return 'calc(100vw - 32px)'\n\t\tif (vw < 1024) return '70vw'\n\t\tif (vw < 1280) return '60vw'\n\t\treturn '40vw'\n\t}\n\n\t// Update expanded width on window resize\n\tprivate updateExpandedWidth() {\n\t\tconst container = this.containerRef.value\n\t\tif (container && this.currentState === 'expanded') {\n\t\t\tcontainer.style.width = this.getResponsiveWidth()\n\t\t}\n\t}\n\n\t// Initialize component styles after first render\n\tfirstUpdated() {\n\t\t// Apply initial styles\n\t\tthis.applyInitialStyles()\n\t}\n\n\t// Apply initial styles to elements\n\tprivate applyInitialStyles() {\n\t\tconst container = this.containerRef.value\n\t\tconst content = this.contentRef.value\n\t\tconst icon = this.iconRef.value\n\n\t\tif (container) {\n\t\t\tconst initialStyle = this.getStyleForState(this.currentState)\n\t\t\tObject.assign(container.style, initialStyle)\n\n\t\t\t// Safari compatibility for backdrop filter\n\t\t\tif ('webkitBackdropFilter' in container.style) {\n\t\t\t\t(container.style as any).webkitBackdropFilter = initialStyle.backdropFilter\n\t\t\t}\n\t\t}\n\n\t\t// Set initial content opacity\n\t\tif (content) {\n\t\t\tcontent.style.opacity = this.isContentVisible ? '1' : '0'\n\t\t}\n\n\t\t// Set initial icon rotation\n\t\tif (icon && this.currentState === 'expanded') {\n\t\t\ticon.style.transform = 'rotate(180deg)'\n\t\t}\n\t}\n\n\t// Public method to toggle between minimized and expanded\n\ttoggleState() {\n\t\tconst newState = this.currentState === 'minimized' ? 'expanded' : 'minimized'\n\t\tthis.stateChange$.next({\n\t\t\tsource: 'internal',\n\t\t\ttarget: newState,\n\t\t\ttype: 'state'\n\t\t})\n\t}\n\n\t// Public method to close (hide) the boat\n\tclose() {\n\t\tthis.stateChange$.next({\n\t\t\tsource: 'internal',\n\t\t\ttarget: 'hidden',\n\t\t\ttype: 'state'\n\t\t})\n\t}\n\n\t// Cleanup on component disconnect\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.currentAnimation?.cancel()\n\t\tthis.stateChange$.complete()\n\t}\n\n\t// Render the component\n\tprotected render(): unknown {\n\t\t// Calculate dynamic values\n\t\tconst surfaceElevation = this.currentState === 'minimized'\n\t\t\t? (this.isLowered ? '1' : '3')\n\t\t\t: '4'\n\t\tconst isMinimized = this.currentState === 'minimized'\n\t\tconst iconName = isMinimized ? 'expand_less' : 'expand_more'\n\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=\"boat-container z-[9999] fixed bottom-4 right-4 overflow-y-auto flex flex-col\"\n\t\t\t\t${ref(this.containerRef)}\n\t\t\t>\n\t\t\t\t<!-- Header section -->\n\t\t\t\t<section class=\"sticky top-0 z-10\">\n\t\t\t\t\t<schmancy-surface\n\t\t\t\t\t\televation=\"${surfaceElevation}\"\n\t\t\t\t\t\tclass=\"cursor-pointer\"\n\t\t\t\t\t\trounded=\"${isMinimized ? 'none' : 'top'}\"\n\t\t\t\t\t\ttype=\"containerLowest\"\n\t\t\t\t\t\t@click=${() => this.toggleState()}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div class=\"sticky top-0 px-3 py-2 flex items-center justify-between gap-3\">\n\t\t\t\t\t\t\t<!-- Header content slot -->\n\t\t\t\t\t\t\t<div class=\"flex-1 flex items-center min-w-0\">\n\t\t\t\t\t\t\t\t<slot name=\"header\"></slot>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<!-- Control buttons -->\n\t\t\t\t\t\t\t<div class=\"flex items-center gap-1 flex-shrink-0\">\n\t\t\t\t\t\t\t\t<!-- Toggle button -->\n\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\tvariant=\"${isMinimized ? 'text' : 'filled tonal'}\"\n\t\t\t\t\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\tthis.toggleState()\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\ttitle=${isMinimized ? 'Expand' : 'Minimize'}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span class=\"icon-container\" ${ref(this.iconRef)}>\n\t\t\t\t\t\t\t\t\t\t${iconName}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</schmancy-icon-button>\n\n\t\t\t\t\t\t\t\t<!-- Close button -->\n\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\tthis.close()\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\ttitle=\"Close\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tclose\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</div>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</section>\n\n\t\t\t\t<!-- Content section -->\n\t\t\t\t<schmancy-surface\n\t\t\t\t\t.hidden=${!this.isContentVisible}\n\t\t\t\t\ttype=\"containerLow\"\n\t\t\t\t\tclass=\"boat-content z-0 flex-1\"\n\t\t\t\t\t${ref(this.contentRef)}\n\t\t\t\t>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</schmancy-surface>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-boat': SchmancyBoat\n\t}\n}"],"names":["SchmancyBoat","TailwindElement","css","super","arguments","this","stateChange$","Subject","containerRef","createRef","contentRef","iconRef","ANIMATION_CONFIG","durations","expand","minimize","hide","content","easing","emphasized","decelerate","accelerate","standard","shadows","fab","fabLowered","expanded","currentState","isContentVisible","isAnimating","isLowered","state","value","next","source","target","type","connectedCallback","setupUnifiedPipeline","resize$","window","fromEvent","pipe","debounceTime","filter","tap","EMPTY","merge","of","scan","event","updateExpandedWidth","resized","lowered","current","previous","pending","switchMap","animateTransition","dispatchEvent","CustomEvent","detail","bubbles","composed","catchError","err","finalize","shareReplay","takeUntil","disconnecting","subscribe","fromState","toState","currentAnimation","cancel","animations","createAnimations","Promise","resolve","mainAnimation","container","finished","then","catch","icon","config","fromStyles","getStyleForState","toStyles","animate","transform","offset","duration","fill","opacity","isExpanding","baseStyles","width","maxWidth","maxHeight","borderRadius","hidden","boxShadow","backdropFilter","minimized","getResponsiveWidth","vw","innerWidth","style","applyInitialStyles","initialStyle","Object","assign","webkitBackdropFilter","newState","close","disconnectedCallback","complete","render","surfaceElevation","isMinimized","iconName","html","ref","toggleState","e","stopPropagation","__decorateClass","property","String","reflect","prototype","Boolean","customElement"],"mappings":"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"}
@@ -1,66 +0,0 @@
1
- "use strict";const f=require("./tailwind.mixin-BiRVB4Hl.cjs"),x=require("lit"),d=require("lit/decorators.js"),l=require("lit/directives/ref.js"),o=require("rxjs"),s=require("rxjs/operators");var g=Object.defineProperty,y=Object.getOwnPropertyDescriptor,p=(t,e,i,n)=>{for(var c,r=n>1?void 0:n?y(e,i):e,a=t.length-1;a>=0;a--)(c=t[a])&&(r=(n?c(e,i,r):c(r))||r);return n&&r&&g(e,i,r),r};exports.SchmancyBoat=class extends f.TailwindElement(x.css`
2
- /* Performance optimization - GPU hints only */
3
- .boat-container {
4
- will-change: transform, border-radius, width, max-width, box-shadow;
5
- contain: layout style;
6
- transform: translate3d(0, 0, 0); /* Force GPU acceleration */
7
- backface-visibility: hidden;
8
- }
9
- `){constructor(){super(...arguments),this.stateChange$=new o.Subject,this.containerRef=l.createRef(),this.contentRef=l.createRef(),this.iconRef=l.createRef(),this.ANIMATION_CONFIG={durations:{expand:350,minimize:250,hide:200,content:300},easing:{emphasized:"cubic-bezier(0.2, 0.0, 0, 1.0)",decelerate:"cubic-bezier(0.05, 0.7, 0.1, 1.0)",accelerate:"cubic-bezier(0.3, 0.0, 0.8, 0.15)",standard:"cubic-bezier(0.4, 0.0, 0.2, 1)"},shadows:{fab:"0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)",fabLowered:"0px 1px 3px 0px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 2px 1px -1px rgba(0, 0, 0, 0.12)",expanded:"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)"}},this.currentState="minimized",this.isContentVisible=!1,this.isAnimating=!1,this.isLowered=!1}get state(){return this.currentState}set state(t){this.stateChange$.next({source:"external",target:t,type:"state"})}get lowered(){return this.isLowered}set lowered(t){this.stateChange$.next({source:"external",target:this.currentState,type:"lowered"}),this.isLowered=t}connectedCallback(){super.connectedCallback(),this.setupUnifiedPipeline()}setupUnifiedPipeline(){const t=typeof window<"u"?o.fromEvent(window,"resize").pipe(s.debounceTime(100),s.filter(()=>this.currentState==="expanded"),s.tap(()=>this.stateChange$.next({source:"resize",type:"resize"}))):o.EMPTY;o.merge(o.of({source:"internal",target:"minimized",type:"state"}),this.stateChange$,t).pipe(s.scan((e,i)=>i.type==="resize"&&this.currentState==="expanded"?(this.updateExpandedWidth(),{...e,resized:!0}):i.type==="lowered"?{...e,lowered:!e.lowered}:i.type==="state"&&i.target&&i.target!==e.current?{...e,previous:e.current,current:i.target,pending:!0,source:i.source}:e,{current:"minimized",previous:"minimized",pending:!1,lowered:!1,resized:!1,source:"internal"}),s.tap(e=>{this.isLowered=e.lowered}),s.switchMap(e=>!e.pending||this.isAnimating?o.of(e):(this.isAnimating=!0,this.animateTransition(e.previous,e.current).pipe(s.tap(()=>{this.currentState=e.current,this.isContentVisible=e.current==="expanded",this.dispatchEvent(new CustomEvent("toggle",{detail:e.current,bubbles:!0,composed:!0}))}),s.catchError(i=>(this.currentState=e.current,this.isContentVisible=e.current==="expanded",o.of(e))),s.finalize(()=>{this.isAnimating=!1}),s.tap(()=>e.pending=!1)))),s.shareReplay(1),s.takeUntil(this.disconnecting)).subscribe()}animateTransition(t,e){return o.of({fromState:t,toState:e}).pipe(s.tap(()=>this.currentAnimation?.cancel()),s.switchMap(({fromState:i,toState:n})=>{if(!this.containerRef.value)return o.EMPTY;n==="expanded"&&(this.isContentVisible=!0);const c=this.createAnimations(i,n);return new Promise(r=>{const a=c.container;a?(this.currentAnimation=a,a.finished.then(()=>{n!=="expanded"&&(this.isContentVisible=!1),r()}).catch(()=>r())):r()})}))}createAnimations(t,e){const i=this.containerRef.value,n=this.contentRef.value,c=this.iconRef.value,r={};if(!i)return r;const a=this.ANIMATION_CONFIG,m=this.getStyleForState(t),h=this.getStyleForState(e);if(r.container=e==="expanded"?i.animate([m,{...h,transform:"translate3d(0, -8px, 0)",offset:.7},h],{duration:a.durations.expand,easing:a.easing.decelerate,fill:"forwards"}):i.animate([m,h],{duration:e==="hidden"?a.durations.hide:a.durations.minimize,easing:a.easing.accelerate,fill:"forwards"}),n&&t==="expanded"&&e==="minimized"?n.animate([{opacity:1,transform:"translateY(0)"},{opacity:0,transform:"translateY(-8px)"}],{duration:150,easing:a.easing.standard,fill:"forwards"}):n&&e==="expanded"&&n.animate([{opacity:0,transform:"translateY(8px)"},{opacity:1,transform:"translateY(0)"}],{duration:a.durations.content,easing:a.easing.standard,fill:"forwards"}),c){const u=e==="expanded";(u||t==="expanded"&&e==="minimized")&&c.animate([{transform:u?"rotate(0deg)":"rotate(180deg)"},{transform:u?"rotate(180deg)":"rotate(0deg)"}],{duration:250,easing:a.easing.emphasized,fill:"forwards"})}return r}getStyleForState(t){const{shadows:e}=this.ANIMATION_CONFIG,i={width:"300px",maxWidth:"300px",maxHeight:"auto",borderRadius:"16px"};return{hidden:{...i,transform:"translate3d(0, calc(100% + 16px), 0)",boxShadow:"none",backdropFilter:"none"},minimized:{...i,transform:"translate3d(0, calc(100% - 56px), 0)",boxShadow:this.isLowered?e.fabLowered:e.fab,backdropFilter:"none"},expanded:{transform:"translate3d(0, 0, 0)",width:this.getResponsiveWidth(),maxWidth:"100%",maxHeight:"80vh",boxShadow:e.expanded,borderRadius:"8px 8px 0 0",backdropFilter:"blur(12px)"}}[t]}getResponsiveWidth(){if(typeof window>"u")return"40vw";const t=window.innerWidth;return t<768?"calc(100vw - 32px)":t<1024?"70vw":t<1280?"60vw":"40vw"}updateExpandedWidth(){const t=this.containerRef.value;t&&this.currentState==="expanded"&&(t.style.width=this.getResponsiveWidth())}firstUpdated(){this.applyInitialStyles()}applyInitialStyles(){const t=this.containerRef.value,e=this.contentRef.value,i=this.iconRef.value;if(t){const n=this.getStyleForState(this.currentState);Object.assign(t.style,n),"webkitBackdropFilter"in t.style&&(t.style.webkitBackdropFilter=n.backdropFilter)}e&&(e.style.opacity=this.isContentVisible?"1":"0"),i&&this.currentState==="expanded"&&(i.style.transform="rotate(180deg)")}toggleState(){const t=this.currentState==="minimized"?"expanded":"minimized";this.stateChange$.next({source:"internal",target:t,type:"state"})}close(){this.stateChange$.next({source:"internal",target:"hidden",type:"state"})}disconnectedCallback(){super.disconnectedCallback(),this.currentAnimation?.cancel(),this.stateChange$.complete()}render(){const t=this.currentState==="minimized"?this.isLowered?"1":"3":"4",e=this.currentState==="minimized",i=e?"expand_less":"expand_more";return x.html`
10
- <div
11
- class="boat-container z-[9999] fixed bottom-4 right-4 overflow-y-auto flex flex-col"
12
- ${l.ref(this.containerRef)}
13
- >
14
- <!-- Header section -->
15
- <section class="sticky top-0 z-10">
16
- <schmancy-surface
17
- elevation="${t}"
18
- class="cursor-pointer"
19
- rounded="${e?"none":"top"}"
20
- type="containerLowest"
21
- @click=${()=>this.toggleState()}
22
- >
23
- <div class="sticky top-0 px-3 py-2 flex items-center justify-between gap-3">
24
- <!-- Header content slot -->
25
- <div class="flex-1 flex items-center min-w-0">
26
- <slot name="header"></slot>
27
- </div>
28
-
29
- <!-- Control buttons -->
30
- <div class="flex items-center gap-1 flex-shrink-0">
31
- <!-- Toggle button -->
32
- <schmancy-icon-button
33
- variant="${e?"text":"filled tonal"}"
34
- @click=${n=>{n.stopPropagation(),this.toggleState()}}
35
- title=${e?"Expand":"Minimize"}
36
- >
37
- <span class="icon-container" ${l.ref(this.iconRef)}>
38
- ${i}
39
- </span>
40
- </schmancy-icon-button>
41
-
42
- <!-- Close button -->
43
- <schmancy-icon-button
44
- variant="text"
45
- @click=${n=>{n.stopPropagation(),this.close()}}
46
- title="Close"
47
- >
48
- close
49
- </schmancy-icon-button>
50
- </div>
51
- </div>
52
- </schmancy-surface>
53
- </section>
54
-
55
- <!-- Content section -->
56
- <schmancy-surface
57
- .hidden=${!this.isContentVisible}
58
- type="containerLow"
59
- class="boat-content z-0 flex-1"
60
- ${l.ref(this.contentRef)}
61
- >
62
- <slot></slot>
63
- </schmancy-surface>
64
- </div>
65
- `}},p([d.property({type:String,reflect:!0})],exports.SchmancyBoat.prototype,"state",1),p([d.property({type:Boolean,reflect:!0})],exports.SchmancyBoat.prototype,"lowered",1),p([d.state()],exports.SchmancyBoat.prototype,"currentState",2),p([d.state()],exports.SchmancyBoat.prototype,"isContentVisible",2),p([d.state()],exports.SchmancyBoat.prototype,"isAnimating",2),p([d.state()],exports.SchmancyBoat.prototype,"isLowered",2),exports.SchmancyBoat=p([d.customElement("schmancy-boat")],exports.SchmancyBoat);
66
- //# sourceMappingURL=boat-BtViHW8M.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"boat-BtViHW8M.cjs","sources":["../src/boat/boat.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/tailwind.mixin'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport {\n Subject,\n fromEvent,\n merge,\n of,\n EMPTY\n} from 'rxjs'\nimport {\n filter,\n switchMap,\n takeUntil,\n tap,\n finalize,\n catchError,\n debounceTime,\n scan,\n shareReplay\n} from 'rxjs/operators'\n\ntype BoatState = 'hidden' | 'minimized' | 'expanded'\n\n// State change event for the unified pipeline\ninterface StateChangeEvent {\n\tsource: 'internal' | 'external' | 'resize'\n\ttarget?: BoatState\n\ttype: 'state' | 'lowered' | 'resize'\n}\n\n@customElement('schmancy-boat')\nexport default class SchmancyBoat extends TailwindElement(css`\n\t/* Performance optimization - GPU hints only */\n\t.boat-container {\n\t\twill-change: transform, border-radius, width, max-width, box-shadow;\n\t\tcontain: layout style;\n\t\ttransform: translate3d(0, 0, 0); /* Force GPU acceleration */\n\t\tbackface-visibility: hidden;\n\t}\n`) {\n\t// Public properties - route ALL changes through stateChange$\n\t@property({ type: String, reflect: true })\n\tget state(): BoatState {\n\t\treturn this.currentState\n\t}\n\tset state(value: BoatState) {\n\t\t// Route external state changes through the unified pipeline\n\t\tthis.stateChange$.next({\n\t\t\tsource: 'external',\n\t\t\ttarget: value,\n\t\t\ttype: 'state'\n\t\t})\n\t}\n\n\t@property({ type: Boolean, reflect: true })\n\tget lowered(): boolean {\n\t\treturn this.isLowered\n\t}\n\tset lowered(value: boolean) {\n\t\tthis.stateChange$.next({\n\t\t\tsource: 'external',\n\t\t\ttarget: this.currentState,\n\t\t\ttype: 'lowered'\n\t\t})\n\t\tthis.isLowered = value\n\t}\n\n\t// Single unified state change stream - ALL state changes go through this\n\tprivate stateChange$ = new Subject<StateChangeEvent>()\n\n\t// Element references\n\tprivate containerRef: Ref<HTMLDivElement> = createRef()\n\tprivate contentRef: Ref<HTMLElement> = createRef()\n\tprivate iconRef: Ref<HTMLElement> = createRef()\n\n\t// Current animation reference\n\tprivate currentAnimation?: Animation\n\n\t// Animation configuration\n\tprivate readonly ANIMATION_CONFIG = {\n\t\tdurations: {\n\t\t\texpand: 350,\n\t\t\tminimize: 250,\n\t\t\thide: 200,\n\t\t\tcontent: 300,\n\t\t},\n\t\teasing: {\n\t\t\temphasized: 'cubic-bezier(0.2, 0.0, 0, 1.0)',\n\t\t\tdecelerate: 'cubic-bezier(0.05, 0.7, 0.1, 1.0)',\n\t\t\taccelerate: 'cubic-bezier(0.3, 0.0, 0.8, 0.15)',\n\t\t\tstandard: 'cubic-bezier(0.4, 0.0, 0.2, 1)',\n\t\t},\n\t\tshadows: {\n\t\t\tfab: '0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)',\n\t\t\tfabLowered: '0px 1px 3px 0px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 2px 1px -1px rgba(0, 0, 0, 0.12)',\n\t\t\texpanded: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n\t\t}\n\t}\n\n\t// Reactive state for template\n\t@state() private currentState: BoatState = 'minimized'\n\t@state() private isContentVisible: boolean = false\n\t@state() private isAnimating: boolean = false\n\t@state() private isLowered: boolean = false\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.setupUnifiedPipeline()\n\t}\n\n\tprivate setupUnifiedPipeline() {\n\t\t// Create resize stream\n\t\tconst resize$ = typeof window !== 'undefined'\n\t\t\t? fromEvent(window, 'resize').pipe(\n\t\t\t\tdebounceTime(100),\n\t\t\t\tfilter(() => this.currentState === 'expanded'),\n\t\t\t\ttap(() => this.stateChange$.next({\n\t\t\t\t\tsource: 'resize',\n\t\t\t\t\ttype: 'resize'\n\t\t\t\t}))\n\t\t\t)\n\t\t\t: EMPTY\n\n\t\t// SINGLE UNIFIED PIPELINE - All state management in ONE place\n\t\tmerge(\n\t\t\t// Initial state\n\t\t\tof({\n\t\t\t\tsource: 'internal' as const,\n\t\t\t\ttarget: 'minimized' as BoatState,\n\t\t\t\ttype: 'state' as const\n\t\t\t}),\n\t\t\t// All state changes\n\t\t\tthis.stateChange$,\n\t\t\t// Window resize events\n\t\t\tresize$\n\t\t).pipe(\n\t\t\t// Accumulate state and handle all changes\n\t\t\tscan((state, event: StateChangeEvent) => {\n\t\t\t\t// Handle different event types\n\t\t\t\tif (event.type === 'resize' && this.currentState === 'expanded') {\n\t\t\t\t\t// Just update width, no animation needed\n\t\t\t\t\tthis.updateExpandedWidth()\n\t\t\t\t\treturn { ...state, resized: true }\n\t\t\t\t}\n\n\t\t\t\tif (event.type === 'lowered') {\n\t\t\t\t\t// Update lowered state\n\t\t\t\t\treturn { ...state, lowered: !state.lowered }\n\t\t\t\t}\n\n\t\t\t\t// Handle state changes\n\t\t\t\tif (event.type === 'state' && event.target && event.target !== state.current) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\tprevious: state.current,\n\t\t\t\t\t\tcurrent: event.target,\n\t\t\t\t\t\tpending: true,\n\t\t\t\t\t\tsource: event.source\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn state\n\t\t\t}, {\n\t\t\t\tcurrent: 'minimized' as BoatState,\n\t\t\t\tprevious: 'minimized' as BoatState,\n\t\t\t\tpending: false,\n\t\t\t\tlowered: false,\n\t\t\t\tresized: false,\n\t\t\t\tsource: 'internal' as 'internal' | 'external' | 'resize'\n\t\t\t}),\n\n\t\t\t// Only process when there's a pending state change\n\t\t\ttap(state => {\n\t\t\t\t// Always update lowered state\n\t\t\t\tthis.isLowered = state.lowered\n\t\t\t}),\n\n\t\t\t// Handle animations for state transitions\n\t\t\tswitchMap(state => {\n\t\t\t\tif (!state.pending || this.isAnimating) {\n\t\t\t\t\treturn of(state)\n\t\t\t\t}\n\n\t\t\t\t// Mark as animating\n\t\t\t\tthis.isAnimating = true\n\n\t\t\t\t// Animate the transition\n\t\t\t\treturn this.animateTransition(state.previous, state.current).pipe(\n\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t// Update state after animation completes\n\t\t\t\t\t\tthis.currentState = state.current\n\t\t\t\t\t\tthis.isContentVisible = state.current === 'expanded'\n\n\t\t\t\t\t\t// Dispatch event\n\t\t\t\t\t\tthis.dispatchEvent(new CustomEvent('toggle', {\n\t\t\t\t\t\t\tdetail: state.current,\n\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t}))\n\t\t\t\t\t}),\n\t\t\t\t\tcatchError(err => {\n\t\t\t\t\t\tconsole.warn('Animation error:', err)\n\t\t\t\t\t\t// Still update state even if animation fails\n\t\t\t\t\t\tthis.currentState = state.current\n\t\t\t\t\t\tthis.isContentVisible = state.current === 'expanded'\n\t\t\t\t\t\treturn of(state)\n\t\t\t\t\t}),\n\t\t\t\t\tfinalize(() => {\n\t\t\t\t\t\tthis.isAnimating = false\n\t\t\t\t\t}),\n\t\t\t\t\t// Return the state for next iteration\n\t\t\t\t\ttap(() => state.pending = false)\n\t\t\t\t)\n\t\t\t}),\n\n\t\t\t// Share the pipeline result\n\t\t\tshareReplay(1),\n\t\t\ttakeUntil(this.disconnecting)\n\t\t).subscribe()\n\t}\n\n\t// Simplified animation transition method\n\tprivate animateTransition(fromState: BoatState, toState: BoatState) {\n\t\treturn of({ fromState, toState }).pipe(\n\t\t\ttap(() => this.currentAnimation?.cancel()),\n\t\t\tswitchMap(({ fromState, toState }) => {\n\t\t\t\tconst container = this.containerRef.value\n\t\t\t\tif (!container) return EMPTY\n\n\t\t\t\t// Update content visibility before expand, after minimize\n\t\t\t\tif (toState === 'expanded') {\n\t\t\t\t\tthis.isContentVisible = true\n\t\t\t\t}\n\n\t\t\t\t// Create animation based on target state\n\t\t\t\tconst animations = this.createAnimations(fromState, toState)\n\n\t\t\t\t// Execute animations and return completion promise\n\t\t\t\treturn new Promise<void>((resolve) => {\n\t\t\t\t\tconst mainAnimation = animations.container\n\t\t\t\t\tif (mainAnimation) {\n\t\t\t\t\t\tthis.currentAnimation = mainAnimation\n\t\t\t\t\t\tmainAnimation.finished.then(() => {\n\t\t\t\t\t\t\tif (toState !== 'expanded') {\n\t\t\t\t\t\t\t\tthis.isContentVisible = false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t}).catch(() => resolve())\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t\t)\n\t}\n\n\t// Create animations for state transition\n\tprivate createAnimations(fromState: BoatState, toState: BoatState) {\n\t\tconst container = this.containerRef.value\n\t\tconst content = this.contentRef.value\n\t\tconst icon = this.iconRef.value\n\t\tconst animations: { container?: Animation; content?: Animation; icon?: Animation } = {}\n\n\t\tif (!container) return animations\n\n\t\tconst config = this.ANIMATION_CONFIG\n\t\tconst fromStyles = this.getStyleForState(fromState)\n\t\tconst toStyles = this.getStyleForState(toState)\n\n\t\t// Container animation\n\t\tif (toState === 'expanded') {\n\t\t\t// Add bounce effect for expand\n\t\t\tanimations.container = container.animate([\n\t\t\t\tfromStyles,\n\t\t\t\t{ ...toStyles, transform: 'translate3d(0, -8px, 0)', offset: 0.7 },\n\t\t\t\ttoStyles,\n\t\t\t], {\n\t\t\t\tduration: config.durations.expand,\n\t\t\t\teasing: config.easing.decelerate,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t} else {\n\t\t\tanimations.container = container.animate([fromStyles, toStyles], {\n\t\t\t\tduration: toState === 'hidden' ? config.durations.hide : config.durations.minimize,\n\t\t\t\teasing: config.easing.accelerate,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t}\n\n\t\t// Content animation (only for expand/minimize transitions)\n\t\tif (content && fromState === 'expanded' && toState === 'minimized') {\n\t\t\t// Fade out content before minimizing\n\t\t\tcontent.animate([\n\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t{ opacity: 0, transform: 'translateY(-8px)' },\n\t\t\t], {\n\t\t\t\tduration: 150,\n\t\t\t\teasing: config.easing.standard,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t} else if (content && toState === 'expanded') {\n\t\t\t// Fade in content when expanding\n\t\t\tcontent.animate([\n\t\t\t\t{ opacity: 0, transform: 'translateY(8px)' },\n\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t], {\n\t\t\t\tduration: config.durations.content,\n\t\t\t\teasing: config.easing.standard,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t}\n\n\t\t// Icon rotation animation\n\t\tif (icon) {\n\t\t\tconst isExpanding = toState === 'expanded'\n\t\t\tconst isCollapsing = fromState === 'expanded' && toState === 'minimized'\n\n\t\t\tif (isExpanding || isCollapsing) {\n\t\t\t\ticon.animate([\n\t\t\t\t\t{ transform: isExpanding ? 'rotate(0deg)' : 'rotate(180deg)' },\n\t\t\t\t\t{ transform: isExpanding ? 'rotate(180deg)' : 'rotate(0deg)' },\n\t\t\t\t], {\n\t\t\t\t\tduration: 250,\n\t\t\t\t\teasing: config.easing.emphasized,\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\treturn animations\n\t}\n\n\t// Get styles for a specific state\n\tprivate getStyleForState(state: BoatState): Keyframe {\n\t\tconst { shadows } = this.ANIMATION_CONFIG\n\t\tconst baseStyles = {\n\t\t\twidth: '300px',\n\t\t\tmaxWidth: '300px',\n\t\t\tmaxHeight: 'auto',\n\t\t\tborderRadius: '16px',\n\t\t}\n\n\t\tconst stateStyles: Record<BoatState, Keyframe> = {\n\t\t\thidden: {\n\t\t\t\t...baseStyles,\n\t\t\t\ttransform: 'translate3d(0, calc(100% + 16px), 0)',\n\t\t\t\tboxShadow: 'none',\n\t\t\t\tbackdropFilter: 'none',\n\t\t\t},\n\t\t\tminimized: {\n\t\t\t\t...baseStyles,\n\t\t\t\ttransform: 'translate3d(0, calc(100% - 56px), 0)',\n\t\t\t\tboxShadow: this.isLowered ? shadows.fabLowered : shadows.fab,\n\t\t\t\tbackdropFilter: 'none',\n\t\t\t},\n\t\t\texpanded: {\n\t\t\t\ttransform: 'translate3d(0, 0, 0)',\n\t\t\t\twidth: this.getResponsiveWidth(),\n\t\t\t\tmaxWidth: '100%',\n\t\t\t\tmaxHeight: '80vh',\n\t\t\t\tboxShadow: shadows.expanded,\n\t\t\t\tborderRadius: '8px 8px 0 0',\n\t\t\t\tbackdropFilter: 'blur(12px)',\n\t\t\t},\n\t\t}\n\n\t\treturn stateStyles[state] as Keyframe\n\t}\n\n\t// Calculate responsive width based on viewport\n\tprivate getResponsiveWidth(): string {\n\t\tif (typeof window === 'undefined') return '40vw'\n\n\t\tconst vw = window.innerWidth\n\t\tif (vw < 768) return 'calc(100vw - 32px)'\n\t\tif (vw < 1024) return '70vw'\n\t\tif (vw < 1280) return '60vw'\n\t\treturn '40vw'\n\t}\n\n\t// Update expanded width on window resize\n\tprivate updateExpandedWidth() {\n\t\tconst container = this.containerRef.value\n\t\tif (container && this.currentState === 'expanded') {\n\t\t\tcontainer.style.width = this.getResponsiveWidth()\n\t\t}\n\t}\n\n\t// Initialize component styles after first render\n\tfirstUpdated() {\n\t\t// Apply initial styles\n\t\tthis.applyInitialStyles()\n\t}\n\n\t// Apply initial styles to elements\n\tprivate applyInitialStyles() {\n\t\tconst container = this.containerRef.value\n\t\tconst content = this.contentRef.value\n\t\tconst icon = this.iconRef.value\n\n\t\tif (container) {\n\t\t\tconst initialStyle = this.getStyleForState(this.currentState)\n\t\t\tObject.assign(container.style, initialStyle)\n\n\t\t\t// Safari compatibility for backdrop filter\n\t\t\tif ('webkitBackdropFilter' in container.style) {\n\t\t\t\t(container.style as any).webkitBackdropFilter = initialStyle.backdropFilter\n\t\t\t}\n\t\t}\n\n\t\t// Set initial content opacity\n\t\tif (content) {\n\t\t\tcontent.style.opacity = this.isContentVisible ? '1' : '0'\n\t\t}\n\n\t\t// Set initial icon rotation\n\t\tif (icon && this.currentState === 'expanded') {\n\t\t\ticon.style.transform = 'rotate(180deg)'\n\t\t}\n\t}\n\n\t// Public method to toggle between minimized and expanded\n\ttoggleState() {\n\t\tconst newState = this.currentState === 'minimized' ? 'expanded' : 'minimized'\n\t\tthis.stateChange$.next({\n\t\t\tsource: 'internal',\n\t\t\ttarget: newState,\n\t\t\ttype: 'state'\n\t\t})\n\t}\n\n\t// Public method to close (hide) the boat\n\tclose() {\n\t\tthis.stateChange$.next({\n\t\t\tsource: 'internal',\n\t\t\ttarget: 'hidden',\n\t\t\ttype: 'state'\n\t\t})\n\t}\n\n\t// Cleanup on component disconnect\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.currentAnimation?.cancel()\n\t\tthis.stateChange$.complete()\n\t}\n\n\t// Render the component\n\tprotected render(): unknown {\n\t\t// Calculate dynamic values\n\t\tconst surfaceElevation = this.currentState === 'minimized'\n\t\t\t? (this.isLowered ? '1' : '3')\n\t\t\t: '4'\n\t\tconst isMinimized = this.currentState === 'minimized'\n\t\tconst iconName = isMinimized ? 'expand_less' : 'expand_more'\n\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=\"boat-container z-[9999] fixed bottom-4 right-4 overflow-y-auto flex flex-col\"\n\t\t\t\t${ref(this.containerRef)}\n\t\t\t>\n\t\t\t\t<!-- Header section -->\n\t\t\t\t<section class=\"sticky top-0 z-10\">\n\t\t\t\t\t<schmancy-surface\n\t\t\t\t\t\televation=\"${surfaceElevation}\"\n\t\t\t\t\t\tclass=\"cursor-pointer\"\n\t\t\t\t\t\trounded=\"${isMinimized ? 'none' : 'top'}\"\n\t\t\t\t\t\ttype=\"containerLowest\"\n\t\t\t\t\t\t@click=${() => this.toggleState()}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div class=\"sticky top-0 px-3 py-2 flex items-center justify-between gap-3\">\n\t\t\t\t\t\t\t<!-- Header content slot -->\n\t\t\t\t\t\t\t<div class=\"flex-1 flex items-center min-w-0\">\n\t\t\t\t\t\t\t\t<slot name=\"header\"></slot>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<!-- Control buttons -->\n\t\t\t\t\t\t\t<div class=\"flex items-center gap-1 flex-shrink-0\">\n\t\t\t\t\t\t\t\t<!-- Toggle button -->\n\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\tvariant=\"${isMinimized ? 'text' : 'filled tonal'}\"\n\t\t\t\t\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\tthis.toggleState()\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\ttitle=${isMinimized ? 'Expand' : 'Minimize'}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span class=\"icon-container\" ${ref(this.iconRef)}>\n\t\t\t\t\t\t\t\t\t\t${iconName}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</schmancy-icon-button>\n\n\t\t\t\t\t\t\t\t<!-- Close button -->\n\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\tthis.close()\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\ttitle=\"Close\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tclose\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</div>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</section>\n\n\t\t\t\t<!-- Content section -->\n\t\t\t\t<schmancy-surface\n\t\t\t\t\t.hidden=${!this.isContentVisible}\n\t\t\t\t\ttype=\"containerLow\"\n\t\t\t\t\tclass=\"boat-content z-0 flex-1\"\n\t\t\t\t\t${ref(this.contentRef)}\n\t\t\t\t>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</schmancy-surface>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-boat': SchmancyBoat\n\t}\n}"],"names":["SchmancyBoat","TailwindElement","css","constructor","super","arguments","this","stateChange$","Subject","containerRef","createRef","contentRef","iconRef","ANIMATION_CONFIG","durations","expand","minimize","hide","content","easing","emphasized","decelerate","accelerate","standard","shadows","fab","fabLowered","expanded","currentState","isContentVisible","isAnimating","isLowered","value","next","source","target","type","lowered","connectedCallback","setupUnifiedPipeline","resize$","window","fromEvent","pipe","debounceTime","filter","tap","EMPTY","merge","of","scan","state","event","updateExpandedWidth","resized","current","previous","pending","switchMap","animateTransition","dispatchEvent","CustomEvent","detail","bubbles","composed","catchError","err","finalize","shareReplay","takeUntil","disconnecting","subscribe","fromState","toState","currentAnimation","cancel","animations","createAnimations","Promise","resolve","mainAnimation","container","finished","then","catch","icon","config","fromStyles","getStyleForState","toStyles","animate","transform","offset","duration","fill","opacity","isExpanding","baseStyles","width","maxWidth","maxHeight","borderRadius","hidden","boxShadow","backdropFilter","minimized","getResponsiveWidth","vw","innerWidth","style","firstUpdated","applyInitialStyles","initialStyle","Object","assign","webkitBackdropFilter","toggleState","newState","disconnectedCallback","complete","render","surfaceElevation","isMinimized","iconName","html","ref","e","stopPropagation","close","__decorateClass","property","String","reflect","prototype","Boolean","customElement"],"mappings":"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"}
@@ -1,161 +0,0 @@
1
- "use strict";const c=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const o=require("lit/decorators.js"),d=require("./tailwind.mixin-BiRVB4Hl.cjs"),l=require("lit"),h=require("lit/directives/when.js"),u=require("rxjs/operators");var m=Object.defineProperty,y=Object.getOwnPropertyDescriptor,r=(e,t,a,i)=>{for(var s,n=i>1?void 0:i?y(t,a):t,p=e.length-1;p>=0;p--)(s=e[p])&&(n=(i?s(t,a,n):s(n))||n);return i&&n&&m(t,a,n),n};exports.SchmancyDetails=class extends d.TailwindElement(l.css`
2
- :host {
3
- display: block;
4
- position: relative;
5
- }
6
-
7
- /* Hide browser default marker */
8
- summary::-webkit-details-marker {
9
- display: none;
10
- }
11
-
12
- summary {
13
- list-style: none;
14
- }
15
-
16
- /* Container border-radius following M3 spec */
17
- details {
18
- border-radius: 12px; /* M3 medium component radius */
19
- transition: all 200ms cubic-bezier(0.2, 0, 0, 1); /* M3 standard easing */
20
- }
21
-
22
- /* Variant-specific styles */
23
- :host([variant='outlined']) details {
24
- border: 1px solid var(--schmancy-sys-color-outline-variant);
25
- background-color: var(--schmancy-sys-color-surface-default);
26
- }
27
-
28
- :host([variant='filled']) details {
29
- background-color: var(--schmancy-sys-color-surface-container);
30
- }
31
-
32
- :host([variant='elevated']) details {
33
- background-color: var(--schmancy-sys-color-surface-low);
34
- box-shadow: var(--schmancy-sys-elevation-1);
35
- }
36
-
37
- :host([variant='elevated']) details[open] {
38
- box-shadow: var(--schmancy-sys-elevation-2);
39
- background-color: var(--schmancy-sys-color-surface-container);
40
- }
41
-
42
- /* Content animation */
43
- @keyframes slideDown {
44
- from {
45
- opacity: 0;
46
- transform: translateY(-8px);
47
- }
48
- to {
49
- opacity: 1;
50
- transform: translateY(0);
51
- }
52
- }
53
-
54
- .content-wrapper[data-open='true'] {
55
- animation: slideDown 250ms cubic-bezier(0.2, 0, 0, 1);
56
- }
57
-
58
- /* Ripple effect */
59
- @keyframes ripple {
60
- to {
61
- transform: scale(4);
62
- opacity: 0;
63
- }
64
- }
65
-
66
- /* Focus ring following M3 spec */
67
- summary:focus-visible {
68
- outline: 2px solid var(--schmancy-sys-color-primary-default);
69
- outline-offset: 2px;
70
- border-radius: 12px;
71
- }
72
-
73
- /* Icon rotation transition */
74
- .icon-wrapper {
75
- transition: transform 200ms cubic-bezier(0.2, 0, 0, 1);
76
- }
77
-
78
- .icon-wrapper[data-open='true'] {
79
- transform: rotate(90deg);
80
- }
81
- `){constructor(){super(...arguments),this.summary="",this.variant="default",this.ripples=[],this.pressed=!1,this._isOpen=!1,this.nextRippleId=0,this._open$=new c.BehaviorSubject(!1)}get open(){return this._open$.value}set open(e){this._open$.value!==e&&this._open$.next(e)}connectedCallback(){super.connectedCallback(),this._open$.pipe(u.tap(e=>{this._isOpen=e,this.requestUpdate()}),c.takeUntil(this.disconnecting)).subscribe()}render(){const e=this.classMap({"cursor-pointer":!0,"select-none":!0,relative:!0,flex:!0,"items-center":!0,"gap-3":!0,"min-h-[48px]":!0,"sm:min-h-[56px]":!0,"px-4":!0,"sm:px-6":!0,"py-3":!0,"sm:py-4":!0,"rounded-xl":!0,"transition-colors":!0,"duration-200":!0,"text-surface-on":!0,group:!0}),t=this.classMap({absolute:!0,"inset-0":!0,"rounded-xl":!0,"pointer-events-none":!0,"transition-opacity":!0,"duration-200":!0,"bg-surface-on":!0,[this.pressed?"opacity-[0.12]":this.variant==="default"?"opacity-0 hover:opacity-[0.08]":"opacity-0 hover:opacity-[0.04]"]:!0}),a=this.classMap({"px-4":!0,"sm:px-6":!0,"pb-3":!0,"sm:pb-4":!0,"text-surface-onVariant":!0,"text-sm":!0,"sm:text-base":!0}),i=this.classMap({flex:!0,"items-center":!0,"justify-center":!0,"w-6":!0,"h-6":!0,"rounded-full":!0,"flex-shrink-0":!0,"text-surface-onVariant":!0,"group-hover:text-surface-on":!0,"transition-all":!0,"duration-200":!0});return l.html`
82
- <details
83
- ?open=${this._isOpen}
84
- @toggle=${this._handleToggle}
85
- class="w-full overflow-hidden"
86
- >
87
- <summary
88
- class=${e}
89
- @click=${this._handleClick}
90
- @mousedown=${this._handleMouseDown}
91
- @mouseup=${this._handleMouseUp}
92
- @mouseleave=${this._handleMouseLeave}
93
- @keydown=${this._handleKeyDown}
94
- @keyup=${this._handleKeyUp}
95
- tabindex="0"
96
- >
97
- <!-- State layer for hover/focus/pressed states -->
98
- <div class=${t}></div>
99
-
100
- <!-- Ripple container -->
101
- <div class="absolute inset-0 rounded-xl overflow-hidden pointer-events-none">
102
- ${this.ripples.map(s=>l.html`
103
- <span
104
- class="absolute rounded-full scale-0 animate-[ripple_600ms_linear] bg-surface-on opacity-[0.12] pointer-events-none"
105
- style="
106
- left: ${s.x}px;
107
- top: ${s.y}px;
108
- width: 20px;
109
- height: 20px;
110
- margin-left: -10px;
111
- margin-top: -10px;
112
- "
113
- ></span>
114
- `)}
115
- </div>
116
-
117
- <!-- Summary content -->
118
- <span class="relative flex-1 font-medium text-base sm:text-lg z-10">
119
- <slot name="summary">${this.summary}</slot>
120
- </span>
121
-
122
- <!-- Expand/collapse icon -->
123
- <span
124
- class=${i}
125
- data-open=${this._isOpen}
126
- style="transform: rotate(${this._isOpen?"90deg":"0deg"})"
127
- >
128
- <svg
129
- width="24"
130
- height="24"
131
- viewBox="0 0 24 24"
132
- fill="none"
133
- xmlns="http://www.w3.org/2000/svg"
134
- class="w-5 h-5 sm:w-6 sm:h-6"
135
- >
136
- <path
137
- d="M9 6L15 12L9 18"
138
- stroke="currentColor"
139
- stroke-width="2"
140
- stroke-linecap="round"
141
- stroke-linejoin="round"
142
- />
143
- </svg>
144
- </span>
145
- </summary>
146
-
147
- <!-- Content area -->
148
- <div
149
- class=${a}
150
- data-open=${this._isOpen}
151
- style="${this._isOpen?"":"display: none;"}"
152
- >
153
- ${h.when(this._isOpen,()=>l.html`
154
- <div class="content-wrapper" data-open=${this._isOpen}>
155
- <slot></slot>
156
- </div>
157
- `)}
158
- </div>
159
- </details>
160
- `}_handleToggle(e){const t=e.target;this._open$.next(t.open),this.dispatchEvent(new CustomEvent("toggle",{detail:{open:t.open},bubbles:!0,composed:!0}))}_handleClick(e){e.preventDefault();const t=e.currentTarget.getBoundingClientRect(),a=e.clientX-t.left,i=e.clientY-t.top,s=this.nextRippleId++;this.ripples=[...this.ripples,{x:a,y:i,id:s}],setTimeout(()=>{this.ripples=this.ripples.filter(n=>n.id!==s)},600),this._open$.next(!this._open$.value),this.dispatchEvent(new CustomEvent("toggle",{detail:{open:this._open$.value},bubbles:!0,composed:!0}))}_handleMouseDown(){this.pressed=!0}_handleMouseUp(){this.pressed=!1}_handleMouseLeave(){this.pressed=!1}_handleKeyDown(e){if(e.key==="Enter"||e.key===" "){e.preventDefault(),this.pressed=!0;const t=e.currentTarget.getBoundingClientRect(),a=t.width/2,i=t.height/2,s=this.nextRippleId++;this.ripples=[...this.ripples,{x:a,y:i,id:s}],setTimeout(()=>{this.ripples=this.ripples.filter(n=>n.id!==s)},600),this._open$.next(!this._open$.value),this.dispatchEvent(new CustomEvent("toggle",{detail:{open:this._open$.value},bubbles:!0,composed:!0}))}}_handleKeyUp(e){e.key!=="Enter"&&e.key!==" "||(this.pressed=!1)}},exports.SchmancyDetails.shadowRootOptions={...l.LitElement.shadowRootOptions,mode:"open",delegatesFocus:!0},r([o.property()],exports.SchmancyDetails.prototype,"summary",2),r([o.property({type:Boolean,reflect:!0})],exports.SchmancyDetails.prototype,"open",1),r([o.property({reflect:!0})],exports.SchmancyDetails.prototype,"variant",2),r([o.state()],exports.SchmancyDetails.prototype,"ripples",2),r([o.state()],exports.SchmancyDetails.prototype,"pressed",2),r([o.state()],exports.SchmancyDetails.prototype,"_isOpen",2),exports.SchmancyDetails=r([o.customElement("schmancy-details")],exports.SchmancyDetails);
161
- //# sourceMappingURL=details-BSmS_ILq.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"details-BSmS_ILq.cjs","sources":["../src/details/details.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\r\nimport { css, html, LitElement } from 'lit'\r\nimport { customElement, property, state } from 'lit/decorators.js'\r\nimport { when } from 'lit/directives/when.js'\r\nimport { BehaviorSubject, takeUntil } from 'rxjs'\r\nimport { tap } from 'rxjs/operators'\r\n\r\n@customElement('schmancy-details')\r\nexport default class SchmancyDetails extends TailwindElement(css`\r\n\t:host {\r\n\t\tdisplay: block;\r\n\t\tposition: relative;\r\n\t}\r\n\r\n\t/* Hide browser default marker */\r\n\tsummary::-webkit-details-marker {\r\n\t\tdisplay: none;\r\n\t}\r\n\r\n\tsummary {\r\n\t\tlist-style: none;\r\n\t}\r\n\r\n\t/* Container border-radius following M3 spec */\r\n\tdetails {\r\n\t\tborder-radius: 12px; /* M3 medium component radius */\r\n\t\ttransition: all 200ms cubic-bezier(0.2, 0, 0, 1); /* M3 standard easing */\r\n\t}\r\n\r\n\t/* Variant-specific styles */\r\n\t:host([variant='outlined']) details {\r\n\t\tborder: 1px solid var(--schmancy-sys-color-outline-variant);\r\n\t\tbackground-color: var(--schmancy-sys-color-surface-default);\r\n\t}\r\n\r\n\t:host([variant='filled']) details {\r\n\t\tbackground-color: var(--schmancy-sys-color-surface-container);\r\n\t}\r\n\r\n\t:host([variant='elevated']) details {\r\n\t\tbackground-color: var(--schmancy-sys-color-surface-low);\r\n\t\tbox-shadow: var(--schmancy-sys-elevation-1);\r\n\t}\r\n\r\n\t:host([variant='elevated']) details[open] {\r\n\t\tbox-shadow: var(--schmancy-sys-elevation-2);\r\n\t\tbackground-color: var(--schmancy-sys-color-surface-container);\r\n\t}\r\n\r\n\t/* Content animation */\r\n\t@keyframes slideDown {\r\n\t\tfrom {\r\n\t\t\topacity: 0;\r\n\t\t\ttransform: translateY(-8px);\r\n\t\t}\r\n\t\tto {\r\n\t\t\topacity: 1;\r\n\t\t\ttransform: translateY(0);\r\n\t\t}\r\n\t}\r\n\r\n\t.content-wrapper[data-open='true'] {\r\n\t\tanimation: slideDown 250ms cubic-bezier(0.2, 0, 0, 1);\r\n\t}\r\n\r\n\t/* Ripple effect */\r\n\t@keyframes ripple {\r\n\t\tto {\r\n\t\t\ttransform: scale(4);\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t/* Focus ring following M3 spec */\r\n\tsummary:focus-visible {\r\n\t\toutline: 2px solid var(--schmancy-sys-color-primary-default);\r\n\t\toutline-offset: 2px;\r\n\t\tborder-radius: 12px;\r\n\t}\r\n\r\n\t/* Icon rotation transition */\r\n\t.icon-wrapper {\r\n\t\ttransition: transform 200ms cubic-bezier(0.2, 0, 0, 1);\r\n\t}\r\n\r\n\t.icon-wrapper[data-open='true'] {\r\n\t\ttransform: rotate(90deg);\r\n\t}\r\n`) {\r\n\tprotected static shadowRootOptions = {\r\n\t\t...LitElement.shadowRootOptions,\r\n\t\tmode: 'open' as const,\r\n\t\tdelegatesFocus: true,\r\n\t}\r\n\r\n\t@property() summary = ''\r\n\t@property({ type: Boolean, reflect: true })\r\n\tget open() {\r\n\t\treturn this._open$.value\r\n\t}\r\n\tset open(value: boolean) {\r\n\t\tif (this._open$.value !== value) {\r\n\t\t\tthis._open$.next(value)\r\n\t\t}\r\n\t}\r\n\t@property({ reflect: true }) variant: 'default' | 'outlined' | 'filled' | 'elevated' = 'default'\r\n\r\n\t// Internal state for ripple effects\r\n\t@state() private ripples: Array<{ x: number; y: number; id: number }> = []\r\n\t@state() private pressed = false\r\n\t@state() private _isOpen = false\r\n\r\n\tprivate nextRippleId = 0\r\n\tprivate _open$ = new BehaviorSubject<boolean>(false)\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\r\n\t\t// Subscribe to open state changes\r\n\t\tthis._open$.pipe(\r\n\t\t\ttap(isOpen => {\r\n\t\t\t\tthis._isOpen = isOpen\r\n\t\t\t\tthis.requestUpdate()\r\n\t\t\t}),\r\n\t\t\ttakeUntil(this.disconnecting)\r\n\t\t).subscribe()\r\n\t}\r\n\r\n\trender() {\r\n\t\t// Define state layer opacity based on variant and state\r\n\t\tconst getStateLayerOpacity = () => {\r\n\t\t\tif (this.pressed) return 'opacity-[0.12]' // M3 pressed state\r\n\t\t\tif (this.variant === 'default') {\r\n\t\t\t\treturn 'opacity-0 hover:opacity-[0.08]' // M3 hover state\r\n\t\t\t}\r\n\t\t\treturn 'opacity-0 hover:opacity-[0.04]' // Reduced for filled/elevated variants\r\n\t\t}\r\n\r\n\t\t// Summary classes following M3 specs\r\n\t\tconst summaryClasses = this.classMap({\r\n\t\t\t'cursor-pointer': true,\r\n\t\t\t'select-none': true,\r\n\t\t\t'relative': true,\r\n\t\t\t'flex': true,\r\n\t\t\t'items-center': true,\r\n\t\t\t'gap-3': true,\r\n\t\t\t'min-h-[48px]': true, // M3 minimum touch target\r\n\t\t\t'sm:min-h-[56px]': true, // Desktop size\r\n\t\t\t'px-4': true, // M3 standard padding\r\n\t\t\t'sm:px-6': true,\r\n\t\t\t'py-3': true,\r\n\t\t\t'sm:py-4': true,\r\n\t\t\t'rounded-xl': true, // Match container radius\r\n\t\t\t'transition-colors': true,\r\n\t\t\t'duration-200': true,\r\n\t\t\t'text-surface-on': true,\r\n\t\t\t'group': true, // For hover states on icon\r\n\t\t})\r\n\r\n\t\t// State layer for interactive feedback\r\n\t\tconst stateLayerClasses = this.classMap({\r\n\t\t\t'absolute': true,\r\n\t\t\t'inset-0': true,\r\n\t\t\t'rounded-xl': true,\r\n\t\t\t'pointer-events-none': true,\r\n\t\t\t'transition-opacity': true,\r\n\t\t\t'duration-200': true,\r\n\t\t\t'bg-surface-on': true,\r\n\t\t\t[getStateLayerOpacity()]: true,\r\n\t\t})\r\n\r\n\t\t// Content wrapper classes\r\n\t\tconst contentClasses = this.classMap({\r\n\t\t\t'px-4': true,\r\n\t\t\t'sm:px-6': true,\r\n\t\t\t'pb-3': true,\r\n\t\t\t'sm:pb-4': true,\r\n\t\t\t'text-surface-onVariant': true,\r\n\t\t\t'text-sm': true,\r\n\t\t\t'sm:text-base': true,\r\n\t\t})\r\n\r\n\t\t// Icon classes with group hover\r\n\t\tconst iconClasses = this.classMap({\r\n\t\t\t'flex': true,\r\n\t\t\t'items-center': true,\r\n\t\t\t'justify-center': true,\r\n\t\t\t'w-6': true,\r\n\t\t\t'h-6': true,\r\n\t\t\t'rounded-full': true,\r\n\t\t\t'flex-shrink-0': true,\r\n\t\t\t'text-surface-onVariant': true,\r\n\t\t\t'group-hover:text-surface-on': true,\r\n\t\t\t'transition-all': true,\r\n\t\t\t'duration-200': true,\r\n\t\t})\r\n\r\n\t\treturn html`\r\n\t\t\t<details\r\n\t\t\t\t?open=${this._isOpen}\r\n\t\t\t\t@toggle=${this._handleToggle}\r\n\t\t\t\tclass=\"w-full overflow-hidden\"\r\n\t\t\t>\r\n\t\t\t\t<summary\r\n\t\t\t\t\tclass=${summaryClasses}\r\n\t\t\t\t\t@click=${this._handleClick}\r\n\t\t\t\t\t@mousedown=${this._handleMouseDown}\r\n\t\t\t\t\t@mouseup=${this._handleMouseUp}\r\n\t\t\t\t\t@mouseleave=${this._handleMouseLeave}\r\n\t\t\t\t\t@keydown=${this._handleKeyDown}\r\n\t\t\t\t\t@keyup=${this._handleKeyUp}\r\n\t\t\t\t\ttabindex=\"0\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<!-- State layer for hover/focus/pressed states -->\r\n\t\t\t\t\t<div class=${stateLayerClasses}></div>\r\n\r\n\t\t\t\t\t<!-- Ripple container -->\r\n\t\t\t\t\t<div class=\"absolute inset-0 rounded-xl overflow-hidden pointer-events-none\">\r\n\t\t\t\t\t\t${this.ripples.map(\r\n\t\t\t\t\t\t\tripple => html`\r\n\t\t\t\t\t\t\t\t<span\r\n\t\t\t\t\t\t\t\t\tclass=\"absolute rounded-full scale-0 animate-[ripple_600ms_linear] bg-surface-on opacity-[0.12] pointer-events-none\"\r\n\t\t\t\t\t\t\t\t\tstyle=\"\r\n\t\t\t\t\t\t\t\t\t\tleft: ${ripple.x}px;\r\n\t\t\t\t\t\t\t\t\t\ttop: ${ripple.y}px;\r\n\t\t\t\t\t\t\t\t\t\twidth: 20px;\r\n\t\t\t\t\t\t\t\t\t\theight: 20px;\r\n\t\t\t\t\t\t\t\t\t\tmargin-left: -10px;\r\n\t\t\t\t\t\t\t\t\t\tmargin-top: -10px;\r\n\t\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t></span>\r\n\t\t\t\t\t\t\t`,\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<!-- Summary content -->\r\n\t\t\t\t\t<span class=\"relative flex-1 font-medium text-base sm:text-lg z-10\">\r\n\t\t\t\t\t\t<slot name=\"summary\">${this.summary}</slot>\r\n\t\t\t\t\t</span>\r\n\r\n\t\t\t\t\t<!-- Expand/collapse icon -->\r\n\t\t\t\t\t<span\r\n\t\t\t\t\t\tclass=${iconClasses}\r\n\t\t\t\t\t\tdata-open=${this._isOpen}\r\n\t\t\t\t\t\tstyle=\"transform: rotate(${this._isOpen ? '90deg' : '0deg'})\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<svg\r\n\t\t\t\t\t\t\twidth=\"24\"\r\n\t\t\t\t\t\t\theight=\"24\"\r\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\t\t\tclass=\"w-5 h-5 sm:w-6 sm:h-6\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<path\r\n\t\t\t\t\t\t\t\td=\"M9 6L15 12L9 18\"\r\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\t\t\t\tstroke-width=\"2\"\r\n\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\r\n\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</svg>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</summary>\r\n\r\n\t\t\t\t<!-- Content area -->\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=${contentClasses}\r\n\t\t\t\t\tdata-open=${this._isOpen}\r\n\t\t\t\t\tstyle=\"${this._isOpen ? '' : 'display: none;'}\"\r\n\t\t\t\t>\r\n\t\t\t\t\t${when(\r\n\t\t\t\t\t\tthis._isOpen,\r\n\t\t\t\t\t\t() => html`\r\n\t\t\t\t\t\t\t<div class=\"content-wrapper\" data-open=${this._isOpen}>\r\n\t\t\t\t\t\t\t\t<slot></slot>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t`\r\n\t\t\t\t\t)}\r\n\t\t\t\t</div>\r\n\t\t\t</details>\r\n\t\t`\r\n\t}\r\n\r\n\tprivate _handleToggle(e: Event) {\r\n\t\tconst details = e.target as HTMLDetailsElement\r\n\t\t// Sync the internal state with the actual details element state\r\n\t\tthis._open$.next(details.open)\r\n\r\n\t\t// Dispatch custom event\r\n\t\tthis.dispatchEvent(\r\n\t\t\tnew CustomEvent('toggle', {\r\n\t\t\t\tdetail: { open: details.open },\r\n\t\t\t\tbubbles: true,\r\n\t\t\t\tcomposed: true,\r\n\t\t\t}),\r\n\t\t)\r\n\t}\r\n\r\n\tprivate _handleClick(e: MouseEvent) {\r\n\t\t// Prevent default to control the toggle manually\r\n\t\te.preventDefault()\r\n\r\n\t\t// Add ripple effect at click position\r\n\t\tconst rect = (e.currentTarget as HTMLElement).getBoundingClientRect()\r\n\t\tconst x = e.clientX - rect.left\r\n\t\tconst y = e.clientY - rect.top\r\n\t\tconst id = this.nextRippleId++\r\n\r\n\t\tthis.ripples = [...this.ripples, { x, y, id }]\r\n\r\n\t\t// Remove ripple after animation\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.ripples = this.ripples.filter(r => r.id !== id)\r\n\t\t}, 600)\r\n\r\n\t\t// Toggle the open state through the BehaviorSubject\r\n\t\tthis._open$.next(!this._open$.value)\r\n\r\n\t\t// Dispatch the toggle event\r\n\t\tthis.dispatchEvent(\r\n\t\t\tnew CustomEvent('toggle', {\r\n\t\t\t\tdetail: { open: this._open$.value },\r\n\t\t\t\tbubbles: true,\r\n\t\t\t\tcomposed: true,\r\n\t\t\t}),\r\n\t\t)\r\n\t}\r\n\r\n\tprivate _handleMouseDown() {\r\n\t\tthis.pressed = true\r\n\t}\r\n\r\n\tprivate _handleMouseUp() {\r\n\t\tthis.pressed = false\r\n\t}\r\n\r\n\tprivate _handleMouseLeave() {\r\n\t\tthis.pressed = false\r\n\t}\r\n\r\n\tprivate _handleKeyDown(e: KeyboardEvent) {\r\n\t\t// Handle keyboard activation\r\n\t\tif (e.key === 'Enter' || e.key === ' ') {\r\n\t\t\te.preventDefault()\r\n\t\t\tthis.pressed = true\r\n\r\n\t\t\t// Add ripple effect from center\r\n\t\t\tconst rect = (e.currentTarget as HTMLElement).getBoundingClientRect()\r\n\t\t\tconst x = rect.width / 2\r\n\t\t\tconst y = rect.height / 2\r\n\t\t\tconst id = this.nextRippleId++\r\n\r\n\t\t\tthis.ripples = [...this.ripples, { x, y, id }]\r\n\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.ripples = this.ripples.filter(r => r.id !== id)\r\n\t\t\t}, 600)\r\n\r\n\t\t\t// Toggle the open state through the BehaviorSubject\r\n\t\t\tthis._open$.next(!this._open$.value)\r\n\r\n\t\t\t// Dispatch the toggle event\r\n\t\t\tthis.dispatchEvent(\r\n\t\t\t\tnew CustomEvent('toggle', {\r\n\t\t\t\t\tdetail: { open: this._open$.value },\r\n\t\t\t\t\tbubbles: true,\r\n\t\t\t\t\tcomposed: true,\r\n\t\t\t\t}),\r\n\t\t\t)\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _handleKeyUp(e: KeyboardEvent) {\r\n\t\tif (e.key === 'Enter' || e.key === ' ') {\r\n\t\t\tthis.pressed = false\r\n\t\t}\r\n\t}\r\n}\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'schmancy-details': SchmancyDetails\r\n\t}\r\n}\r\n"],"names":["SchmancyDetails","TailwindElement","css","super","arguments","this","summary","variant","ripples","pressed","_isOpen","nextRippleId","_open$","BehaviorSubject","open","value","next","connectedCallback","pipe","tap","isOpen","requestUpdate","takeUntil","disconnecting","subscribe","render","summaryClasses","classMap","relative","flex","group","stateLayerClasses","absolute","getStateLayerOpacity","contentClasses","iconClasses","html","_handleToggle","_handleClick","_handleMouseDown","_handleMouseUp","_handleMouseLeave","_handleKeyDown","_handleKeyUp","map","ripple","x","y","when","e","details","target","dispatchEvent","CustomEvent","detail","bubbles","composed","preventDefault","rect","currentTarget","getBoundingClientRect","clientX","left","clientY","top","id","setTimeout","filter","r","key","width","height","shadowRootOptions","LitElement","mode","delegatesFocus","__decorateClass","property","prototype","type","Boolean","reflect","state","customElement"],"mappings":"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"}