@mhmo91/schmancy 0.7.6 → 0.8.3

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 (549) hide show
  1. package/ai/audio.md +241 -0
  2. package/ai/content-drawer.md +163 -70
  3. package/ai/details.md +309 -44
  4. package/ai/lightbox.md +381 -0
  5. package/ai/typography.md +75 -49
  6. package/dist/ai/audio.md +241 -0
  7. package/dist/ai/content-drawer.md +163 -70
  8. package/dist/ai/details.md +309 -44
  9. package/dist/ai/lightbox.md +381 -0
  10. package/dist/ai/typography.md +75 -49
  11. package/dist/{animated-text-1FDC-OTA.cjs → animated-text-Bc3qyXjp.cjs} +2 -2
  12. package/dist/{animated-text-1FDC-OTA.cjs.map → animated-text-Bc3qyXjp.cjs.map} +1 -1
  13. package/dist/{animated-text-1_latidd.js → animated-text-CNx6Pmlo.js} +3 -3
  14. package/dist/{animated-text-1_latidd.js.map → animated-text-CNx6Pmlo.js.map} +1 -1
  15. package/dist/animated-text.cjs +1 -1
  16. package/dist/animated-text.js +1 -1
  17. package/dist/area.cjs +1 -1
  18. package/dist/{area.component-CQq-Mh0Z.js → area.component-7mWxekxE.js} +104 -98
  19. package/dist/area.component-7mWxekxE.js.map +1 -0
  20. package/dist/area.component-CS_gSutH.cjs +12 -0
  21. package/dist/area.component-CS_gSutH.cjs.map +1 -0
  22. package/dist/area.js +1 -1
  23. package/dist/audio.cjs +2 -0
  24. package/dist/audio.cjs.map +1 -0
  25. package/dist/audio.js +9 -0
  26. package/dist/audio.js.map +1 -0
  27. package/dist/{autocomplete-DT9MFPEG.js → autocomplete-Ci4jo3Ur.js} +4 -4
  28. package/dist/{autocomplete-DT9MFPEG.js.map → autocomplete-Ci4jo3Ur.js.map} +1 -1
  29. package/dist/{autocomplete-auTO_M_w.cjs → autocomplete-y-IyzH4r.cjs} +2 -2
  30. package/dist/{autocomplete-auTO_M_w.cjs.map → autocomplete-y-IyzH4r.cjs.map} +1 -1
  31. package/dist/autocomplete.cjs +1 -1
  32. package/dist/autocomplete.js +1 -1
  33. package/dist/{avatar-Dm_qg-n1.js → avatar-BdyuuIk7.js} +243 -258
  34. package/dist/avatar-BdyuuIk7.js.map +1 -0
  35. package/dist/avatar-DBfJucB9.cjs +273 -0
  36. package/dist/avatar-DBfJucB9.cjs.map +1 -0
  37. package/dist/badge.cjs +1 -1
  38. package/dist/badge.js +1 -1
  39. package/dist/{boat-RNCKlx8b.js → boat-CowHieO2.js} +6 -6
  40. package/dist/{boat-RNCKlx8b.js.map → boat-CowHieO2.js.map} +1 -1
  41. package/dist/{boat-98He5-K8.cjs → boat-DkNUc1UO.cjs} +5 -5
  42. package/dist/{boat-98He5-K8.cjs.map → boat-DkNUc1UO.cjs.map} +1 -1
  43. package/dist/boat.cjs +1 -1
  44. package/dist/boat.js +1 -1
  45. package/dist/busy.cjs +1 -1
  46. package/dist/busy.js +1 -1
  47. package/dist/button.cjs +1 -1
  48. package/dist/button.js +1 -1
  49. package/dist/card.cjs +1 -1
  50. package/dist/card.js +1 -1
  51. package/dist/charts.cjs +2 -0
  52. package/dist/charts.cjs.map +1 -0
  53. package/dist/charts.js +9 -0
  54. package/dist/charts.js.map +1 -0
  55. package/dist/{checkbox-Bdn1_WJg.js → checkbox-BY4Sn8F2.js} +6 -6
  56. package/dist/{checkbox-Bdn1_WJg.js.map → checkbox-BY4Sn8F2.js.map} +1 -1
  57. package/dist/{checkbox-Dj06r6MD.cjs → checkbox-BvWcABPr.cjs} +2 -2
  58. package/dist/{checkbox-Dj06r6MD.cjs.map → checkbox-BvWcABPr.cjs.map} +1 -1
  59. package/dist/checkbox.cjs +1 -1
  60. package/dist/checkbox.js +1 -1
  61. package/dist/chips.cjs +1 -1
  62. package/dist/chips.js +2 -2
  63. package/dist/code-highlight.cjs +1 -1
  64. package/dist/code-highlight.js +1 -1
  65. package/dist/{code-preview-ByxcwPma.cjs → code-preview-BIFIJigy.cjs} +2 -2
  66. package/dist/{code-preview-ByxcwPma.cjs.map → code-preview-BIFIJigy.cjs.map} +1 -1
  67. package/dist/{code-preview-Br7zBkyM.js → code-preview-CYjmAxfs.js} +3 -3
  68. package/dist/{code-preview-Br7zBkyM.js.map → code-preview-CYjmAxfs.js.map} +1 -1
  69. package/dist/components.cjs +1 -1
  70. package/dist/components.js +1 -1
  71. package/dist/content-drawer.cjs +1 -1
  72. package/dist/content-drawer.js +1 -1
  73. package/dist/{context-create-BvxbWTgj.js → context-create-B_S-sD5B.js} +69 -57
  74. package/dist/context-create-B_S-sD5B.js.map +1 -0
  75. package/dist/context-create-DTybDbZp.cjs +2 -0
  76. package/dist/context-create-DTybDbZp.cjs.map +1 -0
  77. package/dist/date-range-B80Ummtv.cjs +119 -0
  78. package/dist/date-range-B80Ummtv.cjs.map +1 -0
  79. package/dist/date-range-BdIqI7LC.js +639 -0
  80. package/dist/date-range-BdIqI7LC.js.map +1 -0
  81. package/dist/{date-range-inline-l2G48xTX.js → date-range-inline-Cnhs9atd.js} +3 -3
  82. package/dist/{date-range-inline-l2G48xTX.js.map → date-range-inline-Cnhs9atd.js.map} +1 -1
  83. package/dist/{date-range-inline-kbokz03Z.cjs → date-range-inline-Df8u6Ecy.cjs} +2 -2
  84. package/dist/{date-range-inline-kbokz03Z.cjs.map → date-range-inline-Df8u6Ecy.cjs.map} +1 -1
  85. package/dist/date-range-inline.cjs +1 -1
  86. package/dist/date-range-inline.js +1 -1
  87. package/dist/date-range.cjs +1 -1
  88. package/dist/date-range.js +1 -1
  89. package/dist/{delay-CCreUpYu.cjs → delay-BWsVHQib.cjs} +2 -2
  90. package/dist/delay-BWsVHQib.cjs.map +1 -0
  91. package/dist/{delay-Nu7RVtYd.js → delay-CCa9nN4A.js} +45 -45
  92. package/dist/delay-CCa9nN4A.js.map +1 -0
  93. package/dist/delay.cjs +1 -1
  94. package/dist/delay.js +1 -1
  95. package/dist/details-Bee5ya0L.js +100 -0
  96. package/dist/details-Bee5ya0L.js.map +1 -0
  97. package/dist/details-oaVHXU7U.cjs +55 -0
  98. package/dist/details-oaVHXU7U.cjs.map +1 -0
  99. package/dist/details.cjs +1 -1
  100. package/dist/details.js +1 -1
  101. package/dist/dialog-service-C86xTS8q.cjs +2 -0
  102. package/dist/dialog-service-C86xTS8q.cjs.map +1 -0
  103. package/dist/dialog-service-D9E3jLAR.js +118 -0
  104. package/dist/dialog-service-D9E3jLAR.js.map +1 -0
  105. package/dist/dialog.cjs +1 -1
  106. package/dist/dialog.component-BriB-kFi.cjs +48 -0
  107. package/dist/dialog.component-BriB-kFi.cjs.map +1 -0
  108. package/dist/dialog.component-CMUoCC7O.js +145 -0
  109. package/dist/dialog.component-CMUoCC7O.js.map +1 -0
  110. package/dist/dialog.js +7 -7
  111. package/dist/directives.cjs +1 -1
  112. package/dist/directives.js +11 -10
  113. package/dist/directives.js.map +1 -1
  114. package/dist/{divider-CqyzFfn1.js → divider-B7DBbYFI.js} +3 -3
  115. package/dist/{divider-CqyzFfn1.js.map → divider-B7DBbYFI.js.map} +1 -1
  116. package/dist/{divider-0yHQS8kR.cjs → divider-Dl4TToQZ.cjs} +2 -2
  117. package/dist/{divider-0yHQS8kR.cjs.map → divider-Dl4TToQZ.cjs.map} +1 -1
  118. package/dist/divider.cjs +1 -1
  119. package/dist/divider.js +1 -1
  120. package/dist/{dropdown-content-BmHQE5-P.cjs → dropdown-content-C2W7OttQ.cjs} +2 -2
  121. package/dist/{dropdown-content-BmHQE5-P.cjs.map → dropdown-content-C2W7OttQ.cjs.map} +1 -1
  122. package/dist/{dropdown-content-iFlLupVo.js → dropdown-content-DzhOtilY.js} +3 -3
  123. package/dist/{dropdown-content-iFlLupVo.js.map → dropdown-content-DzhOtilY.js.map} +1 -1
  124. package/dist/dropdown.cjs +1 -1
  125. package/dist/dropdown.js +1 -1
  126. package/dist/{email-recipients-CmAEJDMC.js → email-recipients-BWqZKo3m.js} +8 -7
  127. package/dist/{email-recipients-CmAEJDMC.js.map → email-recipients-BWqZKo3m.js.map} +1 -1
  128. package/dist/{email-recipients-Cioc3U0Z.cjs → email-recipients-Bh5VC0rc.cjs} +2 -2
  129. package/dist/{email-recipients-Cioc3U0Z.cjs.map → email-recipients-Bh5VC0rc.cjs.map} +1 -1
  130. package/dist/emotional-sounds-BRnFhww6.js +234 -0
  131. package/dist/emotional-sounds-BRnFhww6.js.map +1 -0
  132. package/dist/emotional-sounds-DVGhmoZf.cjs +2 -0
  133. package/dist/emotional-sounds-DVGhmoZf.cjs.map +1 -0
  134. package/dist/extra.cjs +1 -1
  135. package/dist/extra.js +1 -1
  136. package/dist/flex-53G-PJx7.js +183 -0
  137. package/dist/flex-53G-PJx7.js.map +1 -0
  138. package/dist/flex-DFSIy0t4.cjs +18 -0
  139. package/dist/flex-DFSIy0t4.cjs.map +1 -0
  140. package/dist/{form-CxrvY530.js → form-BtRK9bnp.js} +2 -2
  141. package/dist/{form-CxrvY530.js.map → form-BtRK9bnp.js.map} +1 -1
  142. package/dist/{form-DFDTspmH.cjs → form-Zq7g2JS8.cjs} +2 -2
  143. package/dist/{form-DFDTspmH.cjs.map → form-Zq7g2JS8.cjs.map} +1 -1
  144. package/dist/form.cjs +1 -1
  145. package/dist/form.js +1 -1
  146. package/dist/{formField.mixin-hZ2qP4iG.js → formField.mixin-2jSL7WF_.js} +2 -2
  147. package/dist/{formField.mixin-hZ2qP4iG.js.map → formField.mixin-2jSL7WF_.js.map} +1 -1
  148. package/dist/{formField.mixin-C7H5DaEl.cjs → formField.mixin-DkN2ufR_.cjs} +2 -2
  149. package/dist/{formField.mixin-C7H5DaEl.cjs.map → formField.mixin-DkN2ufR_.cjs.map} +1 -1
  150. package/dist/height-CfECBO2j.js +44 -0
  151. package/dist/height-CfECBO2j.js.map +1 -0
  152. package/dist/height-Z70qJYJK.cjs +2 -0
  153. package/dist/height-Z70qJYJK.cjs.map +1 -0
  154. package/dist/{icon-D0FAI5uJ.js → icon-B5qeYrDu.js} +17 -17
  155. package/dist/icon-B5qeYrDu.js.map +1 -0
  156. package/dist/icon-button-BpmGFjaR.cjs +70 -0
  157. package/dist/icon-button-BpmGFjaR.cjs.map +1 -0
  158. package/dist/icon-button-HSYaQBNF.js +164 -0
  159. package/dist/icon-button-HSYaQBNF.js.map +1 -0
  160. package/dist/icon-pU_cfmpD.cjs +49 -0
  161. package/dist/icon-pU_cfmpD.cjs.map +1 -0
  162. package/dist/icons.cjs +1 -1
  163. package/dist/icons.js +1 -1
  164. package/dist/index.cjs +1 -1
  165. package/dist/index.js +275 -250
  166. package/dist/index.js.map +1 -1
  167. package/dist/input-8G9YY9qv.cjs +51 -0
  168. package/dist/input-8G9YY9qv.cjs.map +1 -0
  169. package/dist/{input-DLnKAj3B.js → input-BJMF5Fyk.js} +35 -31
  170. package/dist/input-BJMF5Fyk.js.map +1 -0
  171. package/dist/{input-chip-C3EPsHcP.cjs → input-chip-CocdqTzr.cjs} +2 -2
  172. package/dist/{input-chip-C3EPsHcP.cjs.map → input-chip-CocdqTzr.cjs.map} +1 -1
  173. package/dist/{input-chip-dmqYCExV.js → input-chip-tbrw56ix.js} +2 -2
  174. package/dist/{input-chip-dmqYCExV.js.map → input-chip-tbrw56ix.js.map} +1 -1
  175. package/dist/input.cjs +1 -1
  176. package/dist/input.js +1 -1
  177. package/dist/json-CvcloKQv.js +51 -0
  178. package/dist/json-CvcloKQv.js.map +1 -0
  179. package/dist/json-DPnyOA3K.cjs +12 -0
  180. package/dist/json-DPnyOA3K.cjs.map +1 -0
  181. package/dist/json.cjs +2 -0
  182. package/dist/json.cjs.map +1 -0
  183. package/dist/json.js +5 -0
  184. package/dist/json.js.map +1 -0
  185. package/dist/layout.cjs +1 -1
  186. package/dist/layout.js +4 -3
  187. package/dist/layout.js.map +1 -1
  188. package/dist/lightbox-service-3mHqBKEh.cjs +202 -0
  189. package/dist/lightbox-service-3mHqBKEh.cjs.map +1 -0
  190. package/dist/lightbox-service-DxbYZAuv.js +458 -0
  191. package/dist/lightbox-service-DxbYZAuv.js.map +1 -0
  192. package/dist/lightbox.cjs +2 -0
  193. package/dist/lightbox.cjs.map +1 -0
  194. package/dist/lightbox.js +8 -0
  195. package/dist/lightbox.js.map +1 -0
  196. package/dist/{list-BegNkhOn.js → list-FWXmY-eQ.js} +2 -2
  197. package/dist/{list-BegNkhOn.js.map → list-FWXmY-eQ.js.map} +1 -1
  198. package/dist/{list-CLKiZ6lk.cjs → list-JjR7WOrd.cjs} +2 -2
  199. package/dist/{list-CLKiZ6lk.cjs.map → list-JjR7WOrd.cjs.map} +1 -1
  200. package/dist/list.cjs +1 -1
  201. package/dist/list.js +1 -1
  202. package/dist/{litElement.mixin-CPQYJnK_.cjs → litElement.mixin-BVBdv0GP.cjs} +2 -2
  203. package/dist/{litElement.mixin-CPQYJnK_.cjs.map → litElement.mixin-BVBdv0GP.cjs.map} +1 -1
  204. package/dist/{litElement.mixin-DWDPaNoc.js → litElement.mixin-Wcu4yIIs.js} +2 -2
  205. package/dist/{litElement.mixin-DWDPaNoc.js.map → litElement.mixin-Wcu4yIIs.js.map} +1 -1
  206. package/dist/mailbox.cjs +1 -1
  207. package/dist/mailbox.js +1 -1
  208. package/dist/{map-CUKZ6LrR.js → map-Br6xJFxG.js} +2 -2
  209. package/dist/{map-CUKZ6LrR.js.map → map-Br6xJFxG.js.map} +1 -1
  210. package/dist/{map-w4Kdtycx.cjs → map-D9R3OCne.cjs} +2 -2
  211. package/dist/{map-w4Kdtycx.cjs.map → map-D9R3OCne.cjs.map} +1 -1
  212. package/dist/map.cjs +1 -1
  213. package/dist/map.js +1 -1
  214. package/dist/{media-CjdCchz8.js → media-BV_1DfcW.js} +2 -2
  215. package/dist/{media-CjdCchz8.js.map → media-BV_1DfcW.js.map} +1 -1
  216. package/dist/{media-DDNmuoV0.cjs → media-DibPwAjJ.cjs} +2 -2
  217. package/dist/{media-DDNmuoV0.cjs.map → media-DibPwAjJ.cjs.map} +1 -1
  218. package/dist/menu-HKqlq99V.js +60 -0
  219. package/dist/{menu-ofiPDY2a.js.map → menu-HKqlq99V.js.map} +1 -1
  220. package/dist/{menu-D9-9vipn.cjs → menu-vNrV-Nuq.cjs} +4 -6
  221. package/dist/{menu-D9-9vipn.cjs.map → menu-vNrV-Nuq.cjs.map} +1 -1
  222. package/dist/menu.cjs +1 -1
  223. package/dist/menu.js +1 -1
  224. package/dist/mixins.cjs +1 -1
  225. package/dist/mixins.js +3 -3
  226. package/dist/nav-drawer.cjs +1 -1
  227. package/dist/nav-drawer.js +1 -1
  228. package/dist/navigation-bar.cjs +1 -1
  229. package/dist/navigation-bar.js +1 -1
  230. package/dist/{navigation-rail-CEDLJTrH.cjs → navigation-rail-D1o3qDe_.cjs} +15 -17
  231. package/dist/navigation-rail-D1o3qDe_.cjs.map +1 -0
  232. package/dist/{navigation-rail-weSW6BCv.js → navigation-rail-DKXumnmt.js} +30 -32
  233. package/dist/navigation-rail-DKXumnmt.js.map +1 -0
  234. package/dist/navigation-rail.cjs +1 -1
  235. package/dist/navigation-rail.js +1 -1
  236. package/dist/notification-service-B5ljba4P.js +155 -0
  237. package/dist/notification-service-B5ljba4P.js.map +1 -0
  238. package/dist/notification-service-ICRT05L0.cjs +19 -0
  239. package/dist/notification-service-ICRT05L0.cjs.map +1 -0
  240. package/dist/notification.cjs +1 -1
  241. package/dist/notification.js +6 -8
  242. package/dist/{notify-Ci0HrUIo.js → notify-B9CpO1Ru.js} +2 -2
  243. package/dist/notify-B9CpO1Ru.js.map +1 -0
  244. package/dist/{notify-aasSKQGA.cjs → notify-NX-dl60E.cjs} +2 -2
  245. package/dist/notify-NX-dl60E.cjs.map +1 -0
  246. package/dist/{option-Cs4e3CzF.js → option-B4JKMrLg.js} +2 -2
  247. package/dist/{option-Cs4e3CzF.js.map → option-B4JKMrLg.js.map} +1 -1
  248. package/dist/{option-Uze_q9Ef.cjs → option-epyXLWoY.cjs} +2 -2
  249. package/dist/{option-Uze_q9Ef.cjs.map → option-epyXLWoY.cjs.map} +1 -1
  250. package/dist/option.cjs +1 -1
  251. package/dist/option.js +1 -1
  252. package/dist/page-Bmi1QHtq.cjs +20 -0
  253. package/dist/page-Bmi1QHtq.cjs.map +1 -0
  254. package/dist/page-BpygEntU.js +48 -0
  255. package/dist/page-BpygEntU.js.map +1 -0
  256. package/dist/page.cjs +2 -0
  257. package/dist/page.cjs.map +1 -0
  258. package/dist/page.js +5 -0
  259. package/dist/page.js.map +1 -0
  260. package/dist/{payment-card-form-rJCPUtWE.cjs → payment-card-form-3kAXDbXf.cjs} +2 -2
  261. package/dist/{payment-card-form-rJCPUtWE.cjs.map → payment-card-form-3kAXDbXf.cjs.map} +1 -1
  262. package/dist/{payment-card-form-BLoUTYiB.js → payment-card-form-BxkHuSls.js} +3 -3
  263. package/dist/{payment-card-form-BLoUTYiB.js.map → payment-card-form-BxkHuSls.js.map} +1 -1
  264. package/dist/pills-C3fIvfn8.js +346 -0
  265. package/dist/pills-C3fIvfn8.js.map +1 -0
  266. package/dist/pills-MmHyBGQu.cjs +113 -0
  267. package/dist/pills-MmHyBGQu.cjs.map +1 -0
  268. package/dist/progress-0POmJs5o.js +59 -0
  269. package/dist/progress-0POmJs5o.js.map +1 -0
  270. package/dist/progress-qx8jtrOA.cjs +35 -0
  271. package/dist/progress-qx8jtrOA.cjs.map +1 -0
  272. package/dist/progress.cjs +1 -1
  273. package/dist/progress.js +1 -1
  274. package/dist/qr-scanner-DQq-WLyo.cjs +29 -0
  275. package/dist/qr-scanner-DQq-WLyo.cjs.map +1 -0
  276. package/dist/qr-scanner-jwOSrD0N.js +743 -0
  277. package/dist/qr-scanner-jwOSrD0N.js.map +1 -0
  278. package/dist/qr-scanner.cjs +2 -0
  279. package/dist/qr-scanner.cjs.map +1 -0
  280. package/dist/qr-scanner.js +5 -0
  281. package/dist/qr-scanner.js.map +1 -0
  282. package/dist/{radio-button-CaDaw5VH.js → radio-button-B0EUK_wg.js} +3 -3
  283. package/dist/{radio-button-CaDaw5VH.js.map → radio-button-B0EUK_wg.js.map} +1 -1
  284. package/dist/{radio-button-BAS7gKmA.cjs → radio-button-DraEYR2R.cjs} +2 -2
  285. package/dist/{radio-button-BAS7gKmA.cjs.map → radio-button-DraEYR2R.cjs.map} +1 -1
  286. package/dist/radio-group.cjs +1 -1
  287. package/dist/radio-group.js +1 -1
  288. package/dist/ripple-BgJXbNSP.js +124 -0
  289. package/dist/ripple-BgJXbNSP.js.map +1 -0
  290. package/dist/ripple-x6sTX02K.cjs +16 -0
  291. package/dist/ripple-x6sTX02K.cjs.map +1 -0
  292. package/dist/{schmancy-steps-container-wQsksygx.cjs → schmancy-steps-container-B5aiqgMA.cjs} +2 -2
  293. package/dist/{schmancy-steps-container-wQsksygx.cjs.map → schmancy-steps-container-B5aiqgMA.cjs.map} +1 -1
  294. package/dist/{schmancy-steps-container-BInNput3.js → schmancy-steps-container-C2StAA5K.js} +3 -3
  295. package/dist/{schmancy-steps-container-BInNput3.js.map → schmancy-steps-container-C2StAA5K.js.map} +1 -1
  296. package/dist/scroll-BqT7bvhu.cjs +27 -0
  297. package/dist/scroll-BqT7bvhu.cjs.map +1 -0
  298. package/dist/scroll-Bu-vAg3d.js +87 -0
  299. package/dist/scroll-Bu-vAg3d.js.map +1 -0
  300. package/dist/{select-_2Ag_znm.cjs → select-HiEGJvOX.cjs} +2 -2
  301. package/dist/select-HiEGJvOX.cjs.map +1 -0
  302. package/dist/{select-ApLZefMf.js → select-i-uKur-W.js} +5 -4
  303. package/dist/select-i-uKur-W.js.map +1 -0
  304. package/dist/select.cjs +1 -1
  305. package/dist/select.js +1 -1
  306. package/dist/{selector-hook-Cok22ifx.cjs → selector-hook-9w2auh2O.cjs} +2 -2
  307. package/dist/{selector-hook-Cok22ifx.cjs.map → selector-hook-9w2auh2O.cjs.map} +1 -1
  308. package/dist/{selector-hook-l2fe2UO5.js → selector-hook-CHV4kDMd.js} +3 -3
  309. package/dist/{selector-hook-l2fe2UO5.js.map → selector-hook-CHV4kDMd.js.map} +1 -1
  310. package/dist/{sheet-DovyNsok.js → sheet-B1g7E4dQ.js} +5 -5
  311. package/dist/{sheet-DovyNsok.js.map → sheet-B1g7E4dQ.js.map} +1 -1
  312. package/dist/{sheet-wjDOQ8Hs.cjs → sheet-BbrRW0S5.cjs} +2 -2
  313. package/dist/{sheet-wjDOQ8Hs.cjs.map → sheet-BbrRW0S5.cjs.map} +1 -1
  314. package/dist/sheet.cjs +1 -1
  315. package/dist/sheet.js +2 -2
  316. package/dist/{sheet.service-BvOiOFMm.js → sheet.service-4etIM-p6.js} +20 -18
  317. package/dist/sheet.service-4etIM-p6.js.map +1 -0
  318. package/dist/sheet.service-BiRZjCdN.cjs +2 -0
  319. package/dist/sheet.service-BiRZjCdN.cjs.map +1 -0
  320. package/dist/{slider-CeVgx4pL.js → slider-8E3Wad0t.js} +3 -3
  321. package/dist/{slider-CeVgx4pL.js.map → slider-8E3Wad0t.js.map} +1 -1
  322. package/dist/{slider-BgJccHrg.cjs → slider-VYnbIRH2.cjs} +2 -2
  323. package/dist/{slider-BgJccHrg.cjs.map → slider-VYnbIRH2.cjs.map} +1 -1
  324. package/dist/slider.cjs +1 -1
  325. package/dist/slider.js +1 -1
  326. package/dist/sound.service-Nza4c6wv.js +102 -0
  327. package/dist/sound.service-Nza4c6wv.js.map +1 -0
  328. package/dist/sound.service-eRirZw59.cjs +2 -0
  329. package/dist/sound.service-eRirZw59.cjs.map +1 -0
  330. package/dist/{spinner-Brq1TenP.js → spinner-CKm13CKN.js} +15 -12
  331. package/dist/spinner-CKm13CKN.js.map +1 -0
  332. package/dist/{spinner-BKeA2bdB.cjs → spinner-DJgcI5wr.cjs} +9 -9
  333. package/dist/spinner-DJgcI5wr.cjs.map +1 -0
  334. package/dist/steps.cjs +1 -1
  335. package/dist/steps.js +1 -1
  336. package/dist/store.cjs +1 -1
  337. package/dist/store.js +2 -2
  338. package/dist/{suggestion-chip-CWBSzu7C.js → suggestion-chip-6njXvvHm.js} +50 -46
  339. package/dist/suggestion-chip-6njXvvHm.js.map +1 -0
  340. package/dist/{suggestion-chip-dq20NKWy.cjs → suggestion-chip-DdLfqk7o.cjs} +18 -23
  341. package/dist/suggestion-chip-DdLfqk7o.cjs.map +1 -0
  342. package/dist/{surface-Bf8pvmdG.js → surface-BYU3l_Q2.js} +12 -11
  343. package/dist/surface-BYU3l_Q2.js.map +1 -0
  344. package/dist/{surface-fEPJ-cuu.cjs → surface-DcqbWGub.cjs} +5 -4
  345. package/dist/surface-DcqbWGub.cjs.map +1 -0
  346. package/dist/surface.cjs +1 -1
  347. package/dist/surface.js +1 -1
  348. package/dist/{table-DEnB9_Rf.cjs → table-C9fzDjjk.cjs} +2 -2
  349. package/dist/{table-DEnB9_Rf.cjs.map → table-C9fzDjjk.cjs.map} +1 -1
  350. package/dist/{table-MLd3oXm6.js → table-Dq12ollZ.js} +3 -3
  351. package/dist/{table-MLd3oXm6.js.map → table-Dq12ollZ.js.map} +1 -1
  352. package/dist/table.cjs +1 -1
  353. package/dist/table.js +1 -1
  354. package/dist/{tabs-compatibility-CXVHOR5X.cjs → tabs-compatibility-Dwtjfkcf.cjs} +2 -2
  355. package/dist/{tabs-compatibility-CXVHOR5X.cjs.map → tabs-compatibility-Dwtjfkcf.cjs.map} +1 -1
  356. package/dist/{tabs-compatibility-KWKzYolX.js → tabs-compatibility-wnzlHtln.js} +2 -2
  357. package/dist/{tabs-compatibility-KWKzYolX.js.map → tabs-compatibility-wnzlHtln.js.map} +1 -1
  358. package/dist/tabs.cjs +1 -1
  359. package/dist/tabs.js +1 -1
  360. package/dist/tailwind.mixin-Ddt05Frc.js +67 -0
  361. package/dist/{tailwind.mixin-DIW0B_of.js.map → tailwind.mixin-Ddt05Frc.js.map} +1 -1
  362. package/dist/tailwind.mixin-UijsBrYW.cjs +2 -0
  363. package/dist/{tailwind.mixin-3TPVvhYf.cjs.map → tailwind.mixin-UijsBrYW.cjs.map} +1 -1
  364. package/dist/teleport.cjs +1 -1
  365. package/dist/teleport.js +1 -1
  366. package/dist/textarea-DGmsw1B_.cjs +44 -0
  367. package/dist/{textarea-B7arkA7y.cjs.map → textarea-DGmsw1B_.cjs.map} +1 -1
  368. package/dist/{textarea-BK1m_CFR.js → textarea-Vd3zayJZ.js} +4 -3
  369. package/dist/{textarea-BK1m_CFR.js.map → textarea-Vd3zayJZ.js.map} +1 -1
  370. package/dist/textarea.cjs +1 -1
  371. package/dist/textarea.js +1 -1
  372. package/dist/{theme-button-BTKwL3oC.cjs → theme-button-DG_Xwg9H.cjs} +2 -2
  373. package/dist/{theme-button-BTKwL3oC.cjs.map → theme-button-DG_Xwg9H.cjs.map} +1 -1
  374. package/dist/{theme-button-C6kk8bay.js → theme-button-rGpEW_xS.js} +2 -2
  375. package/dist/{theme-button-C6kk8bay.js.map → theme-button-rGpEW_xS.js.map} +1 -1
  376. package/dist/theme-button.cjs +1 -1
  377. package/dist/theme-button.js +1 -1
  378. package/dist/{theme-controller-boat-BK59LqH9.js → theme-controller-boat-B1fjcqJI.js} +420 -228
  379. package/dist/theme-controller-boat-B1fjcqJI.js.map +1 -0
  380. package/dist/theme-controller-boat-pLzK5zxL.cjs +178 -0
  381. package/dist/theme-controller-boat-pLzK5zxL.cjs.map +1 -0
  382. package/dist/theme.cjs +1 -1
  383. package/dist/theme.js +13 -11
  384. package/dist/{timezone-nbn0o5GC.cjs → timezone-BhUaIAV7.cjs} +2 -2
  385. package/dist/{timezone-nbn0o5GC.cjs.map → timezone-BhUaIAV7.cjs.map} +1 -1
  386. package/dist/{timezone-D_skWX6Z.js → timezone-IQkwr6Oh.js} +3 -3
  387. package/dist/{timezone-D_skWX6Z.js.map → timezone-IQkwr6Oh.js.map} +1 -1
  388. package/dist/{tooltip-Btl0IKYC.js → tooltip-CwaiZC8f.js} +2 -2
  389. package/dist/{tooltip-Btl0IKYC.js.map → tooltip-CwaiZC8f.js.map} +1 -1
  390. package/dist/{tooltip-DyuMJEjL.cjs → tooltip-iEvxKg8g.cjs} +2 -2
  391. package/dist/{tooltip-DyuMJEjL.cjs.map → tooltip-iEvxKg8g.cjs.map} +1 -1
  392. package/dist/tooltip.cjs +1 -1
  393. package/dist/tooltip.js +1 -1
  394. package/dist/{tree-N4Y6MoQe.cjs → tree-Bclu6uvv.cjs} +2 -2
  395. package/dist/{tree-N4Y6MoQe.cjs.map → tree-Bclu6uvv.cjs.map} +1 -1
  396. package/dist/{tree-B_2eIFQi.js → tree-D9EbEsxn.js} +2 -2
  397. package/dist/{tree-B_2eIFQi.js.map → tree-D9EbEsxn.js.map} +1 -1
  398. package/dist/tree.cjs +1 -1
  399. package/dist/tree.js +1 -1
  400. package/dist/{typewriter-Blyrk_4c.js → typewriter-BjDPgRlj.js} +5 -5
  401. package/dist/{typewriter-Blyrk_4c.js.map → typewriter-BjDPgRlj.js.map} +1 -1
  402. package/dist/{typewriter-CFQAeOaw.cjs → typewriter-Bscwd-36.cjs} +4 -4
  403. package/dist/{typewriter-CFQAeOaw.cjs.map → typewriter-Bscwd-36.cjs.map} +1 -1
  404. package/dist/typewriter.cjs +1 -1
  405. package/dist/typewriter.js +1 -1
  406. package/dist/{typography-DjGWK58I.js → typography-CConBBFH.js} +13 -53
  407. package/dist/typography-CConBBFH.js.map +1 -0
  408. package/dist/{typography-DsIU0TGe.cjs → typography-DLGT3DGz.cjs} +3 -46
  409. package/dist/typography-DLGT3DGz.cjs.map +1 -0
  410. package/dist/typography.cjs +1 -1
  411. package/dist/typography.js +1 -1
  412. package/mixins/tailwind.css +37 -6
  413. package/package.json +21 -20
  414. package/types/src/area/area.service.d.ts +1 -1
  415. package/types/src/area/router.types.d.ts +1 -0
  416. package/types/src/audio/emotional-sounds.d.ts +122 -0
  417. package/types/src/audio/index.d.ts +30 -0
  418. package/types/src/audio/sound.service.d.ts +111 -0
  419. package/types/src/avatar.d.ts +10 -1
  420. package/types/src/busy/spinner.d.ts +6 -1
  421. package/types/src/button/button.d.ts +15 -2
  422. package/types/src/button/icon-button.d.ts +1 -1
  423. package/types/src/charts/area-chart.d.ts +58 -0
  424. package/types/src/charts/index.d.ts +4 -0
  425. package/types/src/charts/pills.d.ts +51 -0
  426. package/types/src/charts/types.d.ts +62 -0
  427. package/types/src/charts/utils.d.ts +28 -0
  428. package/types/src/checkbox/checkbox.d.ts +3 -2
  429. package/types/src/chips/chips.d.ts +2 -0
  430. package/types/src/content-drawer/drawer.service.d.ts +1 -7
  431. package/types/src/date-range/date-range-dialog.d.ts +16 -0
  432. package/types/src/date-range/date-range.d.ts +1 -1
  433. package/types/src/details/details.d.ts +8 -3
  434. package/types/src/dialog/dailog.d.ts +1 -5
  435. package/types/src/dialog/dialog-base.mixin.d.ts +26 -0
  436. package/types/src/dialog/dialog-service.d.ts +3 -66
  437. package/types/src/dialog/dialog.component.d.ts +63 -30
  438. package/types/src/dialog/index.d.ts +1 -3
  439. package/types/src/directives/height.d.ts +11 -6
  440. package/types/src/icons/icon.d.ts +17 -0
  441. package/types/src/index.d.ts +6 -0
  442. package/types/src/input/input.d.ts +13 -9
  443. package/types/src/json/index.d.ts +1 -0
  444. package/types/src/json/json.d.ts +15 -0
  445. package/types/src/lightbox/flip-directive.d.ts +29 -0
  446. package/types/src/lightbox/flip.directive.d.ts +22 -0
  447. package/types/src/lightbox/index.d.ts +4 -0
  448. package/types/src/lightbox/lightbox-service.d.ts +24 -0
  449. package/types/src/lightbox/lightbox.d.ts +34 -0
  450. package/types/src/lightbox/lightbox.directive.d.ts +30 -0
  451. package/types/src/nav-drawer/appbar.d.ts +0 -5
  452. package/types/src/nav-drawer/drawer.d.ts +1 -32
  453. package/types/src/notification/index.d.ts +1 -3
  454. package/types/src/notification/notification-service.d.ts +13 -1
  455. package/types/src/notification/notification.d.ts +13 -12
  456. package/types/src/notification/notify.d.ts +1 -1
  457. package/types/src/page/index.d.ts +1 -0
  458. package/types/src/page/page.d.ts +31 -0
  459. package/types/src/progress/progress.d.ts +2 -2
  460. package/types/src/qr-scanner/index.d.ts +1 -0
  461. package/types/src/qr-scanner/qr-scanner.d.ts +26 -0
  462. package/types/src/select/select.d.ts +1 -1
  463. package/types/src/theme/index.d.ts +1 -0
  464. package/types/src/theme/theme-audio-player.d.ts +100 -0
  465. package/types/src/theme/theme-controller-boat.d.ts +1 -0
  466. package/types/src/theme/theme.component.d.ts +1 -1
  467. package/types/src/types/index.d.ts +1 -0
  468. package/types/src/types/mood-audio.types.d.ts +173 -0
  469. package/types/src/typography/typography.d.ts +1 -0
  470. package/dist/area.component-CQq-Mh0Z.js.map +0 -1
  471. package/dist/area.component-Ciw7vGsx.cjs +0 -12
  472. package/dist/area.component-Ciw7vGsx.cjs.map +0 -1
  473. package/dist/avatar-Bo8kRnA-.cjs +0 -288
  474. package/dist/avatar-Bo8kRnA-.cjs.map +0 -1
  475. package/dist/avatar-Dm_qg-n1.js.map +0 -1
  476. package/dist/context-create-BJkkLr1D.cjs +0 -2
  477. package/dist/context-create-BJkkLr1D.cjs.map +0 -1
  478. package/dist/context-create-BvxbWTgj.js.map +0 -1
  479. package/dist/date-range-VkIMcQdT.js +0 -664
  480. package/dist/date-range-VkIMcQdT.js.map +0 -1
  481. package/dist/date-range-xYUr_KKx.cjs +0 -134
  482. package/dist/date-range-xYUr_KKx.cjs.map +0 -1
  483. package/dist/delay-CCreUpYu.cjs.map +0 -1
  484. package/dist/delay-Nu7RVtYd.js.map +0 -1
  485. package/dist/details-CjQrqBli.cjs +0 -98
  486. package/dist/details-CjQrqBli.cjs.map +0 -1
  487. package/dist/details-DVIWpEsI.js +0 -137
  488. package/dist/details-DVIWpEsI.js.map +0 -1
  489. package/dist/dialog-content-BgxKi73O.js +0 -256
  490. package/dist/dialog-content-BgxKi73O.js.map +0 -1
  491. package/dist/dialog-content-CM3-RXQQ.cjs +0 -85
  492. package/dist/dialog-content-CM3-RXQQ.cjs.map +0 -1
  493. package/dist/dialog-service-B4nR8Em5.cjs +0 -2
  494. package/dist/dialog-service-B4nR8Em5.cjs.map +0 -1
  495. package/dist/dialog-service-Bege4HF4.js +0 -140
  496. package/dist/dialog-service-Bege4HF4.js.map +0 -1
  497. package/dist/flex-BEB1yuMF.cjs +0 -43
  498. package/dist/flex-BEB1yuMF.cjs.map +0 -1
  499. package/dist/flex-BgcbHlPo.js +0 -260
  500. package/dist/flex-BgcbHlPo.js.map +0 -1
  501. package/dist/icon-D0FAI5uJ.js.map +0 -1
  502. package/dist/icon-DJnGMAQ2.cjs +0 -49
  503. package/dist/icon-DJnGMAQ2.cjs.map +0 -1
  504. package/dist/icon-button-CSZtSmOy.cjs +0 -65
  505. package/dist/icon-button-CSZtSmOy.cjs.map +0 -1
  506. package/dist/icon-button-CbgQp3AL.js +0 -156
  507. package/dist/icon-button-CbgQp3AL.js.map +0 -1
  508. package/dist/input-DLnKAj3B.js.map +0 -1
  509. package/dist/input-wZ6ORWru.cjs +0 -51
  510. package/dist/input-wZ6ORWru.cjs.map +0 -1
  511. package/dist/menu-ofiPDY2a.js +0 -61
  512. package/dist/navigation-rail-CEDLJTrH.cjs.map +0 -1
  513. package/dist/navigation-rail-weSW6BCv.js.map +0 -1
  514. package/dist/notification-service-B4nvP2Jc.js +0 -532
  515. package/dist/notification-service-B4nvP2Jc.js.map +0 -1
  516. package/dist/notification-service-B_pa74hl.cjs +0 -143
  517. package/dist/notification-service-B_pa74hl.cjs.map +0 -1
  518. package/dist/notify-Ci0HrUIo.js.map +0 -1
  519. package/dist/notify-aasSKQGA.cjs.map +0 -1
  520. package/dist/progress-B1f3y-Mf.js +0 -58
  521. package/dist/progress-B1f3y-Mf.js.map +0 -1
  522. package/dist/progress-DdBHNIMT.cjs +0 -35
  523. package/dist/progress-DdBHNIMT.cjs.map +0 -1
  524. package/dist/ripple-QoNZUUw_.js +0 -148
  525. package/dist/ripple-QoNZUUw_.js.map +0 -1
  526. package/dist/ripple-Ujq_REH4.cjs +0 -16
  527. package/dist/ripple-Ujq_REH4.cjs.map +0 -1
  528. package/dist/select-ApLZefMf.js.map +0 -1
  529. package/dist/select-_2Ag_znm.cjs.map +0 -1
  530. package/dist/sheet.service-BvOiOFMm.js.map +0 -1
  531. package/dist/sheet.service-DfHrOxyc.cjs +0 -2
  532. package/dist/sheet.service-DfHrOxyc.cjs.map +0 -1
  533. package/dist/spinner-BKeA2bdB.cjs.map +0 -1
  534. package/dist/spinner-Brq1TenP.js.map +0 -1
  535. package/dist/suggestion-chip-CWBSzu7C.js.map +0 -1
  536. package/dist/suggestion-chip-dq20NKWy.cjs.map +0 -1
  537. package/dist/surface-Bf8pvmdG.js.map +0 -1
  538. package/dist/surface-fEPJ-cuu.cjs.map +0 -1
  539. package/dist/tailwind.mixin-3TPVvhYf.cjs +0 -2
  540. package/dist/tailwind.mixin-DIW0B_of.js +0 -67
  541. package/dist/textarea-B7arkA7y.cjs +0 -44
  542. package/dist/theme-controller-boat-BK59LqH9.js.map +0 -1
  543. package/dist/theme-controller-boat-Y5QXwJxW.cjs +0 -64
  544. package/dist/theme-controller-boat-Y5QXwJxW.cjs.map +0 -1
  545. package/dist/typography-DjGWK58I.js.map +0 -1
  546. package/dist/typography-DsIU0TGe.cjs.map +0 -1
  547. package/types/src/notification/notification-audio-generator.d.ts +0 -45
  548. package/types/src/notification/notification-audio.d.ts +0 -79
  549. package/types/src/notification/notification-container.d.ts +0 -48
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lightbox-service-3mHqBKEh.cjs","sources":["../src/lightbox/flip-directive.ts","../src/lightbox/lightbox.ts","../src/lightbox/lightbox.directive.ts","../src/lightbox/lightbox-service.ts"],"sourcesContent":["import { directive, PartInfo, PartType, ElementPart } from 'lit/directive.js'\nimport { AsyncDirective } from 'lit/async-directive.js'\nimport { noChange } from 'lit'\n\nexport interface FlipOptions {\n\t/** Source element to animate from (uses element's bounding rect) */\n\tsourceElement?: HTMLElement\n\t/** Click position - can be MouseEvent, TouchEvent, or {x, y} coordinates */\n\tposition?: { x: number; y: number } | MouseEvent | TouchEvent\n\t/** Animation duration in ms (total for both stages) */\n\tduration?: number\n\t/** CSS easing function */\n\teasing?: string\n\t/** Whether to animate scale (default: true) */\n\tscale?: boolean\n\t/** Enable blackbird two-stage arc animation (default: true) */\n\tblackbird?: boolean\n}\n\n/** Extract x,y coordinates from various position inputs */\nfunction extractPosition(pos: FlipOptions['position']): { x: number; y: number } | null {\n\tif (!pos) return null\n\n\tif ('clientX' in pos) {\n\t\t// MouseEvent\n\t\treturn { x: pos.clientX, y: pos.clientY }\n\t} else if ('touches' in pos && pos.touches.length) {\n\t\t// TouchEvent\n\t\treturn { x: pos.touches[0].clientX, y: pos.touches[0].clientY }\n\t} else if ('x' in pos && 'y' in pos) {\n\t\t// Position object\n\t\treturn { x: pos.x, y: pos.y }\n\t}\n\n\treturn null\n}\n\n/**\n * Calculate arc control point for bird-like curved trajectory\n * Birds arc UP when taking off and arc DOWN when landing\n */\nfunction calculateArcPoint(\n\tstart: { x: number; y: number },\n\tend: { x: number; y: number },\n\tarcDirection: 'up' | 'down' = 'up',\n\tintensity: number = 0.3,\n): { x: number; y: number } {\n\tconst midX = (start.x + end.x) / 2\n\tconst midY = (start.y + end.y) / 2\n\tconst distance = Math.sqrt(Math.pow(end.x - start.x, 2) + Math.pow(end.y - start.y, 2))\n\n\t// Arc height proportional to distance, but capped\n\tconst arcHeight = Math.min(distance * intensity, 150)\n\n\treturn {\n\t\tx: midX,\n\t\ty: arcDirection === 'up' ? midY - arcHeight : midY + arcHeight,\n\t}\n}\n\nclass FlipDirective extends AsyncDirective {\n\tprivate element?: HTMLElement\n\tprivate hasAnimated = false\n\n\tconstructor(partInfo: PartInfo) {\n\t\tsuper(partInfo)\n\t\tif (partInfo.type !== PartType.ELEMENT) {\n\t\t\tthrow new Error('flip directive can only be used on elements')\n\t\t}\n\t}\n\n\trender(_options?: FlipOptions) {\n\t\treturn noChange\n\t}\n\n\tupdate(part: ElementPart, [options]: [FlipOptions?]) {\n\t\tthis.element = part.element as HTMLElement\n\n\t\t// Animate if we have either a source element or position\n\t\tconst hasSource = options?.sourceElement || options?.position\n\t\tif (!this.hasAnimated && hasSource) {\n\t\t\tthis.hasAnimated = true\n\t\t\tthis.animateIn(options)\n\t\t}\n\n\t\treturn noChange\n\t}\n\n\tprivate animateIn(options?: FlipOptions) {\n\t\tif (!this.element) return\n\n\t\t// Check reduced motion preference\n\t\tif (window.matchMedia('(prefers-reduced-motion: reduce)').matches) return\n\n\t\tconst totalDuration = options?.duration ?? 600\n\t\tconst animateScale = options?.scale !== false\n\t\tconst useBlackbird = options?.blackbird !== false\n\n\t\t// Get positions\n\t\tconst clickPos = extractPosition(options?.position)\n\t\tconst sourceRect = options?.sourceElement?.getBoundingClientRect()\n\n\t\tconst animate = () => {\n\t\t\tconst targetRect = this.element!.getBoundingClientRect()\n\t\t\tconst targetCenter = {\n\t\t\t\tx: targetRect.left + targetRect.width / 2,\n\t\t\t\ty: targetRect.top + targetRect.height / 2,\n\t\t\t}\n\n\t\t\t// Determine source point\n\t\t\tlet sourceCenter: { x: number; y: number }\n\t\t\tlet sourceScale = { x: 0.1, y: 0.1 }\n\n\t\t\tif (sourceRect) {\n\t\t\t\tsourceCenter = {\n\t\t\t\t\tx: sourceRect.left + sourceRect.width / 2,\n\t\t\t\t\ty: sourceRect.top + sourceRect.height / 2,\n\t\t\t\t}\n\t\t\t\tif (animateScale) {\n\t\t\t\t\tsourceScale = {\n\t\t\t\t\t\tx: sourceRect.width / targetRect.width,\n\t\t\t\t\t\ty: sourceRect.height / targetRect.height,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (clickPos) {\n\t\t\t\tsourceCenter = clickPos\n\t\t\t} else {\n\t\t\t\tsourceCenter = { x: window.innerWidth / 2, y: window.innerHeight / 2 }\n\t\t\t}\n\n\t\t\t// Calculate deltas from target (where element is) to source (where we start)\n\t\t\tconst sourceDelta = {\n\t\t\t\tx: sourceCenter.x - targetCenter.x,\n\t\t\t\ty: sourceCenter.y - targetCenter.y,\n\t\t\t}\n\n\t\t\tif (useBlackbird && clickPos && sourceRect) {\n\t\t\t\t// TWO-STAGE BLACKBIRD ANIMATION\n\t\t\t\t// Stage 1: Source element → Click position (takeoff arc - UP)\n\t\t\t\t// Stage 2: Click position → Final destination (landing arc - DOWN)\n\n\t\t\t\tconst clickDelta = {\n\t\t\t\t\tx: clickPos.x - targetCenter.x,\n\t\t\t\t\ty: clickPos.y - targetCenter.y,\n\t\t\t\t}\n\n\t\t\t\t// Calculate arc control points\n\t\t\t\tconst takeoffArc = calculateArcPoint(sourceCenter, clickPos, 'up', 0.4)\n\t\t\t\tconst landingArc = calculateArcPoint(clickPos, targetCenter, 'down', 0.3)\n\n\t\t\t\t// Arc deltas relative to target\n\t\t\t\tconst takeoffArcDelta = {\n\t\t\t\t\tx: takeoffArc.x - targetCenter.x,\n\t\t\t\t\ty: takeoffArc.y - targetCenter.y,\n\t\t\t\t}\n\t\t\t\tconst landingArcDelta = {\n\t\t\t\t\tx: landingArc.x - targetCenter.x,\n\t\t\t\t\ty: landingArc.y - targetCenter.y,\n\t\t\t\t}\n\n\t\t\t\t// Intermediate scale at click position\n\t\t\t\tconst midScale = 0.3\n\n\t\t\t\t// Create keyframes for two-stage arc animation\n\t\t\t\t// 0% → 25% → 50% → 75% → 100%\n\t\t\t\t// Source → Takeoff Arc → Click → Landing Arc → Final\n\t\t\t\tthis.element!.animate(\n\t\t\t\t\t[\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// 0% - Start at source element\n\t\t\t\t\t\t\ttransform: `translate(${sourceDelta.x}px, ${sourceDelta.y}px) scale(${sourceScale.x}, ${sourceScale.y})`,\n\t\t\t\t\t\t\topacity: 0.6,\n\t\t\t\t\t\t\toffset: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// 25% - Peak of takeoff arc (bird lifts up)\n\t\t\t\t\t\t\ttransform: `translate(${takeoffArcDelta.x}px, ${takeoffArcDelta.y}px) scale(${midScale * 0.7})`,\n\t\t\t\t\t\t\topacity: 0.8,\n\t\t\t\t\t\t\toffset: 0.25,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// 50% - At click position (transition point)\n\t\t\t\t\t\t\ttransform: `translate(${clickDelta.x}px, ${clickDelta.y}px) scale(${midScale})`,\n\t\t\t\t\t\t\topacity: 0.9,\n\t\t\t\t\t\t\toffset: 0.5,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// 75% - Landing arc (bird descends toward target)\n\t\t\t\t\t\t\ttransform: `translate(${landingArcDelta.x}px, ${landingArcDelta.y}px) scale(0.6)`,\n\t\t\t\t\t\t\topacity: 0.95,\n\t\t\t\t\t\t\toffset: 0.75,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// 100% - Final position\n\t\t\t\t\t\t\ttransform: 'translate(0, 0) scale(1)',\n\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\toffset: 1,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\t{\n\t\t\t\t\t\tduration: totalDuration,\n\t\t\t\t\t\teasing: 'cubic-bezier(0.34, 1.2, 0.64, 1)', // Slight overshoot for organic feel\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t} else if (useBlackbird && clickPos) {\n\t\t\t\t// SINGLE-STAGE with arc (click position to final)\n\t\t\t\tconst arcPoint = calculateArcPoint(clickPos, targetCenter, 'down', 0.35)\n\t\t\t\tconst arcDelta = {\n\t\t\t\t\tx: arcPoint.x - targetCenter.x,\n\t\t\t\t\ty: arcPoint.y - targetCenter.y,\n\t\t\t\t}\n\n\t\t\t\tthis.element!.animate(\n\t\t\t\t\t[\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttransform: `translate(${sourceDelta.x}px, ${sourceDelta.y}px) scale(0.1)`,\n\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t\toffset: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttransform: `translate(${arcDelta.x}px, ${arcDelta.y}px) scale(0.5)`,\n\t\t\t\t\t\t\topacity: 0.8,\n\t\t\t\t\t\t\toffset: 0.5,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttransform: 'translate(0, 0) scale(1)',\n\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\toffset: 1,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\t{\n\t\t\t\t\t\tduration: totalDuration,\n\t\t\t\t\t\teasing: 'cubic-bezier(0.34, 1.2, 0.64, 1)',\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\t// SIMPLE animation (fallback)\n\t\t\t\tthis.element!.animate(\n\t\t\t\t\t[\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttransform: `translate(${sourceDelta.x}px, ${sourceDelta.y}px) scale(${sourceScale.x}, ${sourceScale.y})`,\n\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ transform: 'translate(0, 0) scale(1, 1)', opacity: 1 },\n\t\t\t\t\t],\n\t\t\t\t\t{\n\t\t\t\t\t\tduration: totalDuration,\n\t\t\t\t\t\teasing: options?.easing ?? 'cubic-bezier(0.34, 1.56, 0.64, 1)',\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\t// Handle image loading\n\t\tif (this.element instanceof HTMLImageElement) {\n\t\t\tif (this.element.complete) {\n\t\t\t\trequestAnimationFrame(animate)\n\t\t\t} else {\n\t\t\t\tthis.element.onload = () => requestAnimationFrame(animate)\n\t\t\t}\n\t\t} else {\n\t\t\trequestAnimationFrame(animate)\n\t\t}\n\t}\n}\n\nexport const flip = directive(FlipDirective)\n","import { css, html, PropertyValues } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\nimport { ref, createRef, Ref } from 'lit/directives/ref.js'\nimport { fromEvent } from 'rxjs'\nimport { filter, takeUntil, tap, switchMap, map, first } from 'rxjs/operators'\nimport { $LitElement } from '@mixins/index';\n\n@customElement('schmancy-lightbox')\nexport class SchmancyLightbox extends $LitElement(css`\n\t:host {\n\t\tdisplay: contents;\n\t}\n`) {\n\t@property({ type: String }) src: string = ''\n\t@property({ type: Array }) images: string[] = []\n\t@property({ type: Number }) initialIndex: number = 0\n\t@property({ type: Boolean }) open: boolean = false\n\n\t@state() private currentIndex: number = 0\n\t@state() private isLoading: boolean = false\n\n\tprivate readonly swipeThreshold = 50\n\tprivate overlayRef: Ref<HTMLDivElement> = createRef()\n\tprivate contentRef: Ref<HTMLDivElement> = createRef()\n\tprivate imageRef: Ref<HTMLImageElement> = createRef()\n\n\tprivate get isGalleryMode(): boolean {\n\t\treturn this.images.length > 0\n\t}\n\n\tprivate get currentImageSrc(): string {\n\t\tif (this.isGalleryMode) {\n\t\t\treturn this.images[this.currentIndex] || ''\n\t\t}\n\t\treturn this.src\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.currentIndex = this.initialIndex\n\t}\n\n\tupdated(changedProperties: PropertyValues) {\n\t\tsuper.updated(changedProperties)\n\n\t\tif (changedProperties.has('open')) {\n\t\t\tif (this.open) {\n\t\t\t\tdocument.body.style.overflow = 'hidden'\n\t\t\t\tthis.animateIn()\n\t\t\t\tthis.setupEventListeners()\n\t\t\t} else {\n\t\t\t\tdocument.body.style.overflow = ''\n\t\t\t\tthis.animateOut()\n\t\t\t}\n\t\t}\n\n\t\tif (changedProperties.has('initialIndex')) {\n\t\t\tthis.currentIndex = this.initialIndex\n\t\t}\n\n\t\tif (changedProperties.has('currentIndex') && this.open) {\n\t\t\tthis.animateImageChange()\n\t\t}\n\t}\n\n\tprivate animateIn() {\n\t\tconst overlay = this.overlayRef.value\n\t\tconst content = this.contentRef.value\n\t\tconst image = this.imageRef.value\n\n\t\tif (overlay) {\n\t\t\t// Set initial styles\n\t\t\toverlay.style.backgroundColor = 'rgba(0, 0, 0, 0)'\n\t\t\toverlay.style.opacity = '0'\n\n\t\t\t// Animate to visible state\n\t\t\toverlay.animate(\n\t\t\t\t[\n\t\t\t\t\t{ opacity: 0 },\n\t\t\t\t\t{ opacity: 1 },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: 300,\n\t\t\t\t\teasing: 'cubic-bezier(0.25, 1, 0.5, 1)',\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t},\n\t\t\t)\n\n\t\t\t// Manually set background color after a tick\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\toverlay.style.backgroundColor = 'rgba(0, 0, 0, 0.95)'\n\t\t\t})\n\t\t}\n\n\t\tif (content) {\n\t\t\tcontent.animate(\n\t\t\t\t[\n\t\t\t\t\t{ transform: 'scale(0.95)', opacity: 0 },\n\t\t\t\t\t{ transform: 'scale(1)', opacity: 1 },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: 400,\n\t\t\t\t\tdelay: 100,\n\t\t\t\t\teasing: 'cubic-bezier(0.34, 1.56, 0.64, 1)', // Spring effect\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\n\t\tif (image) {\n\t\t\timage.animate(\n\t\t\t\t[\n\t\t\t\t\t{ opacity: 0, transform: 'scale(0.98)' },\n\t\t\t\t\t{ opacity: 1, transform: 'scale(1)' },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: 350,\n\t\t\t\t\tdelay: 150,\n\t\t\t\t\teasing: 'cubic-bezier(0.25, 1, 0.5, 1)',\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate animateOut() {\n\t\tconst overlay = this.overlayRef.value\n\t\tconst content = this.contentRef.value\n\t\tconst image = this.imageRef.value\n\n\t\tif (image) {\n\t\t\timage.animate(\n\t\t\t\t[\n\t\t\t\t\t{ transform: 'scale(1)', opacity: 1 },\n\t\t\t\t\t{ transform: 'scale(0.95)', opacity: 0 },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: 200,\n\t\t\t\t\teasing: 'ease-out',\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\n\t\tif (content) {\n\t\t\tcontent.animate(\n\t\t\t\t[\n\t\t\t\t\t{ transform: 'scale(1)', opacity: 1 },\n\t\t\t\t\t{ transform: 'scale(0.95)', opacity: 0 },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: 250,\n\t\t\t\t\teasing: 'ease-out',\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\n\t\tif (overlay) {\n\t\t\tconst animation = overlay.animate(\n\t\t\t\t[\n\t\t\t\t\t{ opacity: 1 },\n\t\t\t\t\t{ opacity: 0 },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: 250,\n\t\t\t\t\tdelay: 50,\n\t\t\t\t\teasing: 'ease-out',\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t},\n\t\t\t)\n\n\t\t\tanimation.onfinish = () => {\n\t\t\t\t// Reset background color\n\t\t\t\toverlay.style.backgroundColor = 'rgba(0, 0, 0, 0)'\n\t\t\t\tthis.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }))\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate animateImageChange() {\n\t\tconst image = this.imageRef.value\n\t\tif (!image) return\n\n\t\t// Fade out\n\t\tconst fadeOut = image.animate(\n\t\t\t[\n\t\t\t\t{ opacity: 1, transform: 'scale(1)' },\n\t\t\t\t{ opacity: 0, transform: 'scale(0.98)' },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: 150,\n\t\t\t\teasing: 'ease-out',\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t)\n\n\t\t// Fade in after fade out completes\n\t\tfadeOut.onfinish = () => {\n\t\t\timage.animate(\n\t\t\t\t[\n\t\t\t\t\t{ opacity: 0, transform: 'scale(0.98)' },\n\t\t\t\t\t{ opacity: 1, transform: 'scale(1)' },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: 200,\n\t\t\t\t\teasing: 'cubic-bezier(0.25, 1, 0.5, 1)',\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate setupEventListeners() {\n\t\t// Keyboard navigation\n\t\tfromEvent<KeyboardEvent>(document, 'keydown')\n\t\t\t.pipe(\n\t\t\t\tfilter(() => this.open),\n\t\t\t\ttap(e => {\n\t\t\t\t\tswitch (e.key) {\n\t\t\t\t\t\tcase 'Escape':\n\t\t\t\t\t\t\tthis.handleClose()\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'ArrowLeft':\n\t\t\t\t\t\t\tthis.handlePrevious()\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'ArrowRight':\n\t\t\t\t\t\t\tthis.handleNext()\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\n\t\t// Touch/swipe events for mobile\n\t\tif (!this.isGalleryMode || this.images.length <= 1) return\n\n\t\tconst content = this.contentRef.value\n\t\tif (!content) return\n\n\t\tconst touchStart$ = fromEvent<TouchEvent>(content, 'touchstart')\n\t\tconst touchEnd$ = fromEvent<TouchEvent>(content, 'touchend')\n\n\t\ttouchStart$\n\t\t\t.pipe(\n\t\t\t\tswitchMap(startEvent => {\n\t\t\t\t\tconst startX = startEvent.touches[0].clientX\n\t\t\t\t\treturn touchEnd$.pipe(\n\t\t\t\t\t\tfirst(),\n\t\t\t\t\t\tmap(endEvent => {\n\t\t\t\t\t\t\tconst endX = endEvent.changedTouches[0].clientX\n\t\t\t\t\t\t\treturn endX - startX\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tfilter(distance => Math.abs(distance) > this.swipeThreshold),\n\t\t\t\ttap(distance => (distance > 0 ? this.handlePrevious() : this.handleNext())),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tprivate handleClose = () => {\n\t\tthis.open = false\n\t}\n\n\tprivate handlePrevious = () => {\n\t\tif (this.isGalleryMode && this.images.length > 1) {\n\t\t\tthis.isLoading = true\n\t\t\tthis.currentIndex = (this.currentIndex - 1 + this.images.length) % this.images.length\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('change', {\n\t\t\t\t\tdetail: { index: this.currentIndex },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate handleNext = () => {\n\t\tif (this.isGalleryMode && this.images.length > 1) {\n\t\t\tthis.isLoading = true\n\t\t\tthis.currentIndex = (this.currentIndex + 1) % this.images.length\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('change', {\n\t\t\t\t\tdetail: { index: this.currentIndex },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate handleImageLoad = () => {\n\t\tthis.isLoading = false\n\t}\n\n\tprivate handleOverlayClick = (e: Event) => {\n\t\t// Close when clicking the overlay (not the content)\n\t\tif (e.target === e.currentTarget) {\n\t\t\tthis.handleClose()\n\t\t}\n\t}\n\n\trender() {\n\t\tif (!this.open) return html``\n\n\t\treturn html`\n\t\t\t<div\n\t\t\t\t${ref(this.overlayRef)}\n\t\t\t\tclass=\"fixed inset-0 z-9999 flex items-center justify-center backdrop-blur-sm\"\n\t\t\t\t@click=${this.handleOverlayClick}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\t${ref(this.contentRef)}\n\t\t\t\t\tclass=\"relative max-w-[90vw] max-h-[90vh]\"\n\t\t\t\t\t@click=${(e: Event) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t<!-- Close Button -->\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"absolute top-4 right-4 md:top-4 md:right-4 sm:top-2 sm:right-2 bg-white/15 backdrop-blur-md border border-white/20 text-white w-11 h-11 rounded-full flex items-center justify-center cursor-pointer z-10 transition-all duration-200 hover:bg-white/25 hover:scale-105 active:scale-95\"\n\t\t\t\t\t\t@click=${this.handleClose}\n\t\t\t\t\t\taria-label=\"Close lightbox\"\n\t\t\t\t\t\ttitle=\"Close (Esc)\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<schmancy-icon>close</schmancy-icon>\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<!-- Touch Zones for Gallery Navigation -->\n\t\t\t\t\t${when(\n\t\t\t\t\t\tthis.isGalleryMode && this.images.length > 1,\n\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"absolute top-0 bottom-0 left-0 w-1/3 cursor-pointer z-5\"\n\t\t\t\t\t\t\t\t@click=${this.handlePrevious}\n\t\t\t\t\t\t\t></div>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"absolute top-0 bottom-0 right-0 w-1/3 cursor-pointer z-5\"\n\t\t\t\t\t\t\t\t@click=${this.handleNext}\n\t\t\t\t\t\t\t></div>\n\t\t\t\t\t\t`,\n\t\t\t\t\t)}\n\n\t\t\t\t\t<!-- Loading Spinner -->\n\t\t\t\t\t${when(\n\t\t\t\t\t\tthis.isLoading,\n\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t<div class=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\">\n\t\t\t\t\t\t\t\t<schmancy-progress indeterminate></schmancy-progress>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`,\n\t\t\t\t\t)}\n\n\t\t\t\t\t<!-- Main Image -->\n\t\t\t\t\t<img\n\t\t\t\t\t\t${ref(this.imageRef)}\n\t\t\t\t\t\tclass=\"max-w-[90vw] max-h-[90vh] object-contain rounded select-none touch-pinch-zoom ${this\n\t\t\t\t\t\t\t.isGalleryMode\n\t\t\t\t\t\t\t? 'cursor-default'\n\t\t\t\t\t\t\t: 'cursor-pointer'}\"\n\t\t\t\t\t\t.src=${this.currentImageSrc}\n\t\t\t\t\t\talt=\"Full size image\"\n\t\t\t\t\t\t@load=${this.handleImageLoad}\n\t\t\t\t\t\t@click=${() => (!this.isGalleryMode ? this.handleClose() : null)}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<!-- Navigation Controls (Gallery Mode Only) -->\n\t\t\t\t\t${when(\n\t\t\t\t\t\tthis.isGalleryMode && this.images.length > 1,\n\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"absolute bottom-[-3.5rem] md:bottom-[-3.5rem] sm:bottom-[-3rem] left-1/2 -translate-x-1/2 flex items-center gap-4 z-10\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclass=\"bg-white/15 backdrop-blur-md border border-white/20 text-white w-10 h-10 rounded-full flex items-center justify-center cursor-pointer transition-all duration-200 hover:bg-white/25 hover:scale-105 active:scale-95\"\n\t\t\t\t\t\t\t\t\t@click=${this.handlePrevious}\n\t\t\t\t\t\t\t\t\taria-label=\"Previous image\"\n\t\t\t\t\t\t\t\t\ttitle=\"Previous (←)\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<schmancy-icon>arrow_back</schmancy-icon>\n\t\t\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t\t\t<div class=\"text-white text-base font-medium min-w-16 text-center\" aria-live=\"polite\">\n\t\t\t\t\t\t\t\t\t${this.currentIndex + 1} / ${this.images.length}\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclass=\"bg-white/15 backdrop-blur-md border border-white/20 text-white w-10 h-10 rounded-full flex items-center justify-center cursor-pointer transition-all duration-200 hover:bg-white/25 hover:scale-105 active:scale-95\"\n\t\t\t\t\t\t\t\t\t@click=${this.handleNext}\n\t\t\t\t\t\t\t\t\taria-label=\"Next image\"\n\t\t\t\t\t\t\t\t\ttitle=\"Next (→)\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<schmancy-icon>arrow_forward</schmancy-icon>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`,\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-lightbox': SchmancyLightbox\n\t}\n}\n","import { directive, PartInfo, PartType, ElementPart } from 'lit/directive.js'\nimport { AsyncDirective } from 'lit/async-directive.js'\nimport { noChange, TemplateResult } from 'lit'\nimport { html, render } from 'lit'\nimport { styleMap } from 'lit/directives/style-map.js'\nimport { flip } from './flip-directive.js'\n\nexport interface LightboxOptions {\n\timages?: string[]\n\tindex?: number\n\toverlay?: TemplateResult\n}\n\nclass LightboxDirective extends AsyncDirective {\n\tprivate element?: HTMLImageElement\n\tprivate clickHandler?: EventListener\n\tprivate keyHandler?: EventListener\n\tprivate overlayElement?: HTMLDivElement\n\tprivate currentIndex = 0\n\tprivate images: string[] = []\n\tprivate overlay?: TemplateResult\n\tprivate clickPosition?: { x: number; y: number }\n\n\tconstructor(partInfo: PartInfo) {\n\t\tsuper(partInfo)\n\t\tif (partInfo.type !== PartType.ELEMENT) {\n\t\t\tthrow new Error('lightbox directive can only be used on elements')\n\t\t}\n\t}\n\n\trender(_options?: LightboxOptions) {\n\t\treturn noChange\n\t}\n\n\tupdate(part: ElementPart, [options]: [LightboxOptions?]) {\n\t\tthis.element = part.element as HTMLImageElement\n\n\t\t// Setup click handler\n\t\tif (!this.clickHandler) {\n\t\t\tthis.clickHandler = (e: Event) => {\n\t\t\t\te.preventDefault()\n\t\t\t\te.stopPropagation()\n\n\t\t\t\t// Capture click position from MouseEvent or TouchEvent\n\t\t\t\tif ('clientX' in e) {\n\t\t\t\t\tthis.clickPosition = { x: (e as MouseEvent).clientX, y: (e as MouseEvent).clientY }\n\t\t\t\t} else if ('touches' in e && (e as TouchEvent).touches.length) {\n\t\t\t\t\tconst touch = (e as TouchEvent).touches[0]\n\t\t\t\t\tthis.clickPosition = { x: touch.clientX, y: touch.clientY }\n\t\t\t\t}\n\n\t\t\t\tif (options?.images && options.images.length > 0) {\n\t\t\t\t\tthis.images = options.images\n\t\t\t\t\tthis.currentIndex = options.index || 0\n\t\t\t\t} else {\n\t\t\t\t\tthis.images = [this.element!.src]\n\t\t\t\t\tthis.currentIndex = 0\n\t\t\t\t}\n\t\t\t\tthis.overlay = options?.overlay\n\n\t\t\t\tthis.open()\n\t\t\t}\n\n\t\t\tthis.element.addEventListener('click', this.clickHandler)\n\t\t\tthis.element.style.cursor = 'pointer'\n\t\t\tthis.element.classList.add('hover:opacity-80', 'transition-opacity')\n\t\t}\n\n\t\treturn noChange\n\t}\n\n\tprivate open() {\n\t\t// Create overlay container with flex centering\n\t\tthis.overlayElement = document.createElement('div')\n\t\tthis.overlayElement.className = 'fixed inset-0 flex items-center justify-center opacity-0 bg-black/95 backdrop-blur-sm'\n\t\tthis.overlayElement.style.zIndex = '1000'\n\n\t\t// Render lightbox content using Lit\n\t\trender(this.renderLightbox(), this.overlayElement)\n\n\t\t// Add to body\n\t\tdocument.body.appendChild(this.overlayElement)\n\t\tdocument.body.style.overflow = 'hidden'\n\n\t\t// Animate in overlay\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.overlayElement!.animate([{ opacity: 0 }, { opacity: 1 }], {\n\t\t\t\tduration: 300,\n\t\t\t\teasing: 'cubic-bezier(0.25, 1, 0.5, 1)',\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t})\n\n\t\t// Setup keyboard\n\t\tthis.keyHandler = (e: KeyboardEvent) => {\n\t\t\tif (e.key === 'Escape') this.close()\n\t\t\tif (e.key === 'ArrowLeft' && this.images.length > 1) this.prev()\n\t\t\tif (e.key === 'ArrowRight' && this.images.length > 1) this.next()\n\t\t}\n\t\tdocument.addEventListener('keydown', this.keyHandler)\n\n\t\t// Click overlay to close\n\t\tthis.overlayElement.addEventListener('click', e => {\n\t\t\tif (e.target === this.overlayElement) this.close()\n\t\t})\n\t}\n\n\tprivate close() {\n\t\tif (!this.overlayElement) return\n\n\t\tconst contentContainer = this.overlayElement.querySelector('[data-lightbox-content]') as HTMLElement\n\n\t\t// Animate back to click position\n\t\tif (contentContainer && this.clickPosition) {\n\t\t\tconst rect = contentContainer.getBoundingClientRect()\n\n\t\t\t// Animate container shrinking toward click point\n\t\t\tconst deltaX = this.clickPosition.x - (rect.left + rect.width / 2)\n\t\t\tconst deltaY = this.clickPosition.y - (rect.top + rect.height / 2)\n\n\t\t\tconst containerAnim = contentContainer.animate(\n\t\t\t\t[\n\t\t\t\t\t{ transform: 'translate(0, 0) scale(1)', opacity: 1 },\n\t\t\t\t\t{ transform: `translate(${deltaX}px, ${deltaY}px) scale(0.1)`, opacity: 0 },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: 300,\n\t\t\t\t\teasing: 'cubic-bezier(0.4, 0, 0.2, 1)',\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t},\n\t\t\t)\n\n\t\t\tthis.overlayElement.animate([{ opacity: 1 }, { opacity: 0 }], {\n\t\t\t\tduration: 250,\n\t\t\t\teasing: 'ease-out',\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\n\t\t\tcontainerAnim.onfinish = () => {\n\t\t\t\tthis.overlayElement?.remove()\n\t\t\t\tthis.overlayElement = undefined\n\t\t\t\tdocument.body.style.overflow = ''\n\t\t\t}\n\t\t} else {\n\t\t\t// Fallback to simple fade\n\t\t\tconst animation = this.overlayElement.animate([{ opacity: 1 }, { opacity: 0 }], {\n\t\t\t\tduration: 250,\n\t\t\t\teasing: 'ease-out',\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\n\t\t\tanimation.onfinish = () => {\n\t\t\t\tthis.overlayElement?.remove()\n\t\t\t\tthis.overlayElement = undefined\n\t\t\t\tdocument.body.style.overflow = ''\n\t\t\t}\n\t\t}\n\n\t\tif (this.keyHandler) {\n\t\t\tdocument.removeEventListener('keydown', this.keyHandler)\n\t\t\tthis.keyHandler = undefined\n\t\t}\n\t}\n\n\tprivate prev() {\n\t\tthis.currentIndex = (this.currentIndex - 1 + this.images.length) % this.images.length\n\t\tthis.updateImage()\n\t}\n\n\tprivate next() {\n\t\tthis.currentIndex = (this.currentIndex + 1) % this.images.length\n\t\tthis.updateImage()\n\t}\n\n\tprivate updateImage() {\n\t\tif (!this.overlayElement) return\n\t\trender(this.renderLightbox(), this.overlayElement)\n\t}\n\n\tprivate renderLightbox() {\n\t\tconst currentSrc = this.images[this.currentIndex]\n\t\tconst isGallery = this.images.length > 1\n\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tdata-lightbox-content\n\t\t\t\tclass=\"relative\"\n\t\t\t\tstyle=${styleMap({\n\t\t\t\t\ttransformOrigin: 'center center',\n\t\t\t\t})}\n\t\t\t\t@click=${(e: Event) => e.stopPropagation()}\n\t\t\t>\n\t\t\t\t<!-- Close button -->\n\t\t\t\t<button\n\t\t\t\t\tclass=\"absolute top-2 right-2 z-10 w-10 h-10 rounded-full bg-white/20 hover:bg-white/30 flex items-center justify-center text-white transition-colors\"\n\t\t\t\t\t@click=${() => this.close()}\n\t\t\t\t\taria-label=\"Close\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"text-2xl\">×</span>\n\t\t\t\t</button>\n\n\t\t\t\t<!-- Image container with optional overlay -->\n\t\t\t\t<div class=\"relative\">\n\t\t\t\t\t<img\n\t\t\t\t\t\tsrc=${currentSrc}\n\t\t\t\t\t\t${flip({\n\t\t\t\t\t\t\tsourceElement: this.element,\n\t\t\t\t\t\t\tposition: this.clickPosition,\n\t\t\t\t\t\t\tduration: 600,\n\t\t\t\t\t\t\tscale: true,\n\t\t\t\t\t\t\tblackbird: true,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tclass=\"object-contain rounded-lg\"\n\t\t\t\t\t\tstyle=\"max-height: calc(100vh - 40px); max-width: 90vw;\"\n\t\t\t\t\t\t@click=${() => !isGallery && this.close()}\n\t\t\t\t\t/>\n\t\t\t\t\t${this.overlay ? this.overlay : ''}\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Gallery controls -->\n\t\t\t\t${isGallery\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<div class=\"flex items-center justify-center gap-4 text-white mt-4\">\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclass=\"w-10 h-10 rounded-full bg-white/20 hover:bg-white/30 flex items-center justify-center transition-colors\"\n\t\t\t\t\t\t\t\t\t@click=${() => this.prev()}\n\t\t\t\t\t\t\t\t\taria-label=\"Previous\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t←\n\t\t\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t\t\t<div class=\"text-lg\">${this.currentIndex + 1} / ${this.images.length}</div>\n\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclass=\"w-10 h-10 rounded-full bg-white/20 hover:bg-white/30 flex items-center justify-center transition-colors\"\n\t\t\t\t\t\t\t\t\t@click=${() => this.next()}\n\t\t\t\t\t\t\t\t\taria-label=\"Next\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t→\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`\n\t\t\t\t\t: ''}\n\t\t\t</div>\n\t\t`\n\t}\n\n\tdisconnected() {\n\t\tif (this.element && this.clickHandler) {\n\t\t\tthis.element.removeEventListener('click', this.clickHandler)\n\t\t}\n\t\tthis.close()\n\t}\n}\n\nexport const lightbox = directive(LightboxDirective)\n","import { filter, fromEvent, map, Subject, switchMap, takeUntil, tap } from 'rxjs'\nimport { html, render } from 'lit'\nimport { styleMap } from 'lit/directives/style-map.js'\nimport { ComponentType } from '../area/router.types'\nimport { discoverComponent } from '@mixins/discovery.service'\nimport { lightbox as lightboxDirective, type LightboxOptions } from './lightbox.directive'\n\nexport type LightboxConfig = {\n\t// Image mode\n\timage?: string\n\timages?: string[]\n\tindex?: number\n\toverlay?: ComponentType\n\n\t// Component-only mode (no image background)\n\tcomponent?: ComponentType\n\n\tprops?: Record<string, unknown>\n}\n\n\n/**\n * Lightbox service for centralized lightbox management.\n * Follows the same patterns as DialogService.\n */\nclass LightboxService {\n\tprivate static instance: LightboxService\n\n\t// Subject for lightbox opening requests\n\tprivate pushSubject = new Subject<LightboxConfig>()\n\n\t// Subject for lightbox dismissal requests\n\tprivate dismissSubject = new Subject<void>()\n\n\t// Track active lightbox\n\tprivate activeLightbox?: {\n\t\telement: HTMLDivElement\n\t\tconfig: LightboxConfig\n\t\tcurrentIndex: number\n\t\timages: string[]\n\t}\n\n\tprivate constructor() {\n\t\tthis.setupLightboxOpeningLogic()\n\t\tthis.setupLightboxDismissLogic()\n\t}\n\n\t/**\n\t * Get the singleton instance\n\t */\n\tpublic static getInstance(): LightboxService {\n\t\tif (!LightboxService.instance) {\n\t\t\tLightboxService.instance = new LightboxService()\n\t\t}\n\t\treturn LightboxService.instance\n\t}\n\n\t/**\n\t * Sets up the main lightbox opening logic using RxJS pipes\n\t */\n\tprivate setupLightboxOpeningLogic() {\n\t\tthis.pushSubject\n\t\t\t.pipe(\n\t\t\t\tswitchMap(config => {\n\t\t\t\t\t// Use discoverComponent to find schmancy-theme (same pattern as sheet.service.ts)\n\t\t\t\t\treturn discoverComponent<HTMLElement>('schmancy-theme').pipe(\n\t\t\t\t\t\tmap(theme => {\n\t\t\t\t\t\t\t// Determine container - use theme or fallback to body\n\t\t\t\t\t\t\tconst container = theme || document.body\n\n\t\t\t\t\t\t\t// Create overlay element\n\t\t\t\t\t\t\tconst overlay = document.createElement('div')\n\t\t\t\t\t\t\toverlay.className = 'fixed inset-0 flex items-center justify-center opacity-0 bg-black/95 backdrop-blur-sm'\n\t\t\t\t\t\t\toverlay.style.zIndex = '1000'\n\n\t\t\t\t\t\t\tcontainer.appendChild(overlay)\n\t\t\t\t\t\t\tdocument.body.style.overflow = 'hidden'\n\n\t\t\t\t\t\t\treturn { overlay, config, container }\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\ttap(({ overlay, config }) => {\n\t\t\t\t\t// Setup images array\n\t\t\t\t\tlet images: string[] = []\n\t\t\t\t\tlet currentIndex = 0\n\n\t\t\t\t\tif (config.images && config.images.length > 0) {\n\t\t\t\t\t\timages = config.images\n\t\t\t\t\t\tcurrentIndex = config.index || 0\n\t\t\t\t\t} else if (config.image) {\n\t\t\t\t\t\timages = [config.image]\n\t\t\t\t\t\tcurrentIndex = 0\n\t\t\t\t\t}\n\n\t\t\t\t\t// Store active lightbox state\n\t\t\t\t\tthis.activeLightbox = {\n\t\t\t\t\t\telement: overlay,\n\t\t\t\t\t\tconfig,\n\t\t\t\t\t\tcurrentIndex,\n\t\t\t\t\t\timages,\n\t\t\t\t\t}\n\n\t\t\t\t\t// Keyboard handling via RxJS\n\t\t\t\t\tfromEvent<KeyboardEvent>(document, 'keydown').pipe(\n\t\t\t\t\t\ttakeUntil(this.dismissSubject),\n\t\t\t\t\t\tfilter(() => !!this.activeLightbox),\n\t\t\t\t\t\ttap(e => {\n\t\t\t\t\t\t\tif (e.key === 'Escape') this.dismiss()\n\t\t\t\t\t\t\tif (e.key === 'ArrowLeft' && this.activeLightbox!.images.length > 1) this.navigatePrev()\n\t\t\t\t\t\t\tif (e.key === 'ArrowRight' && this.activeLightbox!.images.length > 1) this.navigateNext()\n\t\t\t\t\t\t})\n\t\t\t\t\t).subscribe()\n\n\t\t\t\t\t// Click overlay to close via RxJS\n\t\t\t\t\tfromEvent<MouseEvent>(overlay, 'click').pipe(\n\t\t\t\t\t\ttakeUntil(this.dismissSubject),\n\t\t\t\t\t\tfilter(e => e.target === overlay),\n\t\t\t\t\t\ttap(() => this.dismiss())\n\t\t\t\t\t).subscribe()\n\n\t\t\t\t\t// Render content\n\t\t\t\t\tif (config.component) {\n\t\t\t\t\t\tthis.renderComponent(overlay, config)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.renderLightbox(overlay, config, images, currentIndex)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Animate in\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\toverlay.animate([{ opacity: 0 }, { opacity: 1 }], {\n\t\t\t\t\t\t\tduration: 300,\n\t\t\t\t\t\t\teasing: 'cubic-bezier(0.25, 1, 0.5, 1)',\n\t\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Sets up the lightbox dismissal logic\n\t */\n\tprivate setupLightboxDismissLogic() {\n\t\tthis.dismissSubject\n\t\t\t.pipe(\n\t\t\t\ttap(() => {\n\t\t\t\t\tif (!this.activeLightbox) return\n\n\t\t\t\t\tconst { element } = this.activeLightbox\n\n\t\t\t\t\t// Animate out\n\t\t\t\t\tconst animation = element.animate([{ opacity: 1 }, { opacity: 0 }], {\n\t\t\t\t\t\tduration: 250,\n\t\t\t\t\t\teasing: 'ease-out',\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t})\n\n\t\t\t\t\tanimation.onfinish = () => {\n\t\t\t\t\t\telement.remove()\n\t\t\t\t\t\tdocument.body.style.overflow = ''\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.activeLightbox = undefined\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Push/open a lightbox\n\t */\n\tpublic push(config: LightboxConfig): void {\n\t\t// Close any existing lightbox first\n\t\tif (this.activeLightbox) {\n\t\t\tthis.dismiss()\n\t\t}\n\t\tthis.pushSubject.next(config)\n\t}\n\n\t/**\n\t * Dismiss the lightbox\n\t */\n\tpublic dismiss(): void {\n\t\tthis.dismissSubject.next()\n\t}\n\n\t/**\n\t * Navigate to previous image\n\t */\n\tprivate navigatePrev(): void {\n\t\tif (!this.activeLightbox || this.activeLightbox.images.length <= 1) return\n\n\t\tconst { images, config, element } = this.activeLightbox\n\t\tthis.activeLightbox.currentIndex = (this.activeLightbox.currentIndex - 1 + images.length) % images.length\n\t\tthis.renderLightbox(element, config, images, this.activeLightbox.currentIndex)\n\t}\n\n\t/**\n\t * Navigate to next image\n\t */\n\tprivate navigateNext(): void {\n\t\tif (!this.activeLightbox || this.activeLightbox.images.length <= 1) return\n\n\t\tconst { images, config, element } = this.activeLightbox\n\t\tthis.activeLightbox.currentIndex = (this.activeLightbox.currentIndex + 1) % images.length\n\t\tthis.renderLightbox(element, config, images, this.activeLightbox.currentIndex)\n\t}\n\n\t/**\n\t * Render component-only mode (no image background)\n\t */\n\tprivate renderComponent(overlay: HTMLDivElement, config: LightboxConfig): void {\n\t\tif (!config.component) return\n\n\t\t// Create the component\n\t\tlet component: HTMLElement\n\t\tif (typeof config.component === 'string') {\n\t\t\tcomponent = document.createElement(config.component)\n\t\t} else {\n\t\t\tcomponent = new (config.component as CustomElementConstructor)()\n\t\t}\n\n\t\t// Set props\n\t\tif (config.props) {\n\t\t\tObject.entries(config.props).forEach(([key, value]) => {\n\t\t\t\t;(component as unknown as Record<string, unknown>)[key] = value\n\t\t\t})\n\t\t}\n\n\t\t// Create wrapper with close button\n\t\tconst template = html`\n\t\t\t<div class=\"relative\" @click=${(e: Event) => e.stopPropagation()}>\n\t\t\t\t<!-- Close button -->\n\t\t\t\t<button\n\t\t\t\t\tclass=\"absolute -top-12 right-0 z-10 w-10 h-10 rounded-full bg-white/20 hover:bg-white/30 flex items-center justify-center text-white transition-colors\"\n\t\t\t\t\t@click=${() => this.dismiss()}\n\t\t\t\t\taria-label=\"Close\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"text-2xl\">×</span>\n\t\t\t\t</button>\n\n\t\t\t\t<!-- Component container -->\n\t\t\t\t<div id=\"lightbox-component-container\"></div>\n\t\t\t</div>\n\t\t`\n\n\t\trender(template, overlay)\n\n\t\t// Append component after render\n\t\tconst container = overlay.querySelector('#lightbox-component-container')\n\t\tif (container) {\n\t\t\tcontainer.appendChild(component)\n\t\t}\n\t}\n\n\t/**\n\t * Render image lightbox\n\t */\n\tprivate renderLightbox(overlay: HTMLDivElement, config: LightboxConfig, images: string[], currentIndex: number): void {\n\t\tconst currentSrc = images[currentIndex]\n\t\tconst isGallery = images.length > 1\n\n\t\t// Create overlay component if specified\n\t\tlet overlayComponent: HTMLElement | null = null\n\t\tif (config.overlay) {\n\t\t\tif (typeof config.overlay === 'string') {\n\t\t\t\toverlayComponent = document.createElement(config.overlay)\n\t\t\t} else if (typeof config.overlay === 'function') {\n\t\t\t\toverlayComponent = new (config.overlay as CustomElementConstructor)()\n\t\t\t}\n\n\t\t\t// Set props on the component\n\t\t\tif (config.props && overlayComponent) {\n\t\t\t\tObject.entries(config.props).forEach(([key, value]) => {\n\t\t\t\t\t;(overlayComponent as unknown as Record<string, unknown>)[key] = value\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\tconst template = html`\n\t\t\t<div\n\t\t\t\tclass=\"relative\"\n\t\t\t\tstyle=${styleMap({ maxWidth: '90vw', maxHeight: '90vh' })}\n\t\t\t\t@click=${(e: Event) => e.stopPropagation()}\n\t\t\t>\n\t\t\t\t<!-- Close button -->\n\t\t\t\t<button\n\t\t\t\t\tclass=\"absolute top-4 right-4 z-10 w-10 h-10 rounded-full bg-white/20 hover:bg-white/30 flex items-center justify-center text-white transition-colors\"\n\t\t\t\t\t@click=${() => this.dismiss()}\n\t\t\t\t\taria-label=\"Close\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"text-2xl\">×</span>\n\t\t\t\t</button>\n\n\t\t\t\t<!-- Image container with optional overlay -->\n\t\t\t\t<div class=\"relative\" id=\"lightbox-image-container\">\n\t\t\t\t\t<img\n\t\t\t\t\t\tsrc=${currentSrc}\n\t\t\t\t\t\tclass=\"max-w-full object-contain rounded-lg\"\n\t\t\t\t\t\tstyle=${styleMap({ maxHeight: '85vh' })}\n\t\t\t\t\t\t@click=${() => !isGallery && this.dismiss()}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Gallery controls -->\n\t\t\t\t${isGallery\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"absolute left-1/2 -translate-x-1/2 flex items-center gap-4 text-white\"\n\t\t\t\t\t\t\t\tstyle=${styleMap({ bottom: '-60px' })}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclass=\"w-10 h-10 rounded-full bg-white/20 hover:bg-white/30 flex items-center justify-center transition-colors\"\n\t\t\t\t\t\t\t\t\t@click=${() => this.navigatePrev()}\n\t\t\t\t\t\t\t\t\taria-label=\"Previous\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t←\n\t\t\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t\t\t<div class=\"text-lg\">${currentIndex + 1} / ${images.length}</div>\n\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclass=\"w-10 h-10 rounded-full bg-white/20 hover:bg-white/30 flex items-center justify-center transition-colors\"\n\t\t\t\t\t\t\t\t\t@click=${() => this.navigateNext()}\n\t\t\t\t\t\t\t\t\taria-label=\"Next\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t→\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`\n\t\t\t\t\t: ''}\n\t\t\t</div>\n\t\t`\n\n\t\trender(template, overlay)\n\n\t\t// Append overlay component to image container after render\n\t\tif (overlayComponent) {\n\t\t\tconst container = overlay.querySelector('#lightbox-image-container')\n\t\t\tif (container) {\n\t\t\t\t// Remove any existing overlay component\n\t\t\t\tconst existing = container.querySelector('[data-lightbox-overlay]')\n\t\t\t\tif (existing) existing.remove()\n\n\t\t\t\toverlayComponent.setAttribute('data-lightbox-overlay', '')\n\t\t\t\tcontainer.appendChild(overlayComponent)\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Unified lightbox type - works as both directive and service\n */\nexport type LightboxAPI = {\n\t(options?: LightboxOptions): ReturnType<typeof lightboxDirective>\n\tpush: (config: LightboxConfig) => void\n\tdismiss: () => void\n}\n\n/**\n * Unified lightbox export - works as both directive and service:\n * - Directive: ${lightbox()} or ${lightbox({ overlay: html`...` })}\n * - Service: lightbox.push({ image, overlay: 'component-name', props })\n */\nexport const lightbox: LightboxAPI = Object.assign(\n\t// Callable as directive (backward compatible)\n\t(options?: LightboxOptions) => lightboxDirective(options),\n\t// Also has service methods\n\t{\n\t\tpush: (config: LightboxConfig) => LightboxService.getInstance().push(config),\n\t\tdismiss: () => LightboxService.getInstance().dismiss(),\n\t},\n)\n"],"names":["calculateArcPoint","start","end","arcDirection","intensity","midX","x","midY","y","distance","Math","sqrt","pow","arcHeight","min","SchmancyLightbox","$LitElement","css","constructor","super","arguments","this","src","images","initialIndex","open","currentIndex","isLoading","swipeThreshold","overlayRef","createRef","contentRef","imageRef","handleClose","handlePrevious","isGalleryMode","length","dispatchEvent","CustomEvent","detail","index","bubbles","composed","handleNext","handleImageLoad","handleOverlayClick","e","target","currentTarget","currentImageSrc","connectedCallback","changedProperties","updated","has","document","body","style","overflow","animateIn","setupEventListeners","animateOut","animateImageChange","overlay","value","content","image","backgroundColor","opacity","animate","duration","easing","fill","requestAnimationFrame","transform","delay","onfinish","fromEvent","pipe","filter","tap","key","takeUntil","disconnecting","subscribe","touchStart$","touchEnd$","switchMap","startEvent","startX","touches","clientX","first","map","endEvent","changedTouches","abs","render","html","ref","stopPropagation","when","__decorateClass","property","type","String","prototype","Array","Number","Boolean","state","customElement","FlipDirective","AsyncDirective","partInfo","hasAnimated","PartType","ELEMENT","Error","_options","noChange","part","options","element","hasSource","sourceElement","position","window","matchMedia","matches","totalDuration","animateScale","scale","useBlackbird","blackbird","clickPos","pos","clientY","sourceRect","getBoundingClientRect","targetRect","targetCenter","left","width","top","height","sourceCenter","sourceScale","innerWidth","innerHeight","sourceDelta","clickDelta","takeoffArc","landingArc","takeoffArcDelta","landingArcDelta","midScale","offset","arcPoint","arcDelta","HTMLImageElement","complete","onload","flip","directive","LightboxDirective","clickHandler","preventDefault","clickPosition","touch","addEventListener","cursor","classList","add","overlayElement","createElement","className","zIndex","renderLightbox","appendChild","keyHandler","close","prev","next","contentContainer","querySelector","rect","deltaX","deltaY","containerAnim","remove","removeEventListener","updateImage","currentSrc","isGallery","styleMap","transformOrigin","lightbox","LightboxService","pushSubject","Subject","dismissSubject","setupLightboxOpeningLogic","setupLightboxDismissLogic","getInstance","instance","config","discoverComponent","theme","container","activeLightbox","dismiss","navigatePrev","navigateNext","component","renderComponent","props","Object","entries","forEach","template","overlayComponent","maxWidth","maxHeight","bottom","existing","setAttribute","assign","lightboxDirective","push"],"mappings":"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"}
@@ -0,0 +1,458 @@
1
+ import { css as D, html as h, noChange as k, render as $ } from "lit";
2
+ import { property as x, state as A, customElement as Y } from "lit/decorators.js";
3
+ import { when as E } from "lit/directives/when.js";
4
+ import { createRef as C, ref as j } from "lit/directives/ref.js";
5
+ import { fromEvent as f, Subject as S, switchMap as U, map as W, tap as v, takeUntil as O, filter as H } from "rxjs";
6
+ import { filter as q, tap as G, takeUntil as T, switchMap as Z, first as J, map as K } from "rxjs/operators";
7
+ import "lit/directives/class-map.js";
8
+ import { styleMap as w } from "lit/directives/style-map.js";
9
+ import { d as Q } from "./tailwind.mixin-Ddt05Frc.js";
10
+ import { $ as V } from "./litElement.mixin-Wcu4yIIs.js";
11
+ import { directive as F, PartType as X } from "lit/directive.js";
12
+ import { AsyncDirective as B } from "lit/async-directive.js";
13
+ var _ = Object.defineProperty, ee = Object.getOwnPropertyDescriptor, u = (e, t, i, s) => {
14
+ for (var a, n = s > 1 ? void 0 : s ? ee(t, i) : t, o = e.length - 1; o >= 0; o--) (a = e[o]) && (n = (s ? a(t, i, n) : a(n)) || n);
15
+ return s && n && _(t, i, n), n;
16
+ };
17
+ let m = class extends V(D`
18
+ :host {
19
+ display: contents;
20
+ }
21
+ `) {
22
+ constructor() {
23
+ super(...arguments), this.src = "", this.images = [], this.initialIndex = 0, this.open = !1, this.currentIndex = 0, this.isLoading = !1, this.swipeThreshold = 50, this.overlayRef = C(), this.contentRef = C(), this.imageRef = C(), this.handleClose = () => {
24
+ this.open = !1;
25
+ }, this.handlePrevious = () => {
26
+ this.isGalleryMode && this.images.length > 1 && (this.isLoading = !0, this.currentIndex = (this.currentIndex - 1 + this.images.length) % this.images.length, this.dispatchEvent(new CustomEvent("change", { detail: { index: this.currentIndex }, bubbles: !0, composed: !0 })));
27
+ }, this.handleNext = () => {
28
+ this.isGalleryMode && this.images.length > 1 && (this.isLoading = !0, this.currentIndex = (this.currentIndex + 1) % this.images.length, this.dispatchEvent(new CustomEvent("change", { detail: { index: this.currentIndex }, bubbles: !0, composed: !0 })));
29
+ }, this.handleImageLoad = () => {
30
+ this.isLoading = !1;
31
+ }, this.handleOverlayClick = (e) => {
32
+ e.target === e.currentTarget && this.handleClose();
33
+ };
34
+ }
35
+ get isGalleryMode() {
36
+ return this.images.length > 0;
37
+ }
38
+ get currentImageSrc() {
39
+ return this.isGalleryMode ? this.images[this.currentIndex] || "" : this.src;
40
+ }
41
+ connectedCallback() {
42
+ super.connectedCallback(), this.currentIndex = this.initialIndex;
43
+ }
44
+ updated(e) {
45
+ super.updated(e), e.has("open") && (this.open ? (document.body.style.overflow = "hidden", this.animateIn(), this.setupEventListeners()) : (document.body.style.overflow = "", this.animateOut())), e.has("initialIndex") && (this.currentIndex = this.initialIndex), e.has("currentIndex") && this.open && this.animateImageChange();
46
+ }
47
+ animateIn() {
48
+ const e = this.overlayRef.value, t = this.contentRef.value, i = this.imageRef.value;
49
+ e && (e.style.backgroundColor = "rgba(0, 0, 0, 0)", e.style.opacity = "0", e.animate([{ opacity: 0 }, { opacity: 1 }], { duration: 300, easing: "cubic-bezier(0.25, 1, 0.5, 1)", fill: "forwards" }), requestAnimationFrame(() => {
50
+ e.style.backgroundColor = "rgba(0, 0, 0, 0.95)";
51
+ })), t && t.animate([{ transform: "scale(0.95)", opacity: 0 }, { transform: "scale(1)", opacity: 1 }], { duration: 400, delay: 100, easing: "cubic-bezier(0.34, 1.56, 0.64, 1)", fill: "forwards" }), i && i.animate([{ opacity: 0, transform: "scale(0.98)" }, { opacity: 1, transform: "scale(1)" }], { duration: 350, delay: 150, easing: "cubic-bezier(0.25, 1, 0.5, 1)", fill: "forwards" });
52
+ }
53
+ animateOut() {
54
+ const e = this.overlayRef.value, t = this.contentRef.value, i = this.imageRef.value;
55
+ i && i.animate([{ transform: "scale(1)", opacity: 1 }, { transform: "scale(0.95)", opacity: 0 }], { duration: 200, easing: "ease-out", fill: "forwards" }), t && t.animate([{ transform: "scale(1)", opacity: 1 }, { transform: "scale(0.95)", opacity: 0 }], { duration: 250, easing: "ease-out", fill: "forwards" }), e && (e.animate([{ opacity: 1 }, { opacity: 0 }], { duration: 250, delay: 50, easing: "ease-out", fill: "forwards" }).onfinish = () => {
56
+ e.style.backgroundColor = "rgba(0, 0, 0, 0)", this.dispatchEvent(new CustomEvent("close", { bubbles: !0, composed: !0 }));
57
+ });
58
+ }
59
+ animateImageChange() {
60
+ const e = this.imageRef.value;
61
+ e && (e.animate([{ opacity: 1, transform: "scale(1)" }, { opacity: 0, transform: "scale(0.98)" }], { duration: 150, easing: "ease-out", fill: "forwards" }).onfinish = () => {
62
+ e.animate([{ opacity: 0, transform: "scale(0.98)" }, { opacity: 1, transform: "scale(1)" }], { duration: 200, easing: "cubic-bezier(0.25, 1, 0.5, 1)", fill: "forwards" });
63
+ });
64
+ }
65
+ setupEventListeners() {
66
+ if (f(document, "keydown").pipe(q(() => this.open), G((s) => {
67
+ switch (s.key) {
68
+ case "Escape":
69
+ this.handleClose();
70
+ break;
71
+ case "ArrowLeft":
72
+ this.handlePrevious();
73
+ break;
74
+ case "ArrowRight":
75
+ this.handleNext();
76
+ }
77
+ }), T(this.disconnecting)).subscribe(), !this.isGalleryMode || this.images.length <= 1) return;
78
+ const e = this.contentRef.value;
79
+ if (!e) return;
80
+ const t = f(e, "touchstart"), i = f(e, "touchend");
81
+ t.pipe(Z((s) => {
82
+ const a = s.touches[0].clientX;
83
+ return i.pipe(J(), K((n) => n.changedTouches[0].clientX - a));
84
+ }), q((s) => Math.abs(s) > this.swipeThreshold), G((s) => s > 0 ? this.handlePrevious() : this.handleNext()), T(this.disconnecting)).subscribe();
85
+ }
86
+ render() {
87
+ return this.open ? h`
88
+ <div
89
+ ${j(this.overlayRef)}
90
+ class="fixed inset-0 z-9999 flex items-center justify-center backdrop-blur-sm"
91
+ @click=${this.handleOverlayClick}
92
+ >
93
+ <div
94
+ ${j(this.contentRef)}
95
+ class="relative max-w-[90vw] max-h-[90vh]"
96
+ @click=${(e) => e.stopPropagation()}
97
+ >
98
+ <!-- Close Button -->
99
+ <button
100
+ class="absolute top-4 right-4 md:top-4 md:right-4 sm:top-2 sm:right-2 bg-white/15 backdrop-blur-md border border-white/20 text-white w-11 h-11 rounded-full flex items-center justify-center cursor-pointer z-10 transition-all duration-200 hover:bg-white/25 hover:scale-105 active:scale-95"
101
+ @click=${this.handleClose}
102
+ aria-label="Close lightbox"
103
+ title="Close (Esc)"
104
+ >
105
+ <schmancy-icon>close</schmancy-icon>
106
+ </button>
107
+
108
+ <!-- Touch Zones for Gallery Navigation -->
109
+ ${E(this.isGalleryMode && this.images.length > 1, () => h`
110
+ <div
111
+ class="absolute top-0 bottom-0 left-0 w-1/3 cursor-pointer z-5"
112
+ @click=${this.handlePrevious}
113
+ ></div>
114
+ <div
115
+ class="absolute top-0 bottom-0 right-0 w-1/3 cursor-pointer z-5"
116
+ @click=${this.handleNext}
117
+ ></div>
118
+ `)}
119
+
120
+ <!-- Loading Spinner -->
121
+ ${E(this.isLoading, () => h`
122
+ <div class="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2">
123
+ <schmancy-progress indeterminate></schmancy-progress>
124
+ </div>
125
+ `)}
126
+
127
+ <!-- Main Image -->
128
+ <img
129
+ ${j(this.imageRef)}
130
+ class="max-w-[90vw] max-h-[90vh] object-contain rounded select-none touch-pinch-zoom ${this.isGalleryMode ? "cursor-default" : "cursor-pointer"}"
131
+ .src=${this.currentImageSrc}
132
+ alt="Full size image"
133
+ @load=${this.handleImageLoad}
134
+ @click=${() => this.isGalleryMode ? null : this.handleClose()}
135
+ />
136
+
137
+ <!-- Navigation Controls (Gallery Mode Only) -->
138
+ ${E(this.isGalleryMode && this.images.length > 1, () => h`
139
+ <div
140
+ class="absolute bottom-[-3.5rem] md:bottom-[-3.5rem] sm:bottom-[-3rem] left-1/2 -translate-x-1/2 flex items-center gap-4 z-10"
141
+ >
142
+ <button
143
+ class="bg-white/15 backdrop-blur-md border border-white/20 text-white w-10 h-10 rounded-full flex items-center justify-center cursor-pointer transition-all duration-200 hover:bg-white/25 hover:scale-105 active:scale-95"
144
+ @click=${this.handlePrevious}
145
+ aria-label="Previous image"
146
+ title="Previous (←)"
147
+ >
148
+ <schmancy-icon>arrow_back</schmancy-icon>
149
+ </button>
150
+
151
+ <div class="text-white text-base font-medium min-w-16 text-center" aria-live="polite">
152
+ ${this.currentIndex + 1} / ${this.images.length}
153
+ </div>
154
+
155
+ <button
156
+ class="bg-white/15 backdrop-blur-md border border-white/20 text-white w-10 h-10 rounded-full flex items-center justify-center cursor-pointer transition-all duration-200 hover:bg-white/25 hover:scale-105 active:scale-95"
157
+ @click=${this.handleNext}
158
+ aria-label="Next image"
159
+ title="Next (→)"
160
+ >
161
+ <schmancy-icon>arrow_forward</schmancy-icon>
162
+ </button>
163
+ </div>
164
+ `)}
165
+ </div>
166
+ </div>
167
+ ` : h``;
168
+ }
169
+ };
170
+ function P(e, t, i = "up", s = 0.3) {
171
+ const a = (e.x + t.x) / 2, n = (e.y + t.y) / 2, o = Math.sqrt(Math.pow(t.x - e.x, 2) + Math.pow(t.y - e.y, 2)), l = Math.min(o * s, 150);
172
+ return { x: a, y: i === "up" ? n - l : n + l };
173
+ }
174
+ u([x({ type: String })], m.prototype, "src", 2), u([x({ type: Array })], m.prototype, "images", 2), u([x({ type: Number })], m.prototype, "initialIndex", 2), u([x({ type: Boolean })], m.prototype, "open", 2), u([A()], m.prototype, "currentIndex", 2), u([A()], m.prototype, "isLoading", 2), m = u([Y("schmancy-lightbox")], m);
175
+ const te = F(class extends B {
176
+ constructor(e) {
177
+ if (super(e), this.hasAnimated = !1, e.type !== X.ELEMENT) throw new Error("flip directive can only be used on elements");
178
+ }
179
+ render(e) {
180
+ return k;
181
+ }
182
+ update(e, [t]) {
183
+ this.element = e.element;
184
+ const i = t?.sourceElement || t?.position;
185
+ return !this.hasAnimated && i && (this.hasAnimated = !0, this.animateIn(t)), k;
186
+ }
187
+ animateIn(e) {
188
+ if (!this.element || window.matchMedia("(prefers-reduced-motion: reduce)").matches) return;
189
+ const t = e?.duration ?? 600, i = e?.scale !== !1, s = e?.blackbird !== !1, a = (n = e?.position, n ? "clientX" in n ? { x: n.clientX, y: n.clientY } : "touches" in n && n.touches.length ? { x: n.touches[0].clientX, y: n.touches[0].clientY } : "x" in n && "y" in n ? { x: n.x, y: n.y } : null : null);
190
+ var n;
191
+ const o = e?.sourceElement?.getBoundingClientRect(), l = () => {
192
+ const d = this.element.getBoundingClientRect(), r = { x: d.left + d.width / 2, y: d.top + d.height / 2 };
193
+ let c, p = { x: 0.1, y: 0.1 };
194
+ o ? (c = { x: o.left + o.width / 2, y: o.top + o.height / 2 }, i && (p = { x: o.width / d.width, y: o.height / d.height })) : c = a || { x: window.innerWidth / 2, y: window.innerHeight / 2 };
195
+ const L = c.x - r.x, I = c.y - r.y;
196
+ if (s && a && o) {
197
+ const y = { x: a.x - r.x, y: a.y - r.y }, b = P(c, a, "up", 0.4), M = P(a, r, "down", 0.3), z = { x: b.x - r.x, y: b.y - r.y }, R = { x: M.x - r.x, y: M.y - r.y }, N = 0.3;
198
+ this.element.animate([{ transform: `translate(${L}px, ${I}px) scale(${p.x}, ${p.y})`, opacity: 0.6, offset: 0 }, { transform: `translate(${z.x}px, ${z.y}px) scale(${0.7 * N})`, opacity: 0.8, offset: 0.25 }, { transform: `translate(${y.x}px, ${y.y}px) scale(${N})`, opacity: 0.9, offset: 0.5 }, { transform: `translate(${R.x}px, ${R.y}px) scale(0.6)`, opacity: 0.95, offset: 0.75 }, { transform: "translate(0, 0) scale(1)", opacity: 1, offset: 1 }], { duration: t, easing: "cubic-bezier(0.34, 1.2, 0.64, 1)", fill: "forwards" });
199
+ } else if (s && a) {
200
+ const y = P(a, r, "down", 0.35), b = { x: y.x - r.x, y: y.y - r.y };
201
+ this.element.animate([{ transform: `translate(${L}px, ${I}px) scale(0.1)`, opacity: 0, offset: 0 }, { transform: `translate(${b.x}px, ${b.y}px) scale(0.5)`, opacity: 0.8, offset: 0.5 }, { transform: "translate(0, 0) scale(1)", opacity: 1, offset: 1 }], { duration: t, easing: "cubic-bezier(0.34, 1.2, 0.64, 1)", fill: "forwards" });
202
+ } else this.element.animate([{ transform: `translate(${L}px, ${I}px) scale(${p.x}, ${p.y})`, opacity: 0 }, { transform: "translate(0, 0) scale(1, 1)", opacity: 1 }], { duration: t, easing: e?.easing ?? "cubic-bezier(0.34, 1.56, 0.64, 1)", fill: "forwards" });
203
+ };
204
+ this.element instanceof HTMLImageElement ? this.element.complete ? requestAnimationFrame(l) : this.element.onload = () => requestAnimationFrame(l) : requestAnimationFrame(l);
205
+ }
206
+ }), ie = F(class extends B {
207
+ constructor(e) {
208
+ if (super(e), this.currentIndex = 0, this.images = [], e.type !== X.ELEMENT) throw new Error("lightbox directive can only be used on elements");
209
+ }
210
+ render(e) {
211
+ return k;
212
+ }
213
+ update(e, [t]) {
214
+ return this.element = e.element, this.clickHandler || (this.clickHandler = (i) => {
215
+ if (i.preventDefault(), i.stopPropagation(), "clientX" in i) this.clickPosition = { x: i.clientX, y: i.clientY };
216
+ else if ("touches" in i && i.touches.length) {
217
+ const s = i.touches[0];
218
+ this.clickPosition = { x: s.clientX, y: s.clientY };
219
+ }
220
+ t?.images && t.images.length > 0 ? (this.images = t.images, this.currentIndex = t.index || 0) : (this.images = [this.element.src], this.currentIndex = 0), this.overlay = t?.overlay, this.open();
221
+ }, this.element.addEventListener("click", this.clickHandler), this.element.style.cursor = "pointer", this.element.classList.add("hover:opacity-80", "transition-opacity")), k;
222
+ }
223
+ open() {
224
+ this.overlayElement = document.createElement("div"), this.overlayElement.className = "fixed inset-0 flex items-center justify-center opacity-0 bg-black/95 backdrop-blur-sm", this.overlayElement.style.zIndex = "1000", $(this.renderLightbox(), this.overlayElement), document.body.appendChild(this.overlayElement), document.body.style.overflow = "hidden", requestAnimationFrame(() => {
225
+ this.overlayElement.animate([{ opacity: 0 }, { opacity: 1 }], { duration: 300, easing: "cubic-bezier(0.25, 1, 0.5, 1)", fill: "forwards" });
226
+ }), this.keyHandler = (e) => {
227
+ e.key === "Escape" && this.close(), e.key === "ArrowLeft" && this.images.length > 1 && this.prev(), e.key === "ArrowRight" && this.images.length > 1 && this.next();
228
+ }, document.addEventListener("keydown", this.keyHandler), this.overlayElement.addEventListener("click", (e) => {
229
+ e.target === this.overlayElement && this.close();
230
+ });
231
+ }
232
+ close() {
233
+ if (!this.overlayElement) return;
234
+ const e = this.overlayElement.querySelector("[data-lightbox-content]");
235
+ if (e && this.clickPosition) {
236
+ const t = e.getBoundingClientRect(), i = this.clickPosition.x - (t.left + t.width / 2), s = this.clickPosition.y - (t.top + t.height / 2), a = e.animate([{ transform: "translate(0, 0) scale(1)", opacity: 1 }, { transform: `translate(${i}px, ${s}px) scale(0.1)`, opacity: 0 }], { duration: 300, easing: "cubic-bezier(0.4, 0, 0.2, 1)", fill: "forwards" });
237
+ this.overlayElement.animate([{ opacity: 1 }, { opacity: 0 }], { duration: 250, easing: "ease-out", fill: "forwards" }), a.onfinish = () => {
238
+ this.overlayElement?.remove(), this.overlayElement = void 0, document.body.style.overflow = "";
239
+ };
240
+ } else
241
+ this.overlayElement.animate([{ opacity: 1 }, { opacity: 0 }], { duration: 250, easing: "ease-out", fill: "forwards" }).onfinish = () => {
242
+ this.overlayElement?.remove(), this.overlayElement = void 0, document.body.style.overflow = "";
243
+ };
244
+ this.keyHandler && (document.removeEventListener("keydown", this.keyHandler), this.keyHandler = void 0);
245
+ }
246
+ prev() {
247
+ this.currentIndex = (this.currentIndex - 1 + this.images.length) % this.images.length, this.updateImage();
248
+ }
249
+ next() {
250
+ this.currentIndex = (this.currentIndex + 1) % this.images.length, this.updateImage();
251
+ }
252
+ updateImage() {
253
+ this.overlayElement && $(this.renderLightbox(), this.overlayElement);
254
+ }
255
+ renderLightbox() {
256
+ const e = this.images[this.currentIndex], t = this.images.length > 1;
257
+ return h`
258
+ <div
259
+ data-lightbox-content
260
+ class="relative"
261
+ style=${w({ transformOrigin: "center center" })}
262
+ @click=${(i) => i.stopPropagation()}
263
+ >
264
+ <!-- Close button -->
265
+ <button
266
+ class="absolute top-2 right-2 z-10 w-10 h-10 rounded-full bg-white/20 hover:bg-white/30 flex items-center justify-center text-white transition-colors"
267
+ @click=${() => this.close()}
268
+ aria-label="Close"
269
+ >
270
+ <span class="text-2xl">×</span>
271
+ </button>
272
+
273
+ <!-- Image container with optional overlay -->
274
+ <div class="relative">
275
+ <img
276
+ src=${e}
277
+ ${te({ sourceElement: this.element, position: this.clickPosition, duration: 600, scale: !0, blackbird: !0 })}
278
+ class="object-contain rounded-lg"
279
+ style="max-height: calc(100vh - 40px); max-width: 90vw;"
280
+ @click=${() => !t && this.close()}
281
+ />
282
+ ${this.overlay ? this.overlay : ""}
283
+ </div>
284
+
285
+ <!-- Gallery controls -->
286
+ ${t ? h`
287
+ <div class="flex items-center justify-center gap-4 text-white mt-4">
288
+ <button
289
+ class="w-10 h-10 rounded-full bg-white/20 hover:bg-white/30 flex items-center justify-center transition-colors"
290
+ @click=${() => this.prev()}
291
+ aria-label="Previous"
292
+ >
293
+
294
+ </button>
295
+
296
+ <div class="text-lg">${this.currentIndex + 1} / ${this.images.length}</div>
297
+
298
+ <button
299
+ class="w-10 h-10 rounded-full bg-white/20 hover:bg-white/30 flex items-center justify-center transition-colors"
300
+ @click=${() => this.next()}
301
+ aria-label="Next"
302
+ >
303
+
304
+ </button>
305
+ </div>
306
+ ` : ""}
307
+ </div>
308
+ `;
309
+ }
310
+ disconnected() {
311
+ this.element && this.clickHandler && this.element.removeEventListener("click", this.clickHandler), this.close();
312
+ }
313
+ });
314
+ class g {
315
+ constructor() {
316
+ this.pushSubject = new S(), this.dismissSubject = new S(), this.setupLightboxOpeningLogic(), this.setupLightboxDismissLogic();
317
+ }
318
+ static getInstance() {
319
+ return g.instance || (g.instance = new g()), g.instance;
320
+ }
321
+ setupLightboxOpeningLogic() {
322
+ this.pushSubject.pipe(U((t) => Q("schmancy-theme").pipe(W((i) => {
323
+ const s = i || document.body, a = document.createElement("div");
324
+ return a.className = "fixed inset-0 flex items-center justify-center opacity-0 bg-black/95 backdrop-blur-sm", a.style.zIndex = "1000", s.appendChild(a), document.body.style.overflow = "hidden", { overlay: a, config: t, container: s };
325
+ }))), v(({ overlay: t, config: i }) => {
326
+ let s = [], a = 0;
327
+ i.images && i.images.length > 0 ? (s = i.images, a = i.index || 0) : i.image && (s = [i.image], a = 0), this.activeLightbox = { element: t, config: i, currentIndex: a, images: s }, f(document, "keydown").pipe(O(this.dismissSubject), H(() => !!this.activeLightbox), v((n) => {
328
+ n.key === "Escape" && this.dismiss(), n.key === "ArrowLeft" && this.activeLightbox.images.length > 1 && this.navigatePrev(), n.key === "ArrowRight" && this.activeLightbox.images.length > 1 && this.navigateNext();
329
+ })).subscribe(), f(t, "click").pipe(O(this.dismissSubject), H((n) => n.target === t), v(() => this.dismiss())).subscribe(), i.component ? this.renderComponent(t, i) : this.renderLightbox(t, i, s, a), requestAnimationFrame(() => {
330
+ t.animate([{ opacity: 0 }, { opacity: 1 }], { duration: 300, easing: "cubic-bezier(0.25, 1, 0.5, 1)", fill: "forwards" });
331
+ });
332
+ })).subscribe();
333
+ }
334
+ setupLightboxDismissLogic() {
335
+ this.dismissSubject.pipe(v(() => {
336
+ if (!this.activeLightbox) return;
337
+ const { element: t } = this.activeLightbox;
338
+ t.animate([{ opacity: 1 }, { opacity: 0 }], { duration: 250, easing: "ease-out", fill: "forwards" }).onfinish = () => {
339
+ t.remove(), document.body.style.overflow = "";
340
+ }, this.activeLightbox = void 0;
341
+ })).subscribe();
342
+ }
343
+ push(t) {
344
+ this.activeLightbox && this.dismiss(), this.pushSubject.next(t);
345
+ }
346
+ dismiss() {
347
+ this.dismissSubject.next();
348
+ }
349
+ navigatePrev() {
350
+ if (!this.activeLightbox || this.activeLightbox.images.length <= 1) return;
351
+ const { images: t, config: i, element: s } = this.activeLightbox;
352
+ this.activeLightbox.currentIndex = (this.activeLightbox.currentIndex - 1 + t.length) % t.length, this.renderLightbox(s, i, t, this.activeLightbox.currentIndex);
353
+ }
354
+ navigateNext() {
355
+ if (!this.activeLightbox || this.activeLightbox.images.length <= 1) return;
356
+ const { images: t, config: i, element: s } = this.activeLightbox;
357
+ this.activeLightbox.currentIndex = (this.activeLightbox.currentIndex + 1) % t.length, this.renderLightbox(s, i, t, this.activeLightbox.currentIndex);
358
+ }
359
+ renderComponent(t, i) {
360
+ if (!i.component) return;
361
+ let s;
362
+ s = typeof i.component == "string" ? document.createElement(i.component) : new i.component(), i.props && Object.entries(i.props).forEach(([o, l]) => {
363
+ s[o] = l;
364
+ });
365
+ const a = h`
366
+ <div class="relative" @click=${(o) => o.stopPropagation()}>
367
+ <!-- Close button -->
368
+ <button
369
+ class="absolute -top-12 right-0 z-10 w-10 h-10 rounded-full bg-white/20 hover:bg-white/30 flex items-center justify-center text-white transition-colors"
370
+ @click=${() => this.dismiss()}
371
+ aria-label="Close"
372
+ >
373
+ <span class="text-2xl">×</span>
374
+ </button>
375
+
376
+ <!-- Component container -->
377
+ <div id="lightbox-component-container"></div>
378
+ </div>
379
+ `;
380
+ $(a, t);
381
+ const n = t.querySelector("#lightbox-component-container");
382
+ n && n.appendChild(s);
383
+ }
384
+ renderLightbox(t, i, s, a) {
385
+ const n = s[a], o = s.length > 1;
386
+ let l = null;
387
+ i.overlay && (typeof i.overlay == "string" ? l = document.createElement(i.overlay) : typeof i.overlay == "function" && (l = new i.overlay()), i.props && l && Object.entries(i.props).forEach(([r, c]) => {
388
+ l[r] = c;
389
+ }));
390
+ const d = h`
391
+ <div
392
+ class="relative"
393
+ style=${w({ maxWidth: "90vw", maxHeight: "90vh" })}
394
+ @click=${(r) => r.stopPropagation()}
395
+ >
396
+ <!-- Close button -->
397
+ <button
398
+ class="absolute top-4 right-4 z-10 w-10 h-10 rounded-full bg-white/20 hover:bg-white/30 flex items-center justify-center text-white transition-colors"
399
+ @click=${() => this.dismiss()}
400
+ aria-label="Close"
401
+ >
402
+ <span class="text-2xl">×</span>
403
+ </button>
404
+
405
+ <!-- Image container with optional overlay -->
406
+ <div class="relative" id="lightbox-image-container">
407
+ <img
408
+ src=${n}
409
+ class="max-w-full object-contain rounded-lg"
410
+ style=${w({ maxHeight: "85vh" })}
411
+ @click=${() => !o && this.dismiss()}
412
+ />
413
+ </div>
414
+
415
+ <!-- Gallery controls -->
416
+ ${o ? h`
417
+ <div
418
+ class="absolute left-1/2 -translate-x-1/2 flex items-center gap-4 text-white"
419
+ style=${w({ bottom: "-60px" })}
420
+ >
421
+ <button
422
+ class="w-10 h-10 rounded-full bg-white/20 hover:bg-white/30 flex items-center justify-center transition-colors"
423
+ @click=${() => this.navigatePrev()}
424
+ aria-label="Previous"
425
+ >
426
+
427
+ </button>
428
+
429
+ <div class="text-lg">${a + 1} / ${s.length}</div>
430
+
431
+ <button
432
+ class="w-10 h-10 rounded-full bg-white/20 hover:bg-white/30 flex items-center justify-center transition-colors"
433
+ @click=${() => this.navigateNext()}
434
+ aria-label="Next"
435
+ >
436
+
437
+ </button>
438
+ </div>
439
+ ` : ""}
440
+ </div>
441
+ `;
442
+ if ($(d, t), l) {
443
+ const r = t.querySelector("#lightbox-image-container");
444
+ if (r) {
445
+ const c = r.querySelector("[data-lightbox-overlay]");
446
+ c && c.remove(), l.setAttribute("data-lightbox-overlay", ""), r.appendChild(l);
447
+ }
448
+ }
449
+ }
450
+ }
451
+ const pe = Object.assign((e) => ie(e), { push: (e) => g.getInstance().push(e), dismiss: () => g.getInstance().dismiss() });
452
+ export {
453
+ m as S,
454
+ pe as a,
455
+ te as f,
456
+ ie as l
457
+ };
458
+ //# sourceMappingURL=lightbox-service-DxbYZAuv.js.map