@mhmo91/schmancy 0.10.42 → 0.10.44

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 (759) hide show
  1. package/custom-elements.json +264 -79
  2. package/dist/SchmancyElement-CeKrBW2j.cjs +2 -0
  3. package/dist/SchmancyElement-CeKrBW2j.cjs.map +1 -0
  4. package/dist/SchmancyElement-Ob9yGkiG.js +286 -0
  5. package/dist/SchmancyElement-Ob9yGkiG.js.map +1 -0
  6. package/dist/agent/schmancy.agent.js +4032 -3886
  7. package/dist/agent/schmancy.agent.js.map +1 -1
  8. package/dist/agent/schmancy.manifest.json +215 -58
  9. package/dist/animation-CCOIW4wJ.cjs.map +1 -1
  10. package/dist/animation-DCznELuT.js.map +1 -1
  11. package/dist/area-CbajcnmJ.cjs +21 -0
  12. package/dist/area-CbajcnmJ.cjs.map +1 -0
  13. package/dist/{area-DtCNCb8w.js → area-MxLAyWgV.js} +22 -22
  14. package/dist/area-MxLAyWgV.js.map +1 -0
  15. package/dist/area.cjs +1 -1
  16. package/dist/area.js +1 -1
  17. package/dist/{audio-DdN76ikW.js → audio-B_0PGwYC.js} +1 -1
  18. package/dist/audio-B_0PGwYC.js.map +1 -0
  19. package/dist/{audio-B924fI5N.cjs → audio-CpwrIaw-.cjs} +1 -1
  20. package/dist/audio-CpwrIaw-.cjs.map +1 -0
  21. package/dist/audio.cjs +1 -1
  22. package/dist/audio.js +2 -2
  23. package/dist/autocomplete-CILzaDB7.cjs +115 -0
  24. package/dist/autocomplete-CILzaDB7.cjs.map +1 -0
  25. package/dist/{autocomplete-UNOknYUz.js → autocomplete-DV9RxCun.js} +113 -113
  26. package/dist/autocomplete-DV9RxCun.js.map +1 -0
  27. package/dist/autocomplete.cjs +1 -1
  28. package/dist/autocomplete.js +1 -1
  29. package/dist/avatar.cjs +1 -1
  30. package/dist/avatar.cjs.map +1 -1
  31. package/dist/avatar.js +4 -4
  32. package/dist/avatar.js.map +1 -1
  33. package/dist/badge.cjs +1 -1
  34. package/dist/badge.js +1 -1
  35. package/dist/{boat-BZah1Sf9.js → boat-DoZGgQ0P.js} +5 -5
  36. package/dist/{boat-BZah1Sf9.js.map → boat-DoZGgQ0P.js.map} +1 -1
  37. package/dist/{boat-D3bEjxf8.cjs → boat-sg0cWO8a.cjs} +2 -2
  38. package/dist/{boat-D3bEjxf8.cjs.map → boat-sg0cWO8a.cjs.map} +1 -1
  39. package/dist/boat.cjs +1 -1
  40. package/dist/boat.js +1 -1
  41. package/dist/breadcrumb.cjs +32 -31
  42. package/dist/breadcrumb.cjs.map +1 -1
  43. package/dist/breadcrumb.js +33 -32
  44. package/dist/breadcrumb.js.map +1 -1
  45. package/dist/busy-Brs-TDh9.cjs +133 -0
  46. package/dist/busy-Brs-TDh9.cjs.map +1 -0
  47. package/dist/busy-g4LoQmhB.js +172 -0
  48. package/dist/busy-g4LoQmhB.js.map +1 -0
  49. package/dist/busy.cjs +1 -1
  50. package/dist/busy.js +1 -1
  51. package/dist/{button-CTvS5YX4.cjs → button-Cml67Y_d.cjs} +41 -32
  52. package/dist/button-Cml67Y_d.cjs.map +1 -0
  53. package/dist/{button-DgoDfcJx.js → button-DWANpZfD.js} +43 -34
  54. package/dist/button-DWANpZfD.js.map +1 -0
  55. package/dist/button.cjs +40 -33
  56. package/dist/button.cjs.map +1 -1
  57. package/dist/button.js +42 -35
  58. package/dist/button.js.map +1 -1
  59. package/dist/calendar-2dJrw9pR.cjs +58 -0
  60. package/dist/calendar-2dJrw9pR.cjs.map +1 -0
  61. package/dist/calendar-kCe5LaBa.js +434 -0
  62. package/dist/calendar-kCe5LaBa.js.map +1 -0
  63. package/dist/calendar.cjs +1 -0
  64. package/dist/calendar.js +2 -0
  65. package/dist/{card-C6ijJZpF.js → card-CS_hYJbz.js} +136 -136
  66. package/dist/card-CS_hYJbz.js.map +1 -0
  67. package/dist/card-d0KhTnx5.cjs +177 -0
  68. package/dist/card-d0KhTnx5.cjs.map +1 -0
  69. package/dist/card.cjs +1 -1
  70. package/dist/card.js +1 -1
  71. package/dist/{checkbox-7vEPZuGC.js → checkbox-Bjp7kWuE.js} +2 -2
  72. package/dist/{checkbox-7vEPZuGC.js.map → checkbox-Bjp7kWuE.js.map} +1 -1
  73. package/dist/{checkbox-DXKdxkXE.cjs → checkbox-DZ2Wrz7Y.cjs} +1 -1
  74. package/dist/{checkbox-DXKdxkXE.cjs.map → checkbox-DZ2Wrz7Y.cjs.map} +1 -1
  75. package/dist/checkbox.cjs +1 -1
  76. package/dist/checkbox.js +1 -1
  77. package/dist/{chips-9eG-96_D.cjs → chips-BHBVkxsa.cjs} +142 -153
  78. package/dist/chips-BHBVkxsa.cjs.map +1 -0
  79. package/dist/{chips-DF7akwz7.js → chips-DACeW7YL.js} +127 -138
  80. package/dist/chips-DACeW7YL.js.map +1 -0
  81. package/dist/chips.cjs +1 -1
  82. package/dist/chips.js +2 -2
  83. package/dist/connectivity.cjs +53 -35
  84. package/dist/connectivity.cjs.map +1 -1
  85. package/dist/connectivity.js +55 -37
  86. package/dist/connectivity.js.map +1 -1
  87. package/dist/content-drawer.cjs +1 -1
  88. package/dist/content-drawer.js +1 -1
  89. package/dist/cursor-glow-Ah7VXSj7.js.map +1 -1
  90. package/dist/cursor-glow-Bulq-38P.cjs.map +1 -1
  91. package/dist/date-range-B2VN7cl_.cjs +138 -0
  92. package/dist/date-range-B2VN7cl_.cjs.map +1 -0
  93. package/dist/date-range-CDF_5ju_.js +439 -0
  94. package/dist/date-range-CDF_5ju_.js.map +1 -0
  95. package/dist/{date-range-inline-DV2c_gWM.cjs → date-range-inline-CGM0SPK9.cjs} +2 -4
  96. package/dist/date-range-inline-CGM0SPK9.cjs.map +1 -0
  97. package/dist/{date-range-inline-BnOD-ddB.js → date-range-inline-D6Ozerzw.js} +3 -5
  98. package/dist/date-range-inline-D6Ozerzw.js.map +1 -0
  99. package/dist/date-range-inline.cjs +1 -1
  100. package/dist/date-range-inline.js +1 -1
  101. package/dist/date-range.cjs +1 -1
  102. package/dist/date-range.js +2 -2
  103. package/dist/dayjs.min-CvRZTfam.cjs +1 -0
  104. package/dist/dayjs.min-CvRZTfam.cjs.map +1 -0
  105. package/dist/dayjs.min-DnELezPs.js +296 -0
  106. package/dist/dayjs.min-DnELezPs.js.map +1 -0
  107. package/dist/delay.cjs +1 -1
  108. package/dist/delay.js +3 -3
  109. package/dist/{details-ByF66CyY.js → details-Ct1_GwKr.js} +104 -93
  110. package/dist/details-Ct1_GwKr.js.map +1 -0
  111. package/dist/{details-B2-jECBh.cjs → details-D4fVOaj4.cjs} +109 -98
  112. package/dist/details-D4fVOaj4.cjs.map +1 -0
  113. package/dist/details.cjs +1 -1
  114. package/dist/details.js +1 -1
  115. package/dist/{directives-DCb_LA9R.cjs → directives-B2VxfwRL.cjs} +1 -1
  116. package/dist/directives-B2VxfwRL.cjs.map +1 -0
  117. package/dist/{directives-BL7mzVsA.js → directives-Dj8jlv-Q.js} +3 -3
  118. package/dist/directives-Dj8jlv-Q.js.map +1 -0
  119. package/dist/directives.cjs +1 -1
  120. package/dist/directives.js +2 -2
  121. package/dist/discovery.service-CIa3Eeuk.cjs.map +1 -1
  122. package/dist/discovery.service-DZFxtRwW.js.map +1 -1
  123. package/dist/divider-B3v33OnX.cjs +57 -0
  124. package/dist/divider-B3v33OnX.cjs.map +1 -0
  125. package/dist/divider-BJHW3q11.js +89 -0
  126. package/dist/divider-BJHW3q11.js.map +1 -0
  127. package/dist/divider.cjs +1 -1
  128. package/dist/divider.js +1 -1
  129. package/dist/dropdown.cjs +40 -40
  130. package/dist/dropdown.cjs.map +1 -1
  131. package/dist/dropdown.js +41 -41
  132. package/dist/dropdown.js.map +1 -1
  133. package/dist/{expand-cZ8rfCWP.js → expand-BT8mOu8Q.js} +103 -97
  134. package/dist/expand-BT8mOu8Q.js.map +1 -0
  135. package/dist/expand-D0YdR9nR.cjs +147 -0
  136. package/dist/expand-D0YdR9nR.cjs.map +1 -0
  137. package/dist/expand.cjs +1 -1
  138. package/dist/expand.js +1 -1
  139. package/dist/fab.cjs +1 -1
  140. package/dist/fab.cjs.map +1 -1
  141. package/dist/fab.js +2 -2
  142. package/dist/fab.js.map +1 -1
  143. package/dist/{float-DkGyWSWy.cjs → float-BPQlDyai.cjs} +1 -1
  144. package/dist/{float-DkGyWSWy.cjs.map → float-BPQlDyai.cjs.map} +1 -1
  145. package/dist/{float-zn3DgXBT.js → float-BQcxj3i_.js} +2 -2
  146. package/dist/{float-zn3DgXBT.js.map → float-BQcxj3i_.js.map} +1 -1
  147. package/dist/float.cjs +1 -1
  148. package/dist/float.js +1 -1
  149. package/dist/{form-DowzVsgI.cjs → form-CoWFnClb.cjs} +8 -13
  150. package/dist/form-CoWFnClb.cjs.map +1 -0
  151. package/dist/{form-tG7LwDm4.js → form-hC2LvCHX.js} +10 -15
  152. package/dist/form-hC2LvCHX.js.map +1 -0
  153. package/dist/form.cjs +12 -13
  154. package/dist/form.cjs.map +1 -1
  155. package/dist/form.js +23 -24
  156. package/dist/form.js.map +1 -1
  157. package/dist/gravity-6pL6CfIr.cjs.map +1 -1
  158. package/dist/gravity-sVK3zGBF.js.map +1 -1
  159. package/dist/handover/agent-runtime-followups.md +1 -1
  160. package/dist/handover/agent-runtime-v1.md +3 -3
  161. package/dist/{hashContent-iRZJJWtE.cjs.map → hashContent--s09Ed_g.cjs.map} +1 -1
  162. package/dist/{hashContent-BqU6v1Xr.js.map → hashContent-CAvrQ56N.js.map} +1 -1
  163. package/dist/icons-BeGKDZ-k.cjs +22 -0
  164. package/dist/icons-BeGKDZ-k.cjs.map +1 -0
  165. package/dist/{icons-Dup5skuk.js → icons-DEJnIxml.js} +20 -22
  166. package/dist/icons-DEJnIxml.js.map +1 -0
  167. package/dist/icons.cjs +1 -1
  168. package/dist/icons.js +1 -1
  169. package/dist/{iframe-CDJjnNmo.cjs → iframe-BkSukM9C.cjs} +9 -9
  170. package/dist/iframe-BkSukM9C.cjs.map +1 -0
  171. package/dist/{iframe-Xc3EPMZT.js → iframe-V3S-bwEY.js} +10 -10
  172. package/dist/iframe-V3S-bwEY.js.map +1 -0
  173. package/dist/iframe.cjs +1 -1
  174. package/dist/iframe.js +1 -1
  175. package/dist/index.cjs +1 -1
  176. package/dist/index.js +61 -60
  177. package/dist/{input-cTyDxW9L.js → input-CPFCSQld.js} +3 -10
  178. package/dist/input-CPFCSQld.js.map +1 -0
  179. package/dist/{input-DnmC6J1T.cjs → input-DSfwfhhj.cjs} +2 -9
  180. package/dist/input-DSfwfhhj.cjs.map +1 -0
  181. package/dist/input-chip-BUuFJUky.cjs +129 -0
  182. package/dist/input-chip-BUuFJUky.cjs.map +1 -0
  183. package/dist/{input-chip-CYI17YOq.js → input-chip-C3a1fwKB.js} +87 -104
  184. package/dist/input-chip-C3a1fwKB.js.map +1 -0
  185. package/dist/input.cjs +1 -1
  186. package/dist/input.js +1 -1
  187. package/dist/json.cjs +5 -1
  188. package/dist/json.cjs.map +1 -1
  189. package/dist/json.js +8 -4
  190. package/dist/json.js.map +1 -1
  191. package/dist/kbd.cjs +28 -28
  192. package/dist/kbd.cjs.map +1 -1
  193. package/dist/kbd.js +29 -29
  194. package/dist/kbd.js.map +1 -1
  195. package/dist/{layout-CNlZSJFU.cjs → layout-CdyHy_oX.cjs} +1 -1
  196. package/dist/layout-CdyHy_oX.cjs.map +1 -0
  197. package/dist/{layout-DDxw0EwL.js → layout-k6fOkpif.js} +1 -1
  198. package/dist/layout-k6fOkpif.js.map +1 -0
  199. package/dist/layout.cjs +26 -26
  200. package/dist/layout.cjs.map +1 -1
  201. package/dist/layout.js +27 -27
  202. package/dist/layout.js.map +1 -1
  203. package/dist/lazy-BaAiIUru.js.map +1 -1
  204. package/dist/lazy-C-7a4FAe.cjs.map +1 -1
  205. package/dist/{lightbox-CH-y3rYB.js → lightbox-DIG0VLOK.js} +8 -14
  206. package/dist/lightbox-DIG0VLOK.js.map +1 -0
  207. package/dist/{lightbox-CvtqoInF.cjs → lightbox-E5rgd-hu.cjs} +7 -13
  208. package/dist/lightbox-E5rgd-hu.cjs.map +1 -0
  209. package/dist/lightbox.cjs +1 -1
  210. package/dist/lightbox.js +1 -1
  211. package/dist/list-BRz0rDSH.cjs +47 -0
  212. package/dist/list-BRz0rDSH.cjs.map +1 -0
  213. package/dist/{list-DrsawQ5R.js → list-NrOYDPBo.js} +42 -35
  214. package/dist/list-NrOYDPBo.js.map +1 -0
  215. package/dist/list.cjs +1 -1
  216. package/dist/list.js +1 -1
  217. package/dist/magnetic-DKtc4umC.cjs.map +1 -1
  218. package/dist/magnetic-DaOOv5Dz.js.map +1 -1
  219. package/dist/{menu-CsY5lMqY.js → menu-B1Ei9SVj.js} +12 -12
  220. package/dist/menu-B1Ei9SVj.js.map +1 -0
  221. package/dist/{menu-BFRcTe3o.cjs → menu-Duvl66Nl.cjs} +10 -10
  222. package/dist/menu-Duvl66Nl.cjs.map +1 -0
  223. package/dist/menu.cjs +1 -1
  224. package/dist/menu.js +1 -1
  225. package/dist/{mixins-BoMURWag.cjs → mixins-Cjn20BQH.cjs} +42 -100
  226. package/dist/mixins-Cjn20BQH.cjs.map +1 -0
  227. package/dist/{mixins-bCEXbwJV.js → mixins-q4KAL8Xr.js} +42 -100
  228. package/dist/mixins-q4KAL8Xr.js.map +1 -0
  229. package/dist/mixins.cjs +1 -1
  230. package/dist/mixins.js +2 -2
  231. package/dist/nav-drawer.cjs +1 -1
  232. package/dist/nav-drawer.js +1 -1
  233. package/dist/navigation-bar.cjs +1 -1
  234. package/dist/navigation-bar.js +1 -1
  235. package/dist/navigation-rail.cjs +2 -4
  236. package/dist/navigation-rail.cjs.map +1 -1
  237. package/dist/navigation-rail.js +3 -5
  238. package/dist/navigation-rail.js.map +1 -1
  239. package/dist/{notification-DFKRMmSq.js → notification-COhUhUCr.js} +5 -7
  240. package/dist/notification-COhUhUCr.js.map +1 -0
  241. package/dist/{notification-FBf3Mb2e.cjs → notification-DsdA_MJe.cjs} +2 -4
  242. package/dist/notification-DsdA_MJe.cjs.map +1 -0
  243. package/dist/notification.cjs +1 -1
  244. package/dist/notification.js +1 -1
  245. package/dist/{option-Ct0lGdH3.js → option-BIzgTbXz.js} +20 -20
  246. package/dist/option-BIzgTbXz.js.map +1 -0
  247. package/dist/option-C5hhqR2z.cjs +43 -0
  248. package/dist/option-C5hhqR2z.cjs.map +1 -0
  249. package/dist/option.cjs +1 -1
  250. package/dist/option.js +1 -1
  251. package/dist/{overlay-sRXiMkjn.cjs → overlay-BzgF8P7i.cjs} +48 -41
  252. package/dist/overlay-BzgF8P7i.cjs.map +1 -0
  253. package/dist/{overlay-Bh8Q_R01.js → overlay-LoRRemny.js} +52 -45
  254. package/dist/overlay-LoRRemny.js.map +1 -0
  255. package/dist/overlay-stack-Bdr9lOqi.cjs.map +1 -1
  256. package/dist/overlay-stack-D2rgxQLh.js.map +1 -1
  257. package/dist/overlay.cjs +1 -1
  258. package/dist/{overlay.confirm-body-CQihsR20.js → overlay.confirm-body-D0b1MoCw.js} +30 -45
  259. package/dist/overlay.confirm-body-D0b1MoCw.js.map +1 -0
  260. package/dist/{overlay.confirm-body-Jc1EuMGs.cjs → overlay.confirm-body-DCneq73Z.cjs} +22 -37
  261. package/dist/overlay.confirm-body-DCneq73Z.cjs.map +1 -0
  262. package/dist/overlay.js +3 -3
  263. package/dist/{overlay.service-BXPgS7ay.js → overlay.service-BuUeti6X.js} +2 -2
  264. package/dist/overlay.service-BuUeti6X.js.map +1 -0
  265. package/dist/{overlay.service-9Dp3g7ot.cjs → overlay.service-MMTiW2T3.cjs} +1 -1
  266. package/dist/overlay.service-MMTiW2T3.cjs.map +1 -0
  267. package/dist/{progress-CYLshdo2.js → progress-D7n3SKAO.js} +50 -50
  268. package/dist/progress-D7n3SKAO.js.map +1 -0
  269. package/dist/progress-DsCnFsH5.cjs +51 -0
  270. package/dist/progress-DsCnFsH5.cjs.map +1 -0
  271. package/dist/progress.cjs +1 -1
  272. package/dist/progress.js +1 -1
  273. package/dist/{radio-group-6kCgOgBL.cjs → radio-group-CaAjg9UV.cjs} +1 -1
  274. package/dist/radio-group-CaAjg9UV.cjs.map +1 -0
  275. package/dist/{radio-group-bZtZHOj_.js → radio-group-Drpl6Pl8.js} +2 -2
  276. package/dist/radio-group-Drpl6Pl8.js.map +1 -0
  277. package/dist/radio-group.cjs +1 -1
  278. package/dist/radio-group.js +1 -1
  279. package/dist/range.cjs +4 -2
  280. package/dist/range.cjs.map +1 -1
  281. package/dist/range.js +5 -3
  282. package/dist/range.js.map +1 -1
  283. package/dist/reduced-motion-D-L12p7G.js.map +1 -1
  284. package/dist/reduced-motion-Ds-HjMzn.cjs.map +1 -1
  285. package/dist/{rxjs-utils-Csnks202.cjs.map → rxjs-utils-4P2v57ke.cjs.map} +1 -1
  286. package/dist/{rxjs-utils-d-ivVN84.js.map → rxjs-utils-JMFdgQSl.js.map} +1 -1
  287. package/dist/rxjs-utils.cjs +1 -1
  288. package/dist/rxjs-utils.js +1 -1
  289. package/dist/search-DPKoC-dT.cjs.map +1 -1
  290. package/dist/search-MvIBA93K.js.map +1 -1
  291. package/dist/{select-CU3X-PIa.js → select-CTXkrrVZ.js} +13 -13
  292. package/dist/select-CTXkrrVZ.js.map +1 -0
  293. package/dist/select-DcLcpPCh.cjs +56 -0
  294. package/dist/select-DcLcpPCh.cjs.map +1 -0
  295. package/dist/select.cjs +1 -1
  296. package/dist/select.js +1 -1
  297. package/dist/skeleton.cjs +37 -33
  298. package/dist/skeleton.cjs.map +1 -1
  299. package/dist/skeleton.js +38 -34
  300. package/dist/skeleton.js.map +1 -1
  301. package/dist/skills/schmancy/surface.md +38 -22
  302. package/dist/skills/surface.md +38 -22
  303. package/dist/slider.cjs +31 -31
  304. package/dist/slider.cjs.map +1 -1
  305. package/dist/slider.js +32 -32
  306. package/dist/slider.js.map +1 -1
  307. package/dist/{sound.service-B4ZmXpH9.js → sound.service-AJwuk3yr.js} +1 -1
  308. package/dist/sound.service-AJwuk3yr.js.map +1 -0
  309. package/dist/{sound.service-DjlMvicQ.cjs → sound.service-CVsxhQkX.cjs} +1 -1
  310. package/dist/sound.service-CVsxhQkX.cjs.map +1 -0
  311. package/dist/{splash-screen-emCLYoVl.js → splash-screen-DANfqvlo.js} +23 -26
  312. package/dist/splash-screen-DANfqvlo.js.map +1 -0
  313. package/dist/splash-screen-K74cgU6S.cjs +38 -0
  314. package/dist/splash-screen-K74cgU6S.cjs.map +1 -0
  315. package/dist/splash-screen.cjs +1 -1
  316. package/dist/splash-screen.js +1 -1
  317. package/dist/{src-DGDTkOvC.js → src-Bo-vvN6m.js} +173 -175
  318. package/dist/src-Bo-vvN6m.js.map +1 -0
  319. package/dist/src-MdpH1zth.cjs +237 -0
  320. package/dist/src-MdpH1zth.cjs.map +1 -0
  321. package/dist/{state-CumAEPQH.cjs → state-BWQiqN6I.cjs} +1 -1
  322. package/dist/state-BWQiqN6I.cjs.map +1 -0
  323. package/dist/{state-DMd_FUeA.js → state-DBA_gzJO.js} +1 -1
  324. package/dist/state-DBA_gzJO.js.map +1 -0
  325. package/dist/state.cjs +1 -1
  326. package/dist/state.js +2 -2
  327. package/dist/steps.cjs +20 -12
  328. package/dist/steps.cjs.map +1 -1
  329. package/dist/steps.js +21 -13
  330. package/dist/steps.js.map +1 -1
  331. package/dist/surface-COBvWWFb.cjs +7 -0
  332. package/dist/surface-COBvWWFb.cjs.map +1 -0
  333. package/dist/{surface-DNiYigsX.js → surface-DXk1X1tL.js} +9 -9
  334. package/dist/{surface-DNiYigsX.js.map → surface-DXk1X1tL.js.map} +1 -1
  335. package/dist/surface.cjs +1 -1
  336. package/dist/surface.js +1 -1
  337. package/dist/switch.cjs +13 -4
  338. package/dist/switch.cjs.map +1 -1
  339. package/dist/switch.js +14 -5
  340. package/dist/switch.js.map +1 -1
  341. package/dist/table.cjs +4 -10
  342. package/dist/table.cjs.map +1 -1
  343. package/dist/table.js +5 -11
  344. package/dist/table.js.map +1 -1
  345. package/dist/{tabs-4T_4kCf-.js → tabs-BYhFWnsx.js} +7 -7
  346. package/dist/tabs-BYhFWnsx.js.map +1 -0
  347. package/dist/{tabs-Byxxt-AH.cjs → tabs-CJwB0fr0.cjs} +6 -6
  348. package/dist/tabs-CJwB0fr0.cjs.map +1 -0
  349. package/dist/tabs.cjs +1 -1
  350. package/dist/tabs.js +1 -1
  351. package/dist/teleport.cjs +1 -1
  352. package/dist/teleport.js +1 -1
  353. package/dist/{textarea-kkYNk1ET.js → textarea-BjDx1w2g.js} +37 -41
  354. package/dist/textarea-BjDx1w2g.js.map +1 -0
  355. package/dist/{textarea-BwYwH9fu.cjs → textarea-CGgznhd6.cjs} +36 -40
  356. package/dist/textarea-CGgznhd6.cjs.map +1 -0
  357. package/dist/textarea.cjs +1 -1
  358. package/dist/textarea.js +1 -1
  359. package/dist/{theme-BG0EnzYP.cjs → theme-BVul7lHS.cjs} +6 -6
  360. package/dist/{theme-BG0EnzYP.cjs.map → theme-BVul7lHS.cjs.map} +1 -1
  361. package/dist/{theme-DwQBl6sr.js → theme-Dvm5J8nh.js} +11 -11
  362. package/dist/{theme-DwQBl6sr.js.map → theme-Dvm5J8nh.js.map} +1 -1
  363. package/dist/{theme-button-BD8anzsZ.js → theme-button-Bko5ohFP.js} +2 -2
  364. package/dist/{theme-button-BD8anzsZ.js.map → theme-button-Bko5ohFP.js.map} +1 -1
  365. package/dist/{theme-button-DlrNoCMA.cjs → theme-button-YLY7zR1c.cjs} +1 -1
  366. package/dist/{theme-button-DlrNoCMA.cjs.map → theme-button-YLY7zR1c.cjs.map} +1 -1
  367. package/dist/theme-button.cjs +1 -1
  368. package/dist/theme-button.js +1 -1
  369. package/dist/theme.cjs +1 -1
  370. package/dist/{theme.interface-CSt7JUBD.cjs.map → theme.interface-B-qxDsZQ.cjs.map} +1 -1
  371. package/dist/{theme.interface-odQEpZZH.js.map → theme.interface-B7caS5cg.js.map} +1 -1
  372. package/dist/theme.js +4 -4
  373. package/dist/{theme.service-Dv_55nfE.js → theme.service-D94nm7Bf.js} +1 -1
  374. package/dist/theme.service-D94nm7Bf.js.map +1 -0
  375. package/dist/{theme.service-pjkTM209.cjs → theme.service-h2fXQq7x.cjs} +1 -1
  376. package/dist/theme.service-h2fXQq7x.cjs.map +1 -0
  377. package/dist/tooltip.cjs.map +1 -1
  378. package/dist/tooltip.js.map +1 -1
  379. package/dist/tree.cjs +14 -14
  380. package/dist/tree.cjs.map +1 -1
  381. package/dist/tree.js +15 -15
  382. package/dist/tree.js.map +1 -1
  383. package/dist/types.cjs +1 -1
  384. package/dist/types.cjs.map +1 -1
  385. package/dist/types.js +19 -2
  386. package/dist/types.js.map +1 -1
  387. package/dist/typewriter.cjs.map +1 -1
  388. package/dist/typewriter.js.map +1 -1
  389. package/dist/typography-ByF2k5yW.js +358 -0
  390. package/dist/typography-ByF2k5yW.js.map +1 -0
  391. package/dist/typography-Cfav17it.cjs +282 -0
  392. package/dist/typography-Cfav17it.cjs.map +1 -0
  393. package/dist/typography.cjs +1 -1
  394. package/dist/typography.js +1 -1
  395. package/dist/utils-DIXndz6Q.cjs.map +1 -0
  396. package/dist/utils-dSPH7Oh9.js.map +1 -0
  397. package/dist/utils.cjs +1 -1
  398. package/dist/utils.js +1 -1
  399. package/dist/visually-hidden.cjs +13 -13
  400. package/dist/visually-hidden.cjs.map +1 -1
  401. package/dist/visually-hidden.js +14 -14
  402. package/dist/visually-hidden.js.map +1 -1
  403. package/dist/window-Br1OmpL-.cjs +67 -0
  404. package/dist/window-Br1OmpL-.cjs.map +1 -0
  405. package/dist/{window-C76zstbV.js → window-CCmN4but.js} +24 -15
  406. package/dist/window-CCmN4but.js.map +1 -0
  407. package/dist/window.cjs +1 -1
  408. package/dist/window.js +1 -1
  409. package/package.json +1 -1
  410. package/skills/schmancy/surface.md +38 -22
  411. package/src/area/area.component.ts +249 -163
  412. package/src/area/area.service.test.ts +994 -1006
  413. package/src/area/area.service.ts +76 -72
  414. package/src/area/index.ts +7 -7
  415. package/src/area/lazy.ts +39 -42
  416. package/src/area/route.component.ts +54 -52
  417. package/src/area/router.types.ts +7 -7
  418. package/src/audio/emotional-sounds.ts +880 -801
  419. package/src/audio/sound.service.ts +26 -5
  420. package/src/avatar/avatar.ts +4 -4
  421. package/src/badge/badge.ts +15 -12
  422. package/src/badge/index.ts +1 -1
  423. package/src/boat/boat.ts +1 -1
  424. package/src/breadcrumb/breadcrumb.ts +37 -32
  425. package/src/busy/busy.ts +15 -12
  426. package/src/busy/index.ts +2 -2
  427. package/src/busy/spinner.ts +132 -119
  428. package/src/button/button.test.ts +5 -1
  429. package/src/button/button.ts +113 -72
  430. package/src/button/icon-button.ts +64 -46
  431. package/src/button/index.ts +2 -2
  432. package/src/calendar/calendar.test.ts +504 -0
  433. package/src/calendar/calendar.ts +587 -0
  434. package/src/calendar/index.ts +2 -0
  435. package/src/card/actions.ts +11 -9
  436. package/src/card/card.ts +79 -77
  437. package/src/card/content.ts +8 -6
  438. package/src/card/index.ts +4 -4
  439. package/src/card/media.ts +50 -50
  440. package/src/chips/assist-chip.ts +1 -1
  441. package/src/chips/chips.ts +1 -1
  442. package/src/chips/filter-chip.ts +1 -1
  443. package/src/chips/index.ts +1 -1
  444. package/src/chips/input-chip.ts +1 -1
  445. package/src/chips/suggestion-chip.ts +1 -1
  446. package/src/connectivity/connectivity-status.ts +90 -62
  447. package/src/content-drawer/drawer.service.ts +47 -36
  448. package/src/content-drawer/drawer.ts +31 -18
  449. package/src/content-drawer/index.ts +5 -5
  450. package/src/content-drawer/main.ts +9 -7
  451. package/src/content-drawer/sheet.ts +8 -6
  452. package/src/date-range-inline/date-range-inline.ts +523 -522
  453. package/src/date-range-inline/index.ts +2 -2
  454. package/src/delay/index.ts +1 -1
  455. package/src/details/details.ts +119 -105
  456. package/src/details/index.ts +1 -1
  457. package/src/directives/ai-badge.ts +1 -5
  458. package/src/directives/animate-text.ts +43 -31
  459. package/src/directives/art/effects/howl.ts +1 -4
  460. package/src/directives/art/effects/samwa.ts +11 -5
  461. package/src/directives/art/effects/snow.ts +1 -2
  462. package/src/directives/battery.ts +21 -12
  463. package/src/directives/confirm-click.ts +9 -17
  464. package/src/directives/cursor-glow.ts +1 -1
  465. package/src/directives/cycle-text.ts +7 -21
  466. package/src/directives/drag.ts +50 -45
  467. package/src/directives/fyi.ts +1 -6
  468. package/src/directives/gravity.ts +10 -8
  469. package/src/directives/hummingbird.ts +256 -107
  470. package/src/directives/index.ts +29 -29
  471. package/src/directives/intersect.ts +11 -11
  472. package/src/directives/layout.ts +25 -36
  473. package/src/directives/liquid.ts +4 -10
  474. package/src/directives/living-border.ts +7 -5
  475. package/src/directives/long-press.ts +2 -1
  476. package/src/directives/magnetic.ts +7 -6
  477. package/src/directives/nebula.ts +34 -28
  478. package/src/directives/overflow-within.ts +18 -20
  479. package/src/directives/reduced-motion.ts +9 -9
  480. package/src/directives/reveal.ts +193 -195
  481. package/src/directives/ripple.ts +9 -7
  482. package/src/directives/urgent.ts +3 -1
  483. package/src/directives/working-snake.ts +1 -1
  484. package/src/discovery/discovery.service.ts +198 -210
  485. package/src/discovery/index.ts +1 -1
  486. package/src/divider/divider.ts +49 -47
  487. package/src/divider/index.ts +1 -1
  488. package/src/dropdown/dropdown-content.ts +42 -40
  489. package/src/dropdown/index.ts +2 -2
  490. package/src/expand/expand-root.component.ts +70 -61
  491. package/src/expand/expand.component.ts +48 -43
  492. package/src/fab/fab.test.ts +1 -2
  493. package/src/fab/fab.ts +2 -4
  494. package/src/form/fields/autocomplete/autocomplete.scss +6 -2
  495. package/src/form/fields/autocomplete/autocomplete.ts +712 -724
  496. package/src/form/fields/autocomplete/index.ts +1 -1
  497. package/src/form/fields/checkbox/checkbox.ts +1 -4
  498. package/src/form/fields/chips/assist-chip.ts +69 -72
  499. package/src/form/fields/chips/chips.ts +14 -15
  500. package/src/form/fields/chips/filter-chip.ts +36 -32
  501. package/src/form/fields/chips/index.ts +5 -5
  502. package/src/form/fields/chips/input-chip.ts +130 -142
  503. package/src/form/fields/chips/suggestion-chip.ts +69 -72
  504. package/src/form/fields/date-range/date-range-dialog.ts +154 -194
  505. package/src/form/fields/date-range/date-range-helpers.ts +63 -64
  506. package/src/form/fields/date-range/date-range.test.ts +575 -121
  507. package/src/form/fields/date-range/date-range.ts +343 -395
  508. package/src/form/fields/date-range/index.ts +2 -2
  509. package/src/form/fields/input/index.ts +8 -8
  510. package/src/form/fields/input/input.scss +30 -26
  511. package/src/form/fields/input/input.test.ts +4 -1
  512. package/src/form/fields/input/input.ts +4 -20
  513. package/src/form/fields/radio-group/index.ts +2 -2
  514. package/src/form/fields/radio-group/radio-button.ts +8 -8
  515. package/src/form/fields/radio-group/radio-group.ts +4 -1
  516. package/src/form/fields/range/range.ts +3 -1
  517. package/src/form/fields/select/index.ts +2 -2
  518. package/src/form/fields/select/select.ts +51 -45
  519. package/src/form/fields/switch/switch.ts +13 -7
  520. package/src/form/fields/textarea/index.ts +1 -1
  521. package/src/form/fields/textarea/textarea.ts +44 -49
  522. package/src/form/form-summary.ts +15 -14
  523. package/src/form/form.test.ts +0 -1
  524. package/src/form/form.ts +11 -23
  525. package/src/icons/icon.ts +25 -25
  526. package/src/icons/index.ts +1 -1
  527. package/src/iframe/iframe.ts +11 -9
  528. package/src/index.ts +1 -0
  529. package/src/json/json.ts +9 -2
  530. package/src/kbd/kbd.ts +30 -28
  531. package/src/layout/scroll/index.ts +1 -1
  532. package/src/layout/scroll/scroll.ts +54 -54
  533. package/src/lightbox/lightbox-service.ts +27 -18
  534. package/src/lightbox/lightbox.directive.ts +2 -1
  535. package/src/lightbox/lightbox.ts +21 -38
  536. package/src/list/index.ts +3 -3
  537. package/src/list/list-item.ts +32 -26
  538. package/src/list/list.ts +13 -8
  539. package/src/menu/index.ts +2 -2
  540. package/src/menu/menu-item.ts +7 -5
  541. package/src/menu/menu.ts +8 -6
  542. package/src/nav-drawer/appbar.ts +9 -7
  543. package/src/nav-drawer/content.ts +10 -8
  544. package/src/nav-drawer/drawer.ts +29 -25
  545. package/src/nav-drawer/index.ts +6 -6
  546. package/src/navigation-bar/index.ts +2 -2
  547. package/src/navigation-bar/navigation-bar-item.ts +127 -118
  548. package/src/navigation-bar/navigation-bar.ts +103 -91
  549. package/src/navigation-rail/index.ts +2 -2
  550. package/src/navigation-rail/navigation-rail.ts +21 -22
  551. package/src/notification/index.ts +6 -6
  552. package/src/notification/notification-service.ts +1 -2
  553. package/src/notification/notification.scss +5 -1
  554. package/src/notification/notification.ts +1 -3
  555. package/src/notification/notify.ts +204 -207
  556. package/src/option/index.ts +1 -1
  557. package/src/option/option.ts +26 -25
  558. package/src/overlay/overlay.animations.ts +4 -14
  559. package/src/overlay/overlay.component.ts +110 -131
  560. package/src/overlay/overlay.confirm-body.ts +26 -48
  561. package/src/overlay/overlay.gestures.ts +8 -10
  562. package/src/overlay/overlay.layout.ts +1 -4
  563. package/src/overlay/overlay.positioning.ts +4 -15
  564. package/src/overlay/overlay.service.ts +9 -24
  565. package/src/overlay/overlay.stack.test.ts +4 -1
  566. package/src/overlay/overlay.stack.ts +4 -4
  567. package/src/overlay/overlay.types.ts +11 -20
  568. package/src/progress/index.ts +1 -1
  569. package/src/progress/progress.ts +135 -133
  570. package/src/rxjs-utils/index.ts +6 -6
  571. package/src/rxjs-utils/waitForElement.ts +20 -20
  572. package/src/rxjs-utils/waitForElementAll.ts +21 -21
  573. package/src/rxjs-utils/waitForElements.ts +27 -27
  574. package/src/rxjs-utils/waitForElementsAll.ts +27 -29
  575. package/src/rxjs-utils/waitUntil.ts +7 -12
  576. package/src/skeleton/skeleton.ts +39 -33
  577. package/src/slider/index.ts +2 -2
  578. package/src/slider/slide.ts +14 -12
  579. package/src/slider/slider.ts +24 -22
  580. package/src/splash-screen/index.ts +1 -1
  581. package/src/splash-screen/splash-screen.ts +26 -27
  582. package/src/state/active-host.ts +4 -5
  583. package/src/state/index.ts +34 -53
  584. package/src/state/persist.ts +14 -11
  585. package/src/state/schmancy-context.ts +88 -88
  586. package/src/state/state.test-d.ts +3 -13
  587. package/src/state/state.test.ts +1 -4
  588. package/src/steps/index.ts +3 -3
  589. package/src/steps/schmancy-step.ts +41 -31
  590. package/src/steps/schmancy-steps.ts +7 -5
  591. package/src/surface/index.ts +1 -1
  592. package/src/surface/surface.styles.ts +53 -104
  593. package/src/surface/surface.ts +10 -8
  594. package/src/table/index.ts +2 -2
  595. package/src/table/row.ts +1 -4
  596. package/src/table/table.ts +2 -5
  597. package/src/tabs/index.ts +2 -2
  598. package/src/tabs/tabs-group.ts +8 -6
  599. package/src/teleport/index.ts +2 -2
  600. package/src/test-utils/a11y.ts +1 -3
  601. package/src/theme/index.ts +17 -17
  602. package/src/theme/theme-audio-player.ts +18 -16
  603. package/src/theme/theme-controller-boat.ts +1 -1
  604. package/src/theme/theme-controller.ts +36 -32
  605. package/src/theme/theme.component.ts +5 -9
  606. package/src/theme/theme.events.ts +1 -1
  607. package/src/theme/theme.format.ts +7 -7
  608. package/src/theme/theme.service.ts +453 -468
  609. package/src/theme/theme.style.css +78 -23
  610. package/src/theme-button/index.ts +1 -1
  611. package/src/tooltip/tooltip.directive.ts +1 -1
  612. package/src/tree/index.ts +1 -1
  613. package/src/tree/tree.ts +24 -16
  614. package/src/types/surface.ts +38 -44
  615. package/src/typewriter/typewriter.directive.ts +30 -39
  616. package/src/typography/typography.ts +289 -269
  617. package/src/utils/animation.ts +2 -8
  618. package/src/utils/index.ts +6 -6
  619. package/src/utils/number.ts +480 -517
  620. package/src/utils/overlay-stack.ts +1 -3
  621. package/src/utils/search.ts +5 -9
  622. package/src/visually-hidden/visually-hidden.ts +15 -13
  623. package/src/window/window-manager.ts +6 -1
  624. package/src/window/window-position.ts +7 -5
  625. package/src/window/window.ts +143 -108
  626. package/types/src/calendar/calendar.d.ts +108 -0
  627. package/types/src/calendar/calendar.test.d.ts +1 -0
  628. package/types/src/calendar/index.d.ts +2 -0
  629. package/types/src/directives/cursor-glow.d.ts +1 -1
  630. package/types/src/directives/hummingbird.d.ts +3 -3
  631. package/types/src/form/fields/date-range/date-range-dialog.d.ts +24 -28
  632. package/types/src/form/fields/date-range/date-range.d.ts +39 -66
  633. package/types/src/form/fields/date-range/date-range.test.d.ts +1 -0
  634. package/types/src/form/fields/date-range/index.d.ts +1 -1
  635. package/types/src/index.d.ts +1 -0
  636. package/types/src/surface/surface.styles.d.ts +13 -6
  637. package/types/src/types/surface.d.ts +17 -22
  638. package/types/src/utils/number.d.ts +1 -1
  639. package/dist/SchmancyElement-OG71FtNv.js +0 -286
  640. package/dist/SchmancyElement-OG71FtNv.js.map +0 -1
  641. package/dist/SchmancyElement-PS1u0j1B.cjs +0 -2
  642. package/dist/SchmancyElement-PS1u0j1B.cjs.map +0 -1
  643. package/dist/area-CaEI33G0.cjs +0 -21
  644. package/dist/area-CaEI33G0.cjs.map +0 -1
  645. package/dist/area-DtCNCb8w.js.map +0 -1
  646. package/dist/audio-B924fI5N.cjs.map +0 -1
  647. package/dist/audio-DdN76ikW.js.map +0 -1
  648. package/dist/autocomplete-Dq3BkitV.cjs +0 -115
  649. package/dist/autocomplete-Dq3BkitV.cjs.map +0 -1
  650. package/dist/autocomplete-UNOknYUz.js.map +0 -1
  651. package/dist/busy--WqiXKnl.cjs +0 -134
  652. package/dist/busy--WqiXKnl.cjs.map +0 -1
  653. package/dist/busy-DzXyO0z6.js +0 -173
  654. package/dist/busy-DzXyO0z6.js.map +0 -1
  655. package/dist/button-CTvS5YX4.cjs.map +0 -1
  656. package/dist/button-DgoDfcJx.js.map +0 -1
  657. package/dist/card-C6ijJZpF.js.map +0 -1
  658. package/dist/card-Ci3_9Dd4.cjs +0 -177
  659. package/dist/card-Ci3_9Dd4.cjs.map +0 -1
  660. package/dist/chips-9eG-96_D.cjs.map +0 -1
  661. package/dist/chips-DF7akwz7.js.map +0 -1
  662. package/dist/date-range-C13_R3OA.js +0 -966
  663. package/dist/date-range-C13_R3OA.js.map +0 -1
  664. package/dist/date-range-Q2xj5Syc.cjs +0 -142
  665. package/dist/date-range-Q2xj5Syc.cjs.map +0 -1
  666. package/dist/date-range-inline-BnOD-ddB.js.map +0 -1
  667. package/dist/date-range-inline-DV2c_gWM.cjs.map +0 -1
  668. package/dist/details-B2-jECBh.cjs.map +0 -1
  669. package/dist/details-ByF66CyY.js.map +0 -1
  670. package/dist/directives-BL7mzVsA.js.map +0 -1
  671. package/dist/directives-DCb_LA9R.cjs.map +0 -1
  672. package/dist/divider-Bv2QiOZL.cjs +0 -57
  673. package/dist/divider-Bv2QiOZL.cjs.map +0 -1
  674. package/dist/divider-gYuz0zDU.js +0 -89
  675. package/dist/divider-gYuz0zDU.js.map +0 -1
  676. package/dist/expand-B9IUGVtc.cjs +0 -141
  677. package/dist/expand-B9IUGVtc.cjs.map +0 -1
  678. package/dist/expand-cZ8rfCWP.js.map +0 -1
  679. package/dist/form-DowzVsgI.cjs.map +0 -1
  680. package/dist/form-tG7LwDm4.js.map +0 -1
  681. package/dist/icons-BZeCloP9.cjs +0 -24
  682. package/dist/icons-BZeCloP9.cjs.map +0 -1
  683. package/dist/icons-Dup5skuk.js.map +0 -1
  684. package/dist/iframe-CDJjnNmo.cjs.map +0 -1
  685. package/dist/iframe-Xc3EPMZT.js.map +0 -1
  686. package/dist/input-DnmC6J1T.cjs.map +0 -1
  687. package/dist/input-cTyDxW9L.js.map +0 -1
  688. package/dist/input-chip-CV91URyU.cjs +0 -146
  689. package/dist/input-chip-CV91URyU.cjs.map +0 -1
  690. package/dist/input-chip-CYI17YOq.js.map +0 -1
  691. package/dist/layout-CNlZSJFU.cjs.map +0 -1
  692. package/dist/layout-DDxw0EwL.js.map +0 -1
  693. package/dist/lightbox-CH-y3rYB.js.map +0 -1
  694. package/dist/lightbox-CvtqoInF.cjs.map +0 -1
  695. package/dist/list-Dl8KfxrF.cjs +0 -40
  696. package/dist/list-Dl8KfxrF.cjs.map +0 -1
  697. package/dist/list-DrsawQ5R.js.map +0 -1
  698. package/dist/menu-BFRcTe3o.cjs.map +0 -1
  699. package/dist/menu-CsY5lMqY.js.map +0 -1
  700. package/dist/mixins-BoMURWag.cjs.map +0 -1
  701. package/dist/mixins-bCEXbwJV.js.map +0 -1
  702. package/dist/notification-DFKRMmSq.js.map +0 -1
  703. package/dist/notification-FBf3Mb2e.cjs.map +0 -1
  704. package/dist/option-Ct0lGdH3.js.map +0 -1
  705. package/dist/option-Il1KpU8M.cjs +0 -43
  706. package/dist/option-Il1KpU8M.cjs.map +0 -1
  707. package/dist/overlay-Bh8Q_R01.js.map +0 -1
  708. package/dist/overlay-sRXiMkjn.cjs.map +0 -1
  709. package/dist/overlay.confirm-body-CQihsR20.js.map +0 -1
  710. package/dist/overlay.confirm-body-Jc1EuMGs.cjs.map +0 -1
  711. package/dist/overlay.service-9Dp3g7ot.cjs.map +0 -1
  712. package/dist/overlay.service-BXPgS7ay.js.map +0 -1
  713. package/dist/progress-CWC5XYZ_.cjs +0 -51
  714. package/dist/progress-CWC5XYZ_.cjs.map +0 -1
  715. package/dist/progress-CYLshdo2.js.map +0 -1
  716. package/dist/radio-group-6kCgOgBL.cjs.map +0 -1
  717. package/dist/radio-group-bZtZHOj_.js.map +0 -1
  718. package/dist/select-CU3X-PIa.js.map +0 -1
  719. package/dist/select-MXsF8KsU.cjs +0 -56
  720. package/dist/select-MXsF8KsU.cjs.map +0 -1
  721. package/dist/sound.service-B4ZmXpH9.js.map +0 -1
  722. package/dist/sound.service-DjlMvicQ.cjs.map +0 -1
  723. package/dist/splash-screen-CN9dZcqC.cjs +0 -41
  724. package/dist/splash-screen-CN9dZcqC.cjs.map +0 -1
  725. package/dist/splash-screen-emCLYoVl.js.map +0 -1
  726. package/dist/src-DGDTkOvC.js.map +0 -1
  727. package/dist/src-DK3111z_.cjs +0 -240
  728. package/dist/src-DK3111z_.cjs.map +0 -1
  729. package/dist/state-CumAEPQH.cjs.map +0 -1
  730. package/dist/state-DMd_FUeA.js.map +0 -1
  731. package/dist/surface-DGI-FBoi.cjs +0 -7
  732. package/dist/surface-DGI-FBoi.cjs.map +0 -1
  733. package/dist/tabs-4T_4kCf-.js.map +0 -1
  734. package/dist/tabs-Byxxt-AH.cjs.map +0 -1
  735. package/dist/textarea-BwYwH9fu.cjs.map +0 -1
  736. package/dist/textarea-kkYNk1ET.js.map +0 -1
  737. package/dist/theme.service-Dv_55nfE.js.map +0 -1
  738. package/dist/theme.service-pjkTM209.cjs.map +0 -1
  739. package/dist/typography-BVkU11_q.js +0 -358
  740. package/dist/typography-BVkU11_q.js.map +0 -1
  741. package/dist/typography-aaQaIcNc.cjs +0 -282
  742. package/dist/typography-aaQaIcNc.cjs.map +0 -1
  743. package/dist/utils-DTa3QHxk.cjs.map +0 -1
  744. package/dist/utils-H8wNknWC.js.map +0 -1
  745. package/dist/window-C76zstbV.js.map +0 -1
  746. package/dist/window-CmB9XZzT.cjs +0 -58
  747. package/dist/window-CmB9XZzT.cjs.map +0 -1
  748. package/src/form/fields/date-range/date-range-presets.ts +0 -220
  749. package/src/form/fields/date-range/date-utils.ts +0 -58
  750. package/types/src/form/fields/date-range/date-range-presets.d.ts +0 -18
  751. package/types/src/form/fields/date-range/date-utils.d.ts +0 -15
  752. /package/dist/{hashContent-iRZJJWtE.cjs → hashContent--s09Ed_g.cjs} +0 -0
  753. /package/dist/{hashContent-BqU6v1Xr.js → hashContent-CAvrQ56N.js} +0 -0
  754. /package/dist/{rxjs-utils-Csnks202.cjs → rxjs-utils-4P2v57ke.cjs} +0 -0
  755. /package/dist/{rxjs-utils-d-ivVN84.js → rxjs-utils-JMFdgQSl.js} +0 -0
  756. /package/dist/{theme.interface-CSt7JUBD.cjs → theme.interface-B-qxDsZQ.cjs} +0 -0
  757. /package/dist/{theme.interface-odQEpZZH.js → theme.interface-B7caS5cg.js} +0 -0
  758. /package/dist/{utils-DTa3QHxk.cjs → utils-DIXndz6Q.cjs} +0 -0
  759. /package/dist/{utils-H8wNknWC.js → utils-dSPH7Oh9.js} +0 -0
@@ -696,6 +696,163 @@
696
696
  }
697
697
  ]
698
698
  },
699
+ {
700
+ "kind": "javascript-module",
701
+ "path": "calendar/calendar.ts",
702
+ "declarations": [
703
+ {
704
+ "kind": "class",
705
+ "name": "SchmancyCalendar",
706
+ "tagName": "schmancy-calendar",
707
+ "description": "A presentational calendar primitive with continuous vertical month-scroll. Supports single-date and date-range selection. No form-association.",
708
+ "attributes": [
709
+ {
710
+ "name": "mode",
711
+ "type": {
712
+ "text": "\"single\" | \"range\""
713
+ },
714
+ "values": [
715
+ "single",
716
+ "range"
717
+ ],
718
+ "default": "'single'"
719
+ },
720
+ {
721
+ "name": "type",
722
+ "type": {
723
+ "text": "\"date\" | \"datetime-local\""
724
+ },
725
+ "values": [
726
+ "date",
727
+ "datetime-local"
728
+ ],
729
+ "default": "'date'"
730
+ },
731
+ {
732
+ "name": "value",
733
+ "type": {
734
+ "text": "string"
735
+ }
736
+ },
737
+ {
738
+ "name": "start",
739
+ "type": {
740
+ "text": "string"
741
+ }
742
+ },
743
+ {
744
+ "name": "end",
745
+ "type": {
746
+ "text": "string"
747
+ }
748
+ },
749
+ {
750
+ "name": "min",
751
+ "type": {
752
+ "text": "string"
753
+ }
754
+ },
755
+ {
756
+ "name": "max",
757
+ "type": {
758
+ "text": "string"
759
+ }
760
+ },
761
+ {
762
+ "name": "month",
763
+ "type": {
764
+ "text": "string"
765
+ }
766
+ },
767
+ {
768
+ "name": "locale",
769
+ "type": {
770
+ "text": "string"
771
+ },
772
+ "description": "BCP-47 locale tag; week-start derived from it. Stored as `calLocale` to avoid conflicting with the base-class `locale` getter."
773
+ },
774
+ {
775
+ "name": "disabled",
776
+ "type": {
777
+ "text": "boolean"
778
+ },
779
+ "default": "false"
780
+ },
781
+ {
782
+ "name": "readonly",
783
+ "type": {
784
+ "text": "boolean"
785
+ },
786
+ "default": "false"
787
+ }
788
+ ],
789
+ "events": [
790
+ {
791
+ "name": "input",
792
+ "description": "Every provisional change (incl. range hover-preview)"
793
+ },
794
+ {
795
+ "name": "change",
796
+ "description": "Committed change: single click | second range endpoint | clear"
797
+ },
798
+ {
799
+ "name": "navigate",
800
+ "description": "Dominant in-view month changed while scrolling"
801
+ }
802
+ ],
803
+ "cssParts": [
804
+ {
805
+ "name": "scroll",
806
+ "description": "The scrollable container"
807
+ },
808
+ {
809
+ "name": "month-label",
810
+ "description": "Sticky month/year label"
811
+ },
812
+ {
813
+ "name": "weekday",
814
+ "description": "Weekday header cell"
815
+ },
816
+ {
817
+ "name": "grid",
818
+ "description": "Day grid for a month"
819
+ },
820
+ {
821
+ "name": "day",
822
+ "description": "Individual day cell"
823
+ },
824
+ {
825
+ "name": "day-selected",
826
+ "description": "A selected day (single mode, or both endpoints)"
827
+ },
828
+ {
829
+ "name": "day-range-start",
830
+ "description": "Range start day"
831
+ },
832
+ {
833
+ "name": "day-range-end",
834
+ "description": "Range end day"
835
+ },
836
+ {
837
+ "name": "day-in-range",
838
+ "description": "Day inside the selected range (exclusive of endpoints)"
839
+ },
840
+ {
841
+ "name": "day-preview",
842
+ "description": "Day inside the hover-preview range"
843
+ },
844
+ {
845
+ "name": "day-today",
846
+ "description": "Today's date"
847
+ },
848
+ {
849
+ "name": "day-disabled",
850
+ "description": "Disabled (out-of-bounds) day"
851
+ }
852
+ ]
853
+ }
854
+ ]
855
+ },
699
856
  {
700
857
  "kind": "javascript-module",
701
858
  "path": "card/actions.ts",
@@ -1020,7 +1177,7 @@
1020
1177
  "kind": "class",
1021
1178
  "name": "SchmancyDateRangeInline",
1022
1179
  "tagName": "schmancy-date-range-inline",
1023
- "description": "Smart inline date range picker that handles all the heavy lifting.\r Auto-corrects invalid ranges, provides smart defaults, and validates dates.",
1180
+ "description": "Smart inline date range picker that handles all the heavy lifting. Auto-corrects invalid ranges, provides smart defaults, and validates dates.",
1024
1181
  "attributes": [
1025
1182
  {
1026
1183
  "name": "type",
@@ -1426,11 +1583,6 @@
1426
1583
  "surface",
1427
1584
  "outlined",
1428
1585
  "info",
1429
- "solid",
1430
- "subtle",
1431
- "glass",
1432
- "luminous",
1433
- "transparent",
1434
1586
  "surfaceDim",
1435
1587
  "surfaceBright",
1436
1588
  "containerLowest",
@@ -1438,9 +1590,9 @@
1438
1590
  "container",
1439
1591
  "containerHigh",
1440
1592
  "containerHighest",
1441
- "glassOforim"
1593
+ "transparent"
1442
1594
  ],
1443
- "default": "'solid'"
1595
+ "default": "'containerLowest'"
1444
1596
  }
1445
1597
  ]
1446
1598
  }
@@ -1860,11 +2012,6 @@
1860
2012
  "surface",
1861
2013
  "outlined",
1862
2014
  "info",
1863
- "solid",
1864
- "subtle",
1865
- "glass",
1866
- "luminous",
1867
- "transparent",
1868
2015
  "surfaceDim",
1869
2016
  "surfaceBright",
1870
2017
  "containerLowest",
@@ -1872,7 +2019,7 @@
1872
2019
  "container",
1873
2020
  "containerHigh",
1874
2021
  "containerHighest",
1875
- "glassOforim"
2022
+ "transparent"
1876
2023
  ]
1877
2024
  },
1878
2025
  {
@@ -1943,11 +2090,6 @@
1943
2090
  "surface",
1944
2091
  "outlined",
1945
2092
  "info",
1946
- "solid",
1947
- "subtle",
1948
- "glass",
1949
- "luminous",
1950
- "transparent",
1951
2093
  "surfaceDim",
1952
2094
  "surfaceBright",
1953
2095
  "containerLowest",
@@ -1955,7 +2097,7 @@
1955
2097
  "container",
1956
2098
  "containerHigh",
1957
2099
  "containerHighest",
1958
- "glassOforim"
2100
+ "transparent"
1959
2101
  ],
1960
2102
  "description": "Defines the type or color of the surface used by the component. This value is provided to descendant components via context."
1961
2103
  },
@@ -3285,11 +3427,6 @@
3285
3427
  "surface",
3286
3428
  "outlined",
3287
3429
  "info",
3288
- "solid",
3289
- "subtle",
3290
- "glass",
3291
- "luminous",
3292
- "transparent",
3293
3430
  "surfaceDim",
3294
3431
  "surfaceBright",
3295
3432
  "containerLowest",
@@ -3297,9 +3434,9 @@
3297
3434
  "container",
3298
3435
  "containerHigh",
3299
3436
  "containerHighest",
3300
- "glassOforim"
3437
+ "transparent"
3301
3438
  ],
3302
- "default": "'subtle'",
3439
+ "default": "'containerLow'",
3303
3440
  "description": "Specifies the surface type for styling. Provided to descendant components via context."
3304
3441
  }
3305
3442
  ],
@@ -4382,7 +4519,7 @@
4382
4519
  "kind": "class",
4383
4520
  "name": "SchmancyDateRangeDialog",
4384
4521
  "tagName": "schmancy-date-range-dialog",
4385
- "description": "Dialog content component for date range selection Redesigned with chip-based horizontal flow layout: - Quick Select: Today, Yesterday, This Week, This Month - Days: Last 7/14/30/60/90 Days - Periods: Last Week, Last Month, Last Quarter, Last Year - Year to Date: This Week, This Month, This Quarter, This Year, YTD - Custom Range: Manual date inputs at the bottom",
4522
+ "description": "Picker panel for `<schmancy-date-range>`. Layout: sticky chip quick-rail continuous-scroll calendar secondary typed path. Emits composed events that `<schmancy-date-range>` bridges into its own `input`/`change` events.",
4386
4523
  "attributes": [
4387
4524
  {
4388
4525
  "name": "type",
@@ -4396,45 +4533,59 @@
4396
4533
  "default": "'date'"
4397
4534
  },
4398
4535
  {
4399
- "name": "dateFrom",
4536
+ "name": "start",
4400
4537
  "type": {
4401
- "text": "{ label: string; value: string; }"
4538
+ "text": "string"
4402
4539
  },
4403
- "default": "{ label: 'From', value: '' }"
4540
+ "default": "null"
4404
4541
  },
4405
4542
  {
4406
- "name": "dateTo",
4543
+ "name": "end",
4407
4544
  "type": {
4408
- "text": "{ label: string; value: string; }"
4545
+ "text": "string"
4409
4546
  },
4410
- "default": "{ label: 'To', value: '' }"
4547
+ "default": "null"
4411
4548
  },
4412
4549
  {
4413
- "name": "minDate",
4550
+ "name": "min",
4414
4551
  "type": {
4415
4552
  "text": "string"
4416
4553
  }
4417
4554
  },
4418
4555
  {
4419
- "name": "maxDate",
4556
+ "name": "max",
4420
4557
  "type": {
4421
4558
  "text": "string"
4422
4559
  }
4423
4560
  },
4424
4561
  {
4425
- "name": "activePreset",
4562
+ "name": "preset",
4426
4563
  "type": {
4427
4564
  "text": "string"
4428
4565
  },
4429
4566
  "default": "null"
4430
4567
  },
4431
4568
  {
4432
- "name": "presetCategories",
4569
+ "name": "presets",
4433
4570
  "type": {
4434
- "text": "PresetCategory[]"
4571
+ "text": "DateRangeDialogPreset[]"
4435
4572
  },
4436
4573
  "default": "[]"
4437
4574
  }
4575
+ ],
4576
+ "events": [
4577
+ {
4578
+ "name": "calendar-input",
4579
+ "description": "Provisional sweep from the calendar { start, end }"
4580
+ },
4581
+ {
4582
+ "name": "calendar-change",
4583
+ "description": "Committed endpoint from the calendar { start, end }"
4584
+ },
4585
+ {
4586
+ "name": "preset-select",
4587
+ "description": "A chip was clicked { id, label, start, end }"
4588
+ }
4438
4589
  ]
4439
4590
  }
4440
4591
  ]
@@ -4447,7 +4598,7 @@
4447
4598
  "kind": "class",
4448
4599
  "name": "SchmancyDateRange",
4449
4600
  "tagName": "schmancy-date-range",
4450
- "description": "A date range selector that supports presets and manual date input.",
4601
+ "description": "A date range selector composing `<schmancy-calendar mode=\"range\">` with a sticky preset chip quick-rail and a secondary typed-entry path. Public API: flat ISO `start`/`end`, `preset` read-back, `presets` array. FormData: `${name}.start` / `${name}.end` (empty endpoint omitted).",
4451
4602
  "attributes": [
4452
4603
  {
4453
4604
  "name": "type",
@@ -4461,40 +4612,42 @@
4461
4612
  "default": "'date'"
4462
4613
  },
4463
4614
  {
4464
- "name": "dateFrom",
4615
+ "name": "start",
4465
4616
  "type": {
4466
- "text": "{ label: string; value: string; }"
4617
+ "text": "string"
4467
4618
  },
4468
- "default": "{ label: 'From', value: '' }"
4619
+ "default": "null"
4469
4620
  },
4470
4621
  {
4471
- "name": "dateTo",
4622
+ "name": "end",
4472
4623
  "type": {
4473
- "text": "{ label: string; value: string; }"
4624
+ "text": "string"
4474
4625
  },
4475
- "default": "{ label: 'To', value: '' }"
4626
+ "default": "null"
4476
4627
  },
4477
4628
  {
4478
- "name": "minDate",
4629
+ "name": "presets",
4479
4630
  "type": {
4480
- "text": "string"
4481
- }
4631
+ "text": "DateRangeDialogPreset[]"
4632
+ },
4633
+ "default": "this.defaultPresetsRef"
4482
4634
  },
4483
4635
  {
4484
- "name": "maxDate",
4636
+ "name": "preset",
4485
4637
  "type": {
4486
4638
  "text": "string"
4487
- }
4639
+ },
4640
+ "default": "null",
4641
+ "description": "Selected preset id; null = custom range. Reflects to attribute."
4488
4642
  },
4489
4643
  {
4490
- "name": "customPresets",
4644
+ "name": "min",
4491
4645
  "type": {
4492
- "text": "{ label: string; dateFrom: string; dateTo: string; }[]"
4493
- },
4494
- "default": "[]"
4646
+ "text": "string"
4647
+ }
4495
4648
  },
4496
4649
  {
4497
- "name": "format",
4650
+ "name": "max",
4498
4651
  "type": {
4499
4652
  "text": "string"
4500
4653
  }
@@ -4525,13 +4678,17 @@
4525
4678
  "text": "boolean"
4526
4679
  },
4527
4680
  "default": "false",
4528
- "description": "When true, collapses to just an icon button on mobile screens"
4681
+ "description": "Collapses to an icon-only button on narrow viewports."
4529
4682
  }
4530
4683
  ],
4531
4684
  "events": [
4685
+ {
4686
+ "name": "input",
4687
+ "description": "Provisional sweep preview { start, end }"
4688
+ },
4532
4689
  {
4533
4690
  "name": "change",
4534
- "description": "Fired when the date range changes with dateFrom and dateTo values"
4691
+ "description": "Committed range change { start, end, preset }"
4535
4692
  }
4536
4693
  ]
4537
4694
  }
@@ -1 +1 @@
1
- {"version":3,"file":"animation-CCOIW4wJ.cjs","names":[],"sources":["../src/utils/animation.ts"],"sourcesContent":["/**\n * Blackbird Animation System\n *\n * A comprehensive animation system using spring physics for natural,\n * organic motion. Named after the smooth, arcing flight patterns of birds.\n *\n * Features:\n * - Spring physics via CSS linear() (88% browser support)\n * - Cubic-bezier fallbacks for older browsers\n * - Typed interfaces for Web Animations API\n * - CSS custom properties for Tailwind integration\n * - Multiple presets: smooth, snappy, bouncy\n *\n * @see https://www.joshwcomeau.com/animation/linear-timing-function/\n * @see https://developer.chrome.com/docs/css-ui/css-linear-easing-function\n */\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/** Spring configuration parameters */\nexport interface SpringConfig {\n\t/** Spring stiffness (higher = faster) */\n\tstiffness: number\n\t/** Damping ratio (higher = less bounce) */\n\tdamping: number\n\t/** Mass (higher = slower) */\n\tmass: number\n}\n\n/** Animation preset with all timing values */\nexport interface AnimationPreset {\n\t/** Human-readable name */\n\tname: string\n\t/** Duration in milliseconds */\n\tduration: number\n\t/** CSS linear() easing function (modern browsers) */\n\teasing: string\n\t/** Cubic-bezier fallback (all browsers) */\n\teasingFallback: string\n\t/** Spring configuration used to generate this preset */\n\tspring: SpringConfig\n}\n\n/** Keyframe options for Web Animations API */\nexport interface BlackbirdKeyframes {\n\t/** Starting state */\n\tfrom: Keyframe\n\t/** Ending state */\n\tto: Keyframe\n}\n\n/** Complete animation configuration */\nexport interface BlackbirdAnimation {\n\tkeyframes: Keyframe[]\n\toptions: KeyframeAnimationOptions\n}\n\n// =============================================================================\n// SPRING PRESETS\n// =============================================================================\n\n/**\n * Smooth preset - Apple-style, subtle overshoot\n * Best for: Details, accordions, content reveals\n */\nexport const SPRING_SMOOTH: AnimationPreset = {\n\tname: 'smooth',\n\tduration: 500,\n\teasing: `linear(\n\t\t0, 0.006, 0.025 2.8%, 0.101 6.1%, 0.539 18.9%, 0.721 25.3%, 0.849 31.5%,\n\t\t0.937 38.1%, 0.968 41.8%, 0.991 45.7%, 1.006 50%, 1.015 54.8%,\n\t\t1.017 63.3%, 1.001\n\t)`,\n\teasingFallback: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\n\tspring: { stiffness: 100, damping: 15, mass: 1 },\n}\n\n/**\n * Snappy preset - Quick with minimal overshoot\n * Best for: Buttons, toggles, quick interactions\n */\nexport const SPRING_SNAPPY: AnimationPreset = {\n\tname: 'snappy',\n\tduration: 300,\n\teasing: `linear(\n\t\t0, 0.009, 0.035 2.1%, 0.141 4.4%, 0.723 15.5%, 0.938 23.8%,\n\t\t1.017 30.2%, 1.041 37.3%, 1.026 52.4%, 1.001\n\t)`,\n\teasingFallback: 'cubic-bezier(0.22, 1.25, 0.36, 1)',\n\tspring: { stiffness: 200, damping: 20, mass: 1 },\n}\n\n/**\n * Bouncy preset - Playful with noticeable overshoot\n * Best for: Notifications, celebrations, attention-grabbing\n */\nexport const SPRING_BOUNCY: AnimationPreset = {\n\tname: 'bouncy',\n\tduration: 600,\n\teasing: `linear(\n\t\t0, 0.004, 0.016 2.3%, 0.065 4.8%, 0.258 9.9%, 0.489 15%,\n\t\t0.683 20.1%, 0.847 25.4%, 0.963 30.6%, 1.039 36%, 1.086 41.8%,\n\t\t1.107 48.1%, 1.101 55.1%, 1.064 73.1%, 1.026 85.2%, 1.001\n\t)`,\n\teasingFallback: 'cubic-bezier(0.34, 1.8, 0.64, 1)',\n\tspring: { stiffness: 100, damping: 10, mass: 1 },\n}\n\n/**\n * Gentle preset - Slow, smooth, no overshoot\n * Best for: Page transitions, modal backgrounds, subtle reveals\n */\nexport const SPRING_GENTLE: AnimationPreset = {\n\tname: 'gentle',\n\tduration: 700,\n\teasing: `linear(\n\t\t0, 0.002, 0.009 2.6%, 0.036 5.3%, 0.153 11.3%, 0.352 18.5%,\n\t\t0.554 25.4%, 0.733 32.6%, 0.865 40.2%, 0.945 48.5%,\n\t\t0.984 58.2%, 0.997 70.5%, 1\n\t)`,\n\teasingFallback: 'cubic-bezier(0.4, 0, 0.2, 1)',\n\tspring: { stiffness: 80, damping: 25, mass: 1.2 },\n}\n\n// =============================================================================\n// LEGACY EXPORTS (backwards compatibility)\n// =============================================================================\n\n/** @deprecated Use SPRING_SMOOTH.easingFallback instead */\nexport const BLACKBIRD_EASING = SPRING_SMOOTH.easingFallback\n\n/** Standard easing for smooth transitions */\nexport const EASE_OUT = 'ease-out'\nexport const EASE_IN = 'ease-in'\n\n/** Standard durations */\nexport const DURATION_ENTER = SPRING_SNAPPY.duration\nexport const DURATION_EXIT = 150\nexport const DURATION_BACKDROP = 200\n\n// =============================================================================\n// CSS CUSTOM PROPERTIES\n// =============================================================================\n\n/**\n * CSS custom properties for use in stylesheets.\n * These can be injected into :root or a component's styles.\n *\n * @example\n * ```css\n * :root {\n * ${ANIMATION_CSS_VARS}\n * }\n *\n * .element {\n * transition: transform var(--blackbird-duration-smooth) var(--blackbird-easing-smooth);\n * }\n * ```\n */\nexport const ANIMATION_CSS_VARS = `\n\t/* Blackbird Animation System - Spring Physics */\n\n\t/* Smooth preset (Apple-style) */\n\t--blackbird-duration-smooth: ${SPRING_SMOOTH.duration}ms;\n\t--blackbird-easing-smooth: ${SPRING_SMOOTH.easingFallback};\n\t--blackbird-easing-smooth-spring: ${SPRING_SMOOTH.easing};\n\n\t/* Snappy preset (quick interactions) */\n\t--blackbird-duration-snappy: ${SPRING_SNAPPY.duration}ms;\n\t--blackbird-easing-snappy: ${SPRING_SNAPPY.easingFallback};\n\t--blackbird-easing-snappy-spring: ${SPRING_SNAPPY.easing};\n\n\t/* Bouncy preset (playful) */\n\t--blackbird-duration-bouncy: ${SPRING_BOUNCY.duration}ms;\n\t--blackbird-easing-bouncy: ${SPRING_BOUNCY.easingFallback};\n\t--blackbird-easing-bouncy-spring: ${SPRING_BOUNCY.easing};\n\n\t/* Gentle preset (subtle) */\n\t--blackbird-duration-gentle: ${SPRING_GENTLE.duration}ms;\n\t--blackbird-easing-gentle: ${SPRING_GENTLE.easingFallback};\n\t--blackbird-easing-gentle-spring: ${SPRING_GENTLE.easing};\n`\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\n\n/**\n * Get the appropriate easing function based on browser support.\n * Uses linear() if supported, falls back to cubic-bezier.\n */\nexport function getEasing(preset: AnimationPreset): string {\n\t// Feature detect linear() support\n\tif (typeof CSS !== 'undefined' && CSS.supports?.('animation-timing-function', 'linear(0, 1)')) {\n\t\treturn preset.easing\n\t}\n\treturn preset.easingFallback\n}\n\n/**\n * Check if the browser supports reduced motion preference.\n */\nexport function prefersReducedMotion(): boolean {\n\treturn typeof window !== 'undefined' && window.matchMedia('(prefers-reduced-motion: reduce)').matches\n}\n\n/**\n * Create a Web Animations API animation configuration.\n *\n * @example\n * ```ts\n * const anim = createAnimation(SPRING_SMOOTH, {\n * from: { opacity: 0, transform: 'translateY(-16px)' },\n * to: { opacity: 1, transform: 'translateY(0)' }\n * })\n *\n * element.animate(anim.keyframes, anim.options)\n * ```\n */\nexport function createAnimation(preset: AnimationPreset, keyframes: BlackbirdKeyframes): BlackbirdAnimation {\n\t// Respect reduced motion preference\n\tif (prefersReducedMotion()) {\n\t\treturn {\n\t\t\tkeyframes: [keyframes.to],\n\t\t\toptions: { duration: 0, fill: 'forwards' },\n\t\t}\n\t}\n\n\treturn {\n\t\tkeyframes: [keyframes.from, keyframes.to],\n\t\toptions: {\n\t\t\tduration: preset.duration,\n\t\t\teasing: preset.easingFallback, // Web Animations API doesn't support linear() well\n\t\t\tfill: 'forwards',\n\t\t},\n\t}\n}\n\n/**\n * Create a reveal animation (fade in + slide up).\n * Common pattern for content appearing.\n */\nexport function createRevealAnimation(\n\tpreset: AnimationPreset = SPRING_SMOOTH,\n\tdistance = 16,\n): BlackbirdAnimation {\n\treturn createAnimation(preset, {\n\t\tfrom: { opacity: 0, transform: `translateY(-${distance}px) scale(0.96)` },\n\t\tto: { opacity: 1, transform: 'translateY(0) scale(1)' },\n\t})\n}\n\n/**\n * Create a dismiss animation (fade out + slide up).\n * Common pattern for content disappearing.\n */\nexport function createDismissAnimation(\n\tpreset: AnimationPreset = SPRING_SMOOTH,\n\tdistance = 12,\n): BlackbirdAnimation {\n\tconst anim = createAnimation(preset, {\n\t\tfrom: { opacity: 1, transform: 'translateY(0) scale(1)' },\n\t\tto: { opacity: 0, transform: `translateY(-${distance}px) scale(0.97)` },\n\t})\n\n\t// Dismiss is slightly faster\n\tif (anim.options.duration) {\n\t\tanim.options.duration = (anim.options.duration as number) * 0.7\n\t}\n\n\treturn anim\n}\n\n/**\n * Create a scale animation (pop in/out).\n * Common pattern for buttons and interactive elements.\n */\nexport function createScaleAnimation(\n\tpreset: AnimationPreset = SPRING_SNAPPY,\n\tfromScale = 0.9,\n\ttoScale = 1,\n): BlackbirdAnimation {\n\treturn createAnimation(preset, {\n\t\tfrom: { opacity: fromScale < toScale ? 0 : 1, transform: `scale(${fromScale})` },\n\t\tto: { opacity: fromScale < toScale ? 1 : 0, transform: `scale(${toScale})` },\n\t})\n}\n\n// =============================================================================\n// TAILWIND UTILITIES (for use in tailwind.config.js)\n// =============================================================================\n\n/**\n * Tailwind CSS animation utilities configuration.\n * Import this into your tailwind.config.js to add Blackbird animations.\n *\n * @example\n * ```js\n * // tailwind.config.js\n * const { tailwindAnimations } = require('@mhmo91/schmancy/utils/animation')\n *\n * module.exports = {\n * theme: {\n * extend: {\n * ...tailwindAnimations\n * }\n * }\n * }\n * ```\n */\nexport const tailwindAnimations = {\n\ttransitionTimingFunction: {\n\t\t'spring-smooth': SPRING_SMOOTH.easingFallback,\n\t\t'spring-snappy': SPRING_SNAPPY.easingFallback,\n\t\t'spring-bouncy': SPRING_BOUNCY.easingFallback,\n\t\t'spring-gentle': SPRING_GENTLE.easingFallback,\n\t},\n\ttransitionDuration: {\n\t\t'spring-smooth': `${SPRING_SMOOTH.duration}ms`,\n\t\t'spring-snappy': `${SPRING_SNAPPY.duration}ms`,\n\t\t'spring-bouncy': `${SPRING_BOUNCY.duration}ms`,\n\t\t'spring-gentle': `${SPRING_GENTLE.duration}ms`,\n\t},\n\tkeyframes: {\n\t\t'blackbird-reveal': {\n\t\t\t'0%': { opacity: '0', transform: 'translateY(-16px) scale(0.96)' },\n\t\t\t'100%': { opacity: '1', transform: 'translateY(0) scale(1)' },\n\t\t},\n\t\t'blackbird-dismiss': {\n\t\t\t'0%': { opacity: '1', transform: 'translateY(0) scale(1)' },\n\t\t\t'100%': { opacity: '0', transform: 'translateY(-12px) scale(0.97)' },\n\t\t},\n\t\t'blackbird-scale-in': {\n\t\t\t'0%': { opacity: '0', transform: 'scale(0.9)' },\n\t\t\t'100%': { opacity: '1', transform: 'scale(1)' },\n\t\t},\n\t\t'blackbird-scale-out': {\n\t\t\t'0%': { opacity: '1', transform: 'scale(1)' },\n\t\t\t'100%': { opacity: '0', transform: 'scale(0.9)' },\n\t\t},\n\t\t'blackbird-slide-up': {\n\t\t\t'0%': { transform: 'translateY(100%)' },\n\t\t\t'100%': { transform: 'translateY(0)' },\n\t\t},\n\t\t'blackbird-slide-down': {\n\t\t\t'0%': { transform: 'translateY(0)' },\n\t\t\t'100%': { transform: 'translateY(100%)' },\n\t\t},\n\t},\n\tanimation: {\n\t\t'blackbird-reveal': `blackbird-reveal ${SPRING_SMOOTH.duration}ms ${SPRING_SMOOTH.easingFallback} forwards`,\n\t\t'blackbird-dismiss': `blackbird-dismiss ${SPRING_SMOOTH.duration * 0.7}ms ${SPRING_SMOOTH.easingFallback} forwards`,\n\t\t'blackbird-scale-in': `blackbird-scale-in ${SPRING_SNAPPY.duration}ms ${SPRING_SNAPPY.easingFallback} forwards`,\n\t\t'blackbird-scale-out': `blackbird-scale-out ${SPRING_SNAPPY.duration * 0.7}ms ${SPRING_SNAPPY.easingFallback} forwards`,\n\t\t'blackbird-slide-up': `blackbird-slide-up ${SPRING_SMOOTH.duration}ms ${SPRING_SMOOTH.easingFallback} forwards`,\n\t\t'blackbird-slide-down': `blackbird-slide-down ${SPRING_SMOOTH.duration * 0.7}ms ${SPRING_SMOOTH.easingFallback} forwards`,\n\t},\n}\n\n// =============================================================================\n// CSS-IN-JS UTILITIES (for Lit components)\n// =============================================================================\n\n/**\n * CSS string with spring-based grid animation for details/accordions.\n * Use with grid-template-rows for smooth height animation.\n *\n * @example\n * ```ts\n * import { css } from 'lit'\n * import { GRID_ANIMATION_CSS } from '@mhmo91/schmancy'\n *\n * static styles = css`\n * ${GRID_ANIMATION_CSS}\n *\n * .content {\n * display: grid;\n * grid-template-rows: 0fr;\n * }\n * .content[data-open='true'] {\n * grid-template-rows: 1fr;\n * }\n * `\n * ```\n */\nexport const GRID_ANIMATION_CSS = `\n\t/* Grid-based height animation with spring physics */\n\t.blackbird-grid {\n\t\tdisplay: grid;\n\t\tgrid-template-rows: 0fr;\n\t\toverflow: hidden;\n\t\ttransition: grid-template-rows ${SPRING_SMOOTH.duration}ms ${SPRING_SMOOTH.easingFallback};\n\t}\n\n\t/* Use spring easing when linear() is supported */\n\t@supports (animation-timing-function: linear(0, 1)) {\n\t\t.blackbird-grid {\n\t\t\ttransition: grid-template-rows ${SPRING_SMOOTH.duration}ms ${SPRING_SMOOTH.easing};\n\t\t}\n\t}\n\n\t.blackbird-grid[data-open='true'],\n\t.blackbird-grid.open {\n\t\tgrid-template-rows: 1fr;\n\t}\n\n\t.blackbird-grid > * {\n\t\toverflow: hidden;\n\t}\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\t.blackbird-grid {\n\t\t\ttransition: none;\n\t\t}\n\t}\n`\n"],"mappings":"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"}
1
+ {"version":3,"file":"animation-CCOIW4wJ.cjs","names":[],"sources":["../src/utils/animation.ts"],"sourcesContent":["/**\n * Blackbird Animation System\n *\n * A comprehensive animation system using spring physics for natural,\n * organic motion. Named after the smooth, arcing flight patterns of birds.\n *\n * Features:\n * - Spring physics via CSS linear() (88% browser support)\n * - Cubic-bezier fallbacks for older browsers\n * - Typed interfaces for Web Animations API\n * - CSS custom properties for Tailwind integration\n * - Multiple presets: smooth, snappy, bouncy\n *\n * @see https://www.joshwcomeau.com/animation/linear-timing-function/\n * @see https://developer.chrome.com/docs/css-ui/css-linear-easing-function\n */\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/** Spring configuration parameters */\nexport interface SpringConfig {\n\t/** Spring stiffness (higher = faster) */\n\tstiffness: number\n\t/** Damping ratio (higher = less bounce) */\n\tdamping: number\n\t/** Mass (higher = slower) */\n\tmass: number\n}\n\n/** Animation preset with all timing values */\nexport interface AnimationPreset {\n\t/** Human-readable name */\n\tname: string\n\t/** Duration in milliseconds */\n\tduration: number\n\t/** CSS linear() easing function (modern browsers) */\n\teasing: string\n\t/** Cubic-bezier fallback (all browsers) */\n\teasingFallback: string\n\t/** Spring configuration used to generate this preset */\n\tspring: SpringConfig\n}\n\n/** Keyframe options for Web Animations API */\nexport interface BlackbirdKeyframes {\n\t/** Starting state */\n\tfrom: Keyframe\n\t/** Ending state */\n\tto: Keyframe\n}\n\n/** Complete animation configuration */\nexport interface BlackbirdAnimation {\n\tkeyframes: Keyframe[]\n\toptions: KeyframeAnimationOptions\n}\n\n// =============================================================================\n// SPRING PRESETS\n// =============================================================================\n\n/**\n * Smooth preset - Apple-style, subtle overshoot\n * Best for: Details, accordions, content reveals\n */\nexport const SPRING_SMOOTH: AnimationPreset = {\n\tname: 'smooth',\n\tduration: 500,\n\teasing: `linear(\n\t\t0, 0.006, 0.025 2.8%, 0.101 6.1%, 0.539 18.9%, 0.721 25.3%, 0.849 31.5%,\n\t\t0.937 38.1%, 0.968 41.8%, 0.991 45.7%, 1.006 50%, 1.015 54.8%,\n\t\t1.017 63.3%, 1.001\n\t)`,\n\teasingFallback: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\n\tspring: { stiffness: 100, damping: 15, mass: 1 },\n}\n\n/**\n * Snappy preset - Quick with minimal overshoot\n * Best for: Buttons, toggles, quick interactions\n */\nexport const SPRING_SNAPPY: AnimationPreset = {\n\tname: 'snappy',\n\tduration: 300,\n\teasing: `linear(\n\t\t0, 0.009, 0.035 2.1%, 0.141 4.4%, 0.723 15.5%, 0.938 23.8%,\n\t\t1.017 30.2%, 1.041 37.3%, 1.026 52.4%, 1.001\n\t)`,\n\teasingFallback: 'cubic-bezier(0.22, 1.25, 0.36, 1)',\n\tspring: { stiffness: 200, damping: 20, mass: 1 },\n}\n\n/**\n * Bouncy preset - Playful with noticeable overshoot\n * Best for: Notifications, celebrations, attention-grabbing\n */\nexport const SPRING_BOUNCY: AnimationPreset = {\n\tname: 'bouncy',\n\tduration: 600,\n\teasing: `linear(\n\t\t0, 0.004, 0.016 2.3%, 0.065 4.8%, 0.258 9.9%, 0.489 15%,\n\t\t0.683 20.1%, 0.847 25.4%, 0.963 30.6%, 1.039 36%, 1.086 41.8%,\n\t\t1.107 48.1%, 1.101 55.1%, 1.064 73.1%, 1.026 85.2%, 1.001\n\t)`,\n\teasingFallback: 'cubic-bezier(0.34, 1.8, 0.64, 1)',\n\tspring: { stiffness: 100, damping: 10, mass: 1 },\n}\n\n/**\n * Gentle preset - Slow, smooth, no overshoot\n * Best for: Page transitions, modal backgrounds, subtle reveals\n */\nexport const SPRING_GENTLE: AnimationPreset = {\n\tname: 'gentle',\n\tduration: 700,\n\teasing: `linear(\n\t\t0, 0.002, 0.009 2.6%, 0.036 5.3%, 0.153 11.3%, 0.352 18.5%,\n\t\t0.554 25.4%, 0.733 32.6%, 0.865 40.2%, 0.945 48.5%,\n\t\t0.984 58.2%, 0.997 70.5%, 1\n\t)`,\n\teasingFallback: 'cubic-bezier(0.4, 0, 0.2, 1)',\n\tspring: { stiffness: 80, damping: 25, mass: 1.2 },\n}\n\n// =============================================================================\n// LEGACY EXPORTS (backwards compatibility)\n// =============================================================================\n\n/** @deprecated Use SPRING_SMOOTH.easingFallback instead */\nexport const BLACKBIRD_EASING = SPRING_SMOOTH.easingFallback\n\n/** Standard easing for smooth transitions */\nexport const EASE_OUT = 'ease-out'\nexport const EASE_IN = 'ease-in'\n\n/** Standard durations */\nexport const DURATION_ENTER = SPRING_SNAPPY.duration\nexport const DURATION_EXIT = 150\nexport const DURATION_BACKDROP = 200\n\n// =============================================================================\n// CSS CUSTOM PROPERTIES\n// =============================================================================\n\n/**\n * CSS custom properties for use in stylesheets.\n * These can be injected into :root or a component's styles.\n *\n * @example\n * ```css\n * :root {\n * ${ANIMATION_CSS_VARS}\n * }\n *\n * .element {\n * transition: transform var(--blackbird-duration-smooth) var(--blackbird-easing-smooth);\n * }\n * ```\n */\nexport const ANIMATION_CSS_VARS = `\n\t/* Blackbird Animation System - Spring Physics */\n\n\t/* Smooth preset (Apple-style) */\n\t--blackbird-duration-smooth: ${SPRING_SMOOTH.duration}ms;\n\t--blackbird-easing-smooth: ${SPRING_SMOOTH.easingFallback};\n\t--blackbird-easing-smooth-spring: ${SPRING_SMOOTH.easing};\n\n\t/* Snappy preset (quick interactions) */\n\t--blackbird-duration-snappy: ${SPRING_SNAPPY.duration}ms;\n\t--blackbird-easing-snappy: ${SPRING_SNAPPY.easingFallback};\n\t--blackbird-easing-snappy-spring: ${SPRING_SNAPPY.easing};\n\n\t/* Bouncy preset (playful) */\n\t--blackbird-duration-bouncy: ${SPRING_BOUNCY.duration}ms;\n\t--blackbird-easing-bouncy: ${SPRING_BOUNCY.easingFallback};\n\t--blackbird-easing-bouncy-spring: ${SPRING_BOUNCY.easing};\n\n\t/* Gentle preset (subtle) */\n\t--blackbird-duration-gentle: ${SPRING_GENTLE.duration}ms;\n\t--blackbird-easing-gentle: ${SPRING_GENTLE.easingFallback};\n\t--blackbird-easing-gentle-spring: ${SPRING_GENTLE.easing};\n`\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\n\n/**\n * Get the appropriate easing function based on browser support.\n * Uses linear() if supported, falls back to cubic-bezier.\n */\nexport function getEasing(preset: AnimationPreset): string {\n\t// Feature detect linear() support\n\tif (typeof CSS !== 'undefined' && CSS.supports?.('animation-timing-function', 'linear(0, 1)')) {\n\t\treturn preset.easing\n\t}\n\treturn preset.easingFallback\n}\n\n/**\n * Check if the browser supports reduced motion preference.\n */\nexport function prefersReducedMotion(): boolean {\n\treturn typeof window !== 'undefined' && window.matchMedia('(prefers-reduced-motion: reduce)').matches\n}\n\n/**\n * Create a Web Animations API animation configuration.\n *\n * @example\n * ```ts\n * const anim = createAnimation(SPRING_SMOOTH, {\n * from: { opacity: 0, transform: 'translateY(-16px)' },\n * to: { opacity: 1, transform: 'translateY(0)' }\n * })\n *\n * element.animate(anim.keyframes, anim.options)\n * ```\n */\nexport function createAnimation(preset: AnimationPreset, keyframes: BlackbirdKeyframes): BlackbirdAnimation {\n\t// Respect reduced motion preference\n\tif (prefersReducedMotion()) {\n\t\treturn {\n\t\t\tkeyframes: [keyframes.to],\n\t\t\toptions: { duration: 0, fill: 'forwards' },\n\t\t}\n\t}\n\n\treturn {\n\t\tkeyframes: [keyframes.from, keyframes.to],\n\t\toptions: {\n\t\t\tduration: preset.duration,\n\t\t\teasing: preset.easingFallback, // Web Animations API doesn't support linear() well\n\t\t\tfill: 'forwards',\n\t\t},\n\t}\n}\n\n/**\n * Create a reveal animation (fade in + slide up).\n * Common pattern for content appearing.\n */\nexport function createRevealAnimation(preset: AnimationPreset = SPRING_SMOOTH, distance = 16): BlackbirdAnimation {\n\treturn createAnimation(preset, {\n\t\tfrom: { opacity: 0, transform: `translateY(-${distance}px) scale(0.96)` },\n\t\tto: { opacity: 1, transform: 'translateY(0) scale(1)' },\n\t})\n}\n\n/**\n * Create a dismiss animation (fade out + slide up).\n * Common pattern for content disappearing.\n */\nexport function createDismissAnimation(preset: AnimationPreset = SPRING_SMOOTH, distance = 12): BlackbirdAnimation {\n\tconst anim = createAnimation(preset, {\n\t\tfrom: { opacity: 1, transform: 'translateY(0) scale(1)' },\n\t\tto: { opacity: 0, transform: `translateY(-${distance}px) scale(0.97)` },\n\t})\n\n\t// Dismiss is slightly faster\n\tif (anim.options.duration) {\n\t\tanim.options.duration = (anim.options.duration as number) * 0.7\n\t}\n\n\treturn anim\n}\n\n/**\n * Create a scale animation (pop in/out).\n * Common pattern for buttons and interactive elements.\n */\nexport function createScaleAnimation(\n\tpreset: AnimationPreset = SPRING_SNAPPY,\n\tfromScale = 0.9,\n\ttoScale = 1,\n): BlackbirdAnimation {\n\treturn createAnimation(preset, {\n\t\tfrom: { opacity: fromScale < toScale ? 0 : 1, transform: `scale(${fromScale})` },\n\t\tto: { opacity: fromScale < toScale ? 1 : 0, transform: `scale(${toScale})` },\n\t})\n}\n\n// =============================================================================\n// TAILWIND UTILITIES (for use in tailwind.config.js)\n// =============================================================================\n\n/**\n * Tailwind CSS animation utilities configuration.\n * Import this into your tailwind.config.js to add Blackbird animations.\n *\n * @example\n * ```js\n * // tailwind.config.js\n * const { tailwindAnimations } = require('@mhmo91/schmancy/utils/animation')\n *\n * module.exports = {\n * theme: {\n * extend: {\n * ...tailwindAnimations\n * }\n * }\n * }\n * ```\n */\nexport const tailwindAnimations = {\n\ttransitionTimingFunction: {\n\t\t'spring-smooth': SPRING_SMOOTH.easingFallback,\n\t\t'spring-snappy': SPRING_SNAPPY.easingFallback,\n\t\t'spring-bouncy': SPRING_BOUNCY.easingFallback,\n\t\t'spring-gentle': SPRING_GENTLE.easingFallback,\n\t},\n\ttransitionDuration: {\n\t\t'spring-smooth': `${SPRING_SMOOTH.duration}ms`,\n\t\t'spring-snappy': `${SPRING_SNAPPY.duration}ms`,\n\t\t'spring-bouncy': `${SPRING_BOUNCY.duration}ms`,\n\t\t'spring-gentle': `${SPRING_GENTLE.duration}ms`,\n\t},\n\tkeyframes: {\n\t\t'blackbird-reveal': {\n\t\t\t'0%': { opacity: '0', transform: 'translateY(-16px) scale(0.96)' },\n\t\t\t'100%': { opacity: '1', transform: 'translateY(0) scale(1)' },\n\t\t},\n\t\t'blackbird-dismiss': {\n\t\t\t'0%': { opacity: '1', transform: 'translateY(0) scale(1)' },\n\t\t\t'100%': { opacity: '0', transform: 'translateY(-12px) scale(0.97)' },\n\t\t},\n\t\t'blackbird-scale-in': {\n\t\t\t'0%': { opacity: '0', transform: 'scale(0.9)' },\n\t\t\t'100%': { opacity: '1', transform: 'scale(1)' },\n\t\t},\n\t\t'blackbird-scale-out': {\n\t\t\t'0%': { opacity: '1', transform: 'scale(1)' },\n\t\t\t'100%': { opacity: '0', transform: 'scale(0.9)' },\n\t\t},\n\t\t'blackbird-slide-up': {\n\t\t\t'0%': { transform: 'translateY(100%)' },\n\t\t\t'100%': { transform: 'translateY(0)' },\n\t\t},\n\t\t'blackbird-slide-down': {\n\t\t\t'0%': { transform: 'translateY(0)' },\n\t\t\t'100%': { transform: 'translateY(100%)' },\n\t\t},\n\t},\n\tanimation: {\n\t\t'blackbird-reveal': `blackbird-reveal ${SPRING_SMOOTH.duration}ms ${SPRING_SMOOTH.easingFallback} forwards`,\n\t\t'blackbird-dismiss': `blackbird-dismiss ${SPRING_SMOOTH.duration * 0.7}ms ${SPRING_SMOOTH.easingFallback} forwards`,\n\t\t'blackbird-scale-in': `blackbird-scale-in ${SPRING_SNAPPY.duration}ms ${SPRING_SNAPPY.easingFallback} forwards`,\n\t\t'blackbird-scale-out': `blackbird-scale-out ${SPRING_SNAPPY.duration * 0.7}ms ${SPRING_SNAPPY.easingFallback} forwards`,\n\t\t'blackbird-slide-up': `blackbird-slide-up ${SPRING_SMOOTH.duration}ms ${SPRING_SMOOTH.easingFallback} forwards`,\n\t\t'blackbird-slide-down': `blackbird-slide-down ${SPRING_SMOOTH.duration * 0.7}ms ${SPRING_SMOOTH.easingFallback} forwards`,\n\t},\n}\n\n// =============================================================================\n// CSS-IN-JS UTILITIES (for Lit components)\n// =============================================================================\n\n/**\n * CSS string with spring-based grid animation for details/accordions.\n * Use with grid-template-rows for smooth height animation.\n *\n * @example\n * ```ts\n * import { css } from 'lit'\n * import { GRID_ANIMATION_CSS } from '@mhmo91/schmancy'\n *\n * static styles = css`\n * ${GRID_ANIMATION_CSS}\n *\n * .content {\n * display: grid;\n * grid-template-rows: 0fr;\n * }\n * .content[data-open='true'] {\n * grid-template-rows: 1fr;\n * }\n * `\n * ```\n */\nexport const GRID_ANIMATION_CSS = `\n\t/* Grid-based height animation with spring physics */\n\t.blackbird-grid {\n\t\tdisplay: grid;\n\t\tgrid-template-rows: 0fr;\n\t\toverflow: hidden;\n\t\ttransition: grid-template-rows ${SPRING_SMOOTH.duration}ms ${SPRING_SMOOTH.easingFallback};\n\t}\n\n\t/* Use spring easing when linear() is supported */\n\t@supports (animation-timing-function: linear(0, 1)) {\n\t\t.blackbird-grid {\n\t\t\ttransition: grid-template-rows ${SPRING_SMOOTH.duration}ms ${SPRING_SMOOTH.easing};\n\t\t}\n\t}\n\n\t.blackbird-grid[data-open='true'],\n\t.blackbird-grid.open {\n\t\tgrid-template-rows: 1fr;\n\t}\n\n\t.blackbird-grid > * {\n\t\toverflow: hidden;\n\t}\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\t.blackbird-grid {\n\t\t\ttransition: none;\n\t\t}\n\t}\n`\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"animation-DCznELuT.js","names":[],"sources":["../src/utils/animation.ts"],"sourcesContent":["/**\n * Blackbird Animation System\n *\n * A comprehensive animation system using spring physics for natural,\n * organic motion. Named after the smooth, arcing flight patterns of birds.\n *\n * Features:\n * - Spring physics via CSS linear() (88% browser support)\n * - Cubic-bezier fallbacks for older browsers\n * - Typed interfaces for Web Animations API\n * - CSS custom properties for Tailwind integration\n * - Multiple presets: smooth, snappy, bouncy\n *\n * @see https://www.joshwcomeau.com/animation/linear-timing-function/\n * @see https://developer.chrome.com/docs/css-ui/css-linear-easing-function\n */\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/** Spring configuration parameters */\nexport interface SpringConfig {\n\t/** Spring stiffness (higher = faster) */\n\tstiffness: number\n\t/** Damping ratio (higher = less bounce) */\n\tdamping: number\n\t/** Mass (higher = slower) */\n\tmass: number\n}\n\n/** Animation preset with all timing values */\nexport interface AnimationPreset {\n\t/** Human-readable name */\n\tname: string\n\t/** Duration in milliseconds */\n\tduration: number\n\t/** CSS linear() easing function (modern browsers) */\n\teasing: string\n\t/** Cubic-bezier fallback (all browsers) */\n\teasingFallback: string\n\t/** Spring configuration used to generate this preset */\n\tspring: SpringConfig\n}\n\n/** Keyframe options for Web Animations API */\nexport interface BlackbirdKeyframes {\n\t/** Starting state */\n\tfrom: Keyframe\n\t/** Ending state */\n\tto: Keyframe\n}\n\n/** Complete animation configuration */\nexport interface BlackbirdAnimation {\n\tkeyframes: Keyframe[]\n\toptions: KeyframeAnimationOptions\n}\n\n// =============================================================================\n// SPRING PRESETS\n// =============================================================================\n\n/**\n * Smooth preset - Apple-style, subtle overshoot\n * Best for: Details, accordions, content reveals\n */\nexport const SPRING_SMOOTH: AnimationPreset = {\n\tname: 'smooth',\n\tduration: 500,\n\teasing: `linear(\n\t\t0, 0.006, 0.025 2.8%, 0.101 6.1%, 0.539 18.9%, 0.721 25.3%, 0.849 31.5%,\n\t\t0.937 38.1%, 0.968 41.8%, 0.991 45.7%, 1.006 50%, 1.015 54.8%,\n\t\t1.017 63.3%, 1.001\n\t)`,\n\teasingFallback: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\n\tspring: { stiffness: 100, damping: 15, mass: 1 },\n}\n\n/**\n * Snappy preset - Quick with minimal overshoot\n * Best for: Buttons, toggles, quick interactions\n */\nexport const SPRING_SNAPPY: AnimationPreset = {\n\tname: 'snappy',\n\tduration: 300,\n\teasing: `linear(\n\t\t0, 0.009, 0.035 2.1%, 0.141 4.4%, 0.723 15.5%, 0.938 23.8%,\n\t\t1.017 30.2%, 1.041 37.3%, 1.026 52.4%, 1.001\n\t)`,\n\teasingFallback: 'cubic-bezier(0.22, 1.25, 0.36, 1)',\n\tspring: { stiffness: 200, damping: 20, mass: 1 },\n}\n\n/**\n * Bouncy preset - Playful with noticeable overshoot\n * Best for: Notifications, celebrations, attention-grabbing\n */\nexport const SPRING_BOUNCY: AnimationPreset = {\n\tname: 'bouncy',\n\tduration: 600,\n\teasing: `linear(\n\t\t0, 0.004, 0.016 2.3%, 0.065 4.8%, 0.258 9.9%, 0.489 15%,\n\t\t0.683 20.1%, 0.847 25.4%, 0.963 30.6%, 1.039 36%, 1.086 41.8%,\n\t\t1.107 48.1%, 1.101 55.1%, 1.064 73.1%, 1.026 85.2%, 1.001\n\t)`,\n\teasingFallback: 'cubic-bezier(0.34, 1.8, 0.64, 1)',\n\tspring: { stiffness: 100, damping: 10, mass: 1 },\n}\n\n/**\n * Gentle preset - Slow, smooth, no overshoot\n * Best for: Page transitions, modal backgrounds, subtle reveals\n */\nexport const SPRING_GENTLE: AnimationPreset = {\n\tname: 'gentle',\n\tduration: 700,\n\teasing: `linear(\n\t\t0, 0.002, 0.009 2.6%, 0.036 5.3%, 0.153 11.3%, 0.352 18.5%,\n\t\t0.554 25.4%, 0.733 32.6%, 0.865 40.2%, 0.945 48.5%,\n\t\t0.984 58.2%, 0.997 70.5%, 1\n\t)`,\n\teasingFallback: 'cubic-bezier(0.4, 0, 0.2, 1)',\n\tspring: { stiffness: 80, damping: 25, mass: 1.2 },\n}\n\n// =============================================================================\n// LEGACY EXPORTS (backwards compatibility)\n// =============================================================================\n\n/** @deprecated Use SPRING_SMOOTH.easingFallback instead */\nexport const BLACKBIRD_EASING = SPRING_SMOOTH.easingFallback\n\n/** Standard easing for smooth transitions */\nexport const EASE_OUT = 'ease-out'\nexport const EASE_IN = 'ease-in'\n\n/** Standard durations */\nexport const DURATION_ENTER = SPRING_SNAPPY.duration\nexport const DURATION_EXIT = 150\nexport const DURATION_BACKDROP = 200\n\n// =============================================================================\n// CSS CUSTOM PROPERTIES\n// =============================================================================\n\n/**\n * CSS custom properties for use in stylesheets.\n * These can be injected into :root or a component's styles.\n *\n * @example\n * ```css\n * :root {\n * ${ANIMATION_CSS_VARS}\n * }\n *\n * .element {\n * transition: transform var(--blackbird-duration-smooth) var(--blackbird-easing-smooth);\n * }\n * ```\n */\nexport const ANIMATION_CSS_VARS = `\n\t/* Blackbird Animation System - Spring Physics */\n\n\t/* Smooth preset (Apple-style) */\n\t--blackbird-duration-smooth: ${SPRING_SMOOTH.duration}ms;\n\t--blackbird-easing-smooth: ${SPRING_SMOOTH.easingFallback};\n\t--blackbird-easing-smooth-spring: ${SPRING_SMOOTH.easing};\n\n\t/* Snappy preset (quick interactions) */\n\t--blackbird-duration-snappy: ${SPRING_SNAPPY.duration}ms;\n\t--blackbird-easing-snappy: ${SPRING_SNAPPY.easingFallback};\n\t--blackbird-easing-snappy-spring: ${SPRING_SNAPPY.easing};\n\n\t/* Bouncy preset (playful) */\n\t--blackbird-duration-bouncy: ${SPRING_BOUNCY.duration}ms;\n\t--blackbird-easing-bouncy: ${SPRING_BOUNCY.easingFallback};\n\t--blackbird-easing-bouncy-spring: ${SPRING_BOUNCY.easing};\n\n\t/* Gentle preset (subtle) */\n\t--blackbird-duration-gentle: ${SPRING_GENTLE.duration}ms;\n\t--blackbird-easing-gentle: ${SPRING_GENTLE.easingFallback};\n\t--blackbird-easing-gentle-spring: ${SPRING_GENTLE.easing};\n`\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\n\n/**\n * Get the appropriate easing function based on browser support.\n * Uses linear() if supported, falls back to cubic-bezier.\n */\nexport function getEasing(preset: AnimationPreset): string {\n\t// Feature detect linear() support\n\tif (typeof CSS !== 'undefined' && CSS.supports?.('animation-timing-function', 'linear(0, 1)')) {\n\t\treturn preset.easing\n\t}\n\treturn preset.easingFallback\n}\n\n/**\n * Check if the browser supports reduced motion preference.\n */\nexport function prefersReducedMotion(): boolean {\n\treturn typeof window !== 'undefined' && window.matchMedia('(prefers-reduced-motion: reduce)').matches\n}\n\n/**\n * Create a Web Animations API animation configuration.\n *\n * @example\n * ```ts\n * const anim = createAnimation(SPRING_SMOOTH, {\n * from: { opacity: 0, transform: 'translateY(-16px)' },\n * to: { opacity: 1, transform: 'translateY(0)' }\n * })\n *\n * element.animate(anim.keyframes, anim.options)\n * ```\n */\nexport function createAnimation(preset: AnimationPreset, keyframes: BlackbirdKeyframes): BlackbirdAnimation {\n\t// Respect reduced motion preference\n\tif (prefersReducedMotion()) {\n\t\treturn {\n\t\t\tkeyframes: [keyframes.to],\n\t\t\toptions: { duration: 0, fill: 'forwards' },\n\t\t}\n\t}\n\n\treturn {\n\t\tkeyframes: [keyframes.from, keyframes.to],\n\t\toptions: {\n\t\t\tduration: preset.duration,\n\t\t\teasing: preset.easingFallback, // Web Animations API doesn't support linear() well\n\t\t\tfill: 'forwards',\n\t\t},\n\t}\n}\n\n/**\n * Create a reveal animation (fade in + slide up).\n * Common pattern for content appearing.\n */\nexport function createRevealAnimation(\n\tpreset: AnimationPreset = SPRING_SMOOTH,\n\tdistance = 16,\n): BlackbirdAnimation {\n\treturn createAnimation(preset, {\n\t\tfrom: { opacity: 0, transform: `translateY(-${distance}px) scale(0.96)` },\n\t\tto: { opacity: 1, transform: 'translateY(0) scale(1)' },\n\t})\n}\n\n/**\n * Create a dismiss animation (fade out + slide up).\n * Common pattern for content disappearing.\n */\nexport function createDismissAnimation(\n\tpreset: AnimationPreset = SPRING_SMOOTH,\n\tdistance = 12,\n): BlackbirdAnimation {\n\tconst anim = createAnimation(preset, {\n\t\tfrom: { opacity: 1, transform: 'translateY(0) scale(1)' },\n\t\tto: { opacity: 0, transform: `translateY(-${distance}px) scale(0.97)` },\n\t})\n\n\t// Dismiss is slightly faster\n\tif (anim.options.duration) {\n\t\tanim.options.duration = (anim.options.duration as number) * 0.7\n\t}\n\n\treturn anim\n}\n\n/**\n * Create a scale animation (pop in/out).\n * Common pattern for buttons and interactive elements.\n */\nexport function createScaleAnimation(\n\tpreset: AnimationPreset = SPRING_SNAPPY,\n\tfromScale = 0.9,\n\ttoScale = 1,\n): BlackbirdAnimation {\n\treturn createAnimation(preset, {\n\t\tfrom: { opacity: fromScale < toScale ? 0 : 1, transform: `scale(${fromScale})` },\n\t\tto: { opacity: fromScale < toScale ? 1 : 0, transform: `scale(${toScale})` },\n\t})\n}\n\n// =============================================================================\n// TAILWIND UTILITIES (for use in tailwind.config.js)\n// =============================================================================\n\n/**\n * Tailwind CSS animation utilities configuration.\n * Import this into your tailwind.config.js to add Blackbird animations.\n *\n * @example\n * ```js\n * // tailwind.config.js\n * const { tailwindAnimations } = require('@mhmo91/schmancy/utils/animation')\n *\n * module.exports = {\n * theme: {\n * extend: {\n * ...tailwindAnimations\n * }\n * }\n * }\n * ```\n */\nexport const tailwindAnimations = {\n\ttransitionTimingFunction: {\n\t\t'spring-smooth': SPRING_SMOOTH.easingFallback,\n\t\t'spring-snappy': SPRING_SNAPPY.easingFallback,\n\t\t'spring-bouncy': SPRING_BOUNCY.easingFallback,\n\t\t'spring-gentle': SPRING_GENTLE.easingFallback,\n\t},\n\ttransitionDuration: {\n\t\t'spring-smooth': `${SPRING_SMOOTH.duration}ms`,\n\t\t'spring-snappy': `${SPRING_SNAPPY.duration}ms`,\n\t\t'spring-bouncy': `${SPRING_BOUNCY.duration}ms`,\n\t\t'spring-gentle': `${SPRING_GENTLE.duration}ms`,\n\t},\n\tkeyframes: {\n\t\t'blackbird-reveal': {\n\t\t\t'0%': { opacity: '0', transform: 'translateY(-16px) scale(0.96)' },\n\t\t\t'100%': { opacity: '1', transform: 'translateY(0) scale(1)' },\n\t\t},\n\t\t'blackbird-dismiss': {\n\t\t\t'0%': { opacity: '1', transform: 'translateY(0) scale(1)' },\n\t\t\t'100%': { opacity: '0', transform: 'translateY(-12px) scale(0.97)' },\n\t\t},\n\t\t'blackbird-scale-in': {\n\t\t\t'0%': { opacity: '0', transform: 'scale(0.9)' },\n\t\t\t'100%': { opacity: '1', transform: 'scale(1)' },\n\t\t},\n\t\t'blackbird-scale-out': {\n\t\t\t'0%': { opacity: '1', transform: 'scale(1)' },\n\t\t\t'100%': { opacity: '0', transform: 'scale(0.9)' },\n\t\t},\n\t\t'blackbird-slide-up': {\n\t\t\t'0%': { transform: 'translateY(100%)' },\n\t\t\t'100%': { transform: 'translateY(0)' },\n\t\t},\n\t\t'blackbird-slide-down': {\n\t\t\t'0%': { transform: 'translateY(0)' },\n\t\t\t'100%': { transform: 'translateY(100%)' },\n\t\t},\n\t},\n\tanimation: {\n\t\t'blackbird-reveal': `blackbird-reveal ${SPRING_SMOOTH.duration}ms ${SPRING_SMOOTH.easingFallback} forwards`,\n\t\t'blackbird-dismiss': `blackbird-dismiss ${SPRING_SMOOTH.duration * 0.7}ms ${SPRING_SMOOTH.easingFallback} forwards`,\n\t\t'blackbird-scale-in': `blackbird-scale-in ${SPRING_SNAPPY.duration}ms ${SPRING_SNAPPY.easingFallback} forwards`,\n\t\t'blackbird-scale-out': `blackbird-scale-out ${SPRING_SNAPPY.duration * 0.7}ms ${SPRING_SNAPPY.easingFallback} forwards`,\n\t\t'blackbird-slide-up': `blackbird-slide-up ${SPRING_SMOOTH.duration}ms ${SPRING_SMOOTH.easingFallback} forwards`,\n\t\t'blackbird-slide-down': `blackbird-slide-down ${SPRING_SMOOTH.duration * 0.7}ms ${SPRING_SMOOTH.easingFallback} forwards`,\n\t},\n}\n\n// =============================================================================\n// CSS-IN-JS UTILITIES (for Lit components)\n// =============================================================================\n\n/**\n * CSS string with spring-based grid animation for details/accordions.\n * Use with grid-template-rows for smooth height animation.\n *\n * @example\n * ```ts\n * import { css } from 'lit'\n * import { GRID_ANIMATION_CSS } from '@mhmo91/schmancy'\n *\n * static styles = css`\n * ${GRID_ANIMATION_CSS}\n *\n * .content {\n * display: grid;\n * grid-template-rows: 0fr;\n * }\n * .content[data-open='true'] {\n * grid-template-rows: 1fr;\n * }\n * `\n * ```\n */\nexport const GRID_ANIMATION_CSS = `\n\t/* Grid-based height animation with spring physics */\n\t.blackbird-grid {\n\t\tdisplay: grid;\n\t\tgrid-template-rows: 0fr;\n\t\toverflow: hidden;\n\t\ttransition: grid-template-rows ${SPRING_SMOOTH.duration}ms ${SPRING_SMOOTH.easingFallback};\n\t}\n\n\t/* Use spring easing when linear() is supported */\n\t@supports (animation-timing-function: linear(0, 1)) {\n\t\t.blackbird-grid {\n\t\t\ttransition: grid-template-rows ${SPRING_SMOOTH.duration}ms ${SPRING_SMOOTH.easing};\n\t\t}\n\t}\n\n\t.blackbird-grid[data-open='true'],\n\t.blackbird-grid.open {\n\t\tgrid-template-rows: 1fr;\n\t}\n\n\t.blackbird-grid > * {\n\t\toverflow: hidden;\n\t}\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\t.blackbird-grid {\n\t\t\ttransition: none;\n\t\t}\n\t}\n`\n"],"mappings":"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"}
1
+ {"version":3,"file":"animation-DCznELuT.js","names":[],"sources":["../src/utils/animation.ts"],"sourcesContent":["/**\n * Blackbird Animation System\n *\n * A comprehensive animation system using spring physics for natural,\n * organic motion. Named after the smooth, arcing flight patterns of birds.\n *\n * Features:\n * - Spring physics via CSS linear() (88% browser support)\n * - Cubic-bezier fallbacks for older browsers\n * - Typed interfaces for Web Animations API\n * - CSS custom properties for Tailwind integration\n * - Multiple presets: smooth, snappy, bouncy\n *\n * @see https://www.joshwcomeau.com/animation/linear-timing-function/\n * @see https://developer.chrome.com/docs/css-ui/css-linear-easing-function\n */\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/** Spring configuration parameters */\nexport interface SpringConfig {\n\t/** Spring stiffness (higher = faster) */\n\tstiffness: number\n\t/** Damping ratio (higher = less bounce) */\n\tdamping: number\n\t/** Mass (higher = slower) */\n\tmass: number\n}\n\n/** Animation preset with all timing values */\nexport interface AnimationPreset {\n\t/** Human-readable name */\n\tname: string\n\t/** Duration in milliseconds */\n\tduration: number\n\t/** CSS linear() easing function (modern browsers) */\n\teasing: string\n\t/** Cubic-bezier fallback (all browsers) */\n\teasingFallback: string\n\t/** Spring configuration used to generate this preset */\n\tspring: SpringConfig\n}\n\n/** Keyframe options for Web Animations API */\nexport interface BlackbirdKeyframes {\n\t/** Starting state */\n\tfrom: Keyframe\n\t/** Ending state */\n\tto: Keyframe\n}\n\n/** Complete animation configuration */\nexport interface BlackbirdAnimation {\n\tkeyframes: Keyframe[]\n\toptions: KeyframeAnimationOptions\n}\n\n// =============================================================================\n// SPRING PRESETS\n// =============================================================================\n\n/**\n * Smooth preset - Apple-style, subtle overshoot\n * Best for: Details, accordions, content reveals\n */\nexport const SPRING_SMOOTH: AnimationPreset = {\n\tname: 'smooth',\n\tduration: 500,\n\teasing: `linear(\n\t\t0, 0.006, 0.025 2.8%, 0.101 6.1%, 0.539 18.9%, 0.721 25.3%, 0.849 31.5%,\n\t\t0.937 38.1%, 0.968 41.8%, 0.991 45.7%, 1.006 50%, 1.015 54.8%,\n\t\t1.017 63.3%, 1.001\n\t)`,\n\teasingFallback: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\n\tspring: { stiffness: 100, damping: 15, mass: 1 },\n}\n\n/**\n * Snappy preset - Quick with minimal overshoot\n * Best for: Buttons, toggles, quick interactions\n */\nexport const SPRING_SNAPPY: AnimationPreset = {\n\tname: 'snappy',\n\tduration: 300,\n\teasing: `linear(\n\t\t0, 0.009, 0.035 2.1%, 0.141 4.4%, 0.723 15.5%, 0.938 23.8%,\n\t\t1.017 30.2%, 1.041 37.3%, 1.026 52.4%, 1.001\n\t)`,\n\teasingFallback: 'cubic-bezier(0.22, 1.25, 0.36, 1)',\n\tspring: { stiffness: 200, damping: 20, mass: 1 },\n}\n\n/**\n * Bouncy preset - Playful with noticeable overshoot\n * Best for: Notifications, celebrations, attention-grabbing\n */\nexport const SPRING_BOUNCY: AnimationPreset = {\n\tname: 'bouncy',\n\tduration: 600,\n\teasing: `linear(\n\t\t0, 0.004, 0.016 2.3%, 0.065 4.8%, 0.258 9.9%, 0.489 15%,\n\t\t0.683 20.1%, 0.847 25.4%, 0.963 30.6%, 1.039 36%, 1.086 41.8%,\n\t\t1.107 48.1%, 1.101 55.1%, 1.064 73.1%, 1.026 85.2%, 1.001\n\t)`,\n\teasingFallback: 'cubic-bezier(0.34, 1.8, 0.64, 1)',\n\tspring: { stiffness: 100, damping: 10, mass: 1 },\n}\n\n/**\n * Gentle preset - Slow, smooth, no overshoot\n * Best for: Page transitions, modal backgrounds, subtle reveals\n */\nexport const SPRING_GENTLE: AnimationPreset = {\n\tname: 'gentle',\n\tduration: 700,\n\teasing: `linear(\n\t\t0, 0.002, 0.009 2.6%, 0.036 5.3%, 0.153 11.3%, 0.352 18.5%,\n\t\t0.554 25.4%, 0.733 32.6%, 0.865 40.2%, 0.945 48.5%,\n\t\t0.984 58.2%, 0.997 70.5%, 1\n\t)`,\n\teasingFallback: 'cubic-bezier(0.4, 0, 0.2, 1)',\n\tspring: { stiffness: 80, damping: 25, mass: 1.2 },\n}\n\n// =============================================================================\n// LEGACY EXPORTS (backwards compatibility)\n// =============================================================================\n\n/** @deprecated Use SPRING_SMOOTH.easingFallback instead */\nexport const BLACKBIRD_EASING = SPRING_SMOOTH.easingFallback\n\n/** Standard easing for smooth transitions */\nexport const EASE_OUT = 'ease-out'\nexport const EASE_IN = 'ease-in'\n\n/** Standard durations */\nexport const DURATION_ENTER = SPRING_SNAPPY.duration\nexport const DURATION_EXIT = 150\nexport const DURATION_BACKDROP = 200\n\n// =============================================================================\n// CSS CUSTOM PROPERTIES\n// =============================================================================\n\n/**\n * CSS custom properties for use in stylesheets.\n * These can be injected into :root or a component's styles.\n *\n * @example\n * ```css\n * :root {\n * ${ANIMATION_CSS_VARS}\n * }\n *\n * .element {\n * transition: transform var(--blackbird-duration-smooth) var(--blackbird-easing-smooth);\n * }\n * ```\n */\nexport const ANIMATION_CSS_VARS = `\n\t/* Blackbird Animation System - Spring Physics */\n\n\t/* Smooth preset (Apple-style) */\n\t--blackbird-duration-smooth: ${SPRING_SMOOTH.duration}ms;\n\t--blackbird-easing-smooth: ${SPRING_SMOOTH.easingFallback};\n\t--blackbird-easing-smooth-spring: ${SPRING_SMOOTH.easing};\n\n\t/* Snappy preset (quick interactions) */\n\t--blackbird-duration-snappy: ${SPRING_SNAPPY.duration}ms;\n\t--blackbird-easing-snappy: ${SPRING_SNAPPY.easingFallback};\n\t--blackbird-easing-snappy-spring: ${SPRING_SNAPPY.easing};\n\n\t/* Bouncy preset (playful) */\n\t--blackbird-duration-bouncy: ${SPRING_BOUNCY.duration}ms;\n\t--blackbird-easing-bouncy: ${SPRING_BOUNCY.easingFallback};\n\t--blackbird-easing-bouncy-spring: ${SPRING_BOUNCY.easing};\n\n\t/* Gentle preset (subtle) */\n\t--blackbird-duration-gentle: ${SPRING_GENTLE.duration}ms;\n\t--blackbird-easing-gentle: ${SPRING_GENTLE.easingFallback};\n\t--blackbird-easing-gentle-spring: ${SPRING_GENTLE.easing};\n`\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\n\n/**\n * Get the appropriate easing function based on browser support.\n * Uses linear() if supported, falls back to cubic-bezier.\n */\nexport function getEasing(preset: AnimationPreset): string {\n\t// Feature detect linear() support\n\tif (typeof CSS !== 'undefined' && CSS.supports?.('animation-timing-function', 'linear(0, 1)')) {\n\t\treturn preset.easing\n\t}\n\treturn preset.easingFallback\n}\n\n/**\n * Check if the browser supports reduced motion preference.\n */\nexport function prefersReducedMotion(): boolean {\n\treturn typeof window !== 'undefined' && window.matchMedia('(prefers-reduced-motion: reduce)').matches\n}\n\n/**\n * Create a Web Animations API animation configuration.\n *\n * @example\n * ```ts\n * const anim = createAnimation(SPRING_SMOOTH, {\n * from: { opacity: 0, transform: 'translateY(-16px)' },\n * to: { opacity: 1, transform: 'translateY(0)' }\n * })\n *\n * element.animate(anim.keyframes, anim.options)\n * ```\n */\nexport function createAnimation(preset: AnimationPreset, keyframes: BlackbirdKeyframes): BlackbirdAnimation {\n\t// Respect reduced motion preference\n\tif (prefersReducedMotion()) {\n\t\treturn {\n\t\t\tkeyframes: [keyframes.to],\n\t\t\toptions: { duration: 0, fill: 'forwards' },\n\t\t}\n\t}\n\n\treturn {\n\t\tkeyframes: [keyframes.from, keyframes.to],\n\t\toptions: {\n\t\t\tduration: preset.duration,\n\t\t\teasing: preset.easingFallback, // Web Animations API doesn't support linear() well\n\t\t\tfill: 'forwards',\n\t\t},\n\t}\n}\n\n/**\n * Create a reveal animation (fade in + slide up).\n * Common pattern for content appearing.\n */\nexport function createRevealAnimation(preset: AnimationPreset = SPRING_SMOOTH, distance = 16): BlackbirdAnimation {\n\treturn createAnimation(preset, {\n\t\tfrom: { opacity: 0, transform: `translateY(-${distance}px) scale(0.96)` },\n\t\tto: { opacity: 1, transform: 'translateY(0) scale(1)' },\n\t})\n}\n\n/**\n * Create a dismiss animation (fade out + slide up).\n * Common pattern for content disappearing.\n */\nexport function createDismissAnimation(preset: AnimationPreset = SPRING_SMOOTH, distance = 12): BlackbirdAnimation {\n\tconst anim = createAnimation(preset, {\n\t\tfrom: { opacity: 1, transform: 'translateY(0) scale(1)' },\n\t\tto: { opacity: 0, transform: `translateY(-${distance}px) scale(0.97)` },\n\t})\n\n\t// Dismiss is slightly faster\n\tif (anim.options.duration) {\n\t\tanim.options.duration = (anim.options.duration as number) * 0.7\n\t}\n\n\treturn anim\n}\n\n/**\n * Create a scale animation (pop in/out).\n * Common pattern for buttons and interactive elements.\n */\nexport function createScaleAnimation(\n\tpreset: AnimationPreset = SPRING_SNAPPY,\n\tfromScale = 0.9,\n\ttoScale = 1,\n): BlackbirdAnimation {\n\treturn createAnimation(preset, {\n\t\tfrom: { opacity: fromScale < toScale ? 0 : 1, transform: `scale(${fromScale})` },\n\t\tto: { opacity: fromScale < toScale ? 1 : 0, transform: `scale(${toScale})` },\n\t})\n}\n\n// =============================================================================\n// TAILWIND UTILITIES (for use in tailwind.config.js)\n// =============================================================================\n\n/**\n * Tailwind CSS animation utilities configuration.\n * Import this into your tailwind.config.js to add Blackbird animations.\n *\n * @example\n * ```js\n * // tailwind.config.js\n * const { tailwindAnimations } = require('@mhmo91/schmancy/utils/animation')\n *\n * module.exports = {\n * theme: {\n * extend: {\n * ...tailwindAnimations\n * }\n * }\n * }\n * ```\n */\nexport const tailwindAnimations = {\n\ttransitionTimingFunction: {\n\t\t'spring-smooth': SPRING_SMOOTH.easingFallback,\n\t\t'spring-snappy': SPRING_SNAPPY.easingFallback,\n\t\t'spring-bouncy': SPRING_BOUNCY.easingFallback,\n\t\t'spring-gentle': SPRING_GENTLE.easingFallback,\n\t},\n\ttransitionDuration: {\n\t\t'spring-smooth': `${SPRING_SMOOTH.duration}ms`,\n\t\t'spring-snappy': `${SPRING_SNAPPY.duration}ms`,\n\t\t'spring-bouncy': `${SPRING_BOUNCY.duration}ms`,\n\t\t'spring-gentle': `${SPRING_GENTLE.duration}ms`,\n\t},\n\tkeyframes: {\n\t\t'blackbird-reveal': {\n\t\t\t'0%': { opacity: '0', transform: 'translateY(-16px) scale(0.96)' },\n\t\t\t'100%': { opacity: '1', transform: 'translateY(0) scale(1)' },\n\t\t},\n\t\t'blackbird-dismiss': {\n\t\t\t'0%': { opacity: '1', transform: 'translateY(0) scale(1)' },\n\t\t\t'100%': { opacity: '0', transform: 'translateY(-12px) scale(0.97)' },\n\t\t},\n\t\t'blackbird-scale-in': {\n\t\t\t'0%': { opacity: '0', transform: 'scale(0.9)' },\n\t\t\t'100%': { opacity: '1', transform: 'scale(1)' },\n\t\t},\n\t\t'blackbird-scale-out': {\n\t\t\t'0%': { opacity: '1', transform: 'scale(1)' },\n\t\t\t'100%': { opacity: '0', transform: 'scale(0.9)' },\n\t\t},\n\t\t'blackbird-slide-up': {\n\t\t\t'0%': { transform: 'translateY(100%)' },\n\t\t\t'100%': { transform: 'translateY(0)' },\n\t\t},\n\t\t'blackbird-slide-down': {\n\t\t\t'0%': { transform: 'translateY(0)' },\n\t\t\t'100%': { transform: 'translateY(100%)' },\n\t\t},\n\t},\n\tanimation: {\n\t\t'blackbird-reveal': `blackbird-reveal ${SPRING_SMOOTH.duration}ms ${SPRING_SMOOTH.easingFallback} forwards`,\n\t\t'blackbird-dismiss': `blackbird-dismiss ${SPRING_SMOOTH.duration * 0.7}ms ${SPRING_SMOOTH.easingFallback} forwards`,\n\t\t'blackbird-scale-in': `blackbird-scale-in ${SPRING_SNAPPY.duration}ms ${SPRING_SNAPPY.easingFallback} forwards`,\n\t\t'blackbird-scale-out': `blackbird-scale-out ${SPRING_SNAPPY.duration * 0.7}ms ${SPRING_SNAPPY.easingFallback} forwards`,\n\t\t'blackbird-slide-up': `blackbird-slide-up ${SPRING_SMOOTH.duration}ms ${SPRING_SMOOTH.easingFallback} forwards`,\n\t\t'blackbird-slide-down': `blackbird-slide-down ${SPRING_SMOOTH.duration * 0.7}ms ${SPRING_SMOOTH.easingFallback} forwards`,\n\t},\n}\n\n// =============================================================================\n// CSS-IN-JS UTILITIES (for Lit components)\n// =============================================================================\n\n/**\n * CSS string with spring-based grid animation for details/accordions.\n * Use with grid-template-rows for smooth height animation.\n *\n * @example\n * ```ts\n * import { css } from 'lit'\n * import { GRID_ANIMATION_CSS } from '@mhmo91/schmancy'\n *\n * static styles = css`\n * ${GRID_ANIMATION_CSS}\n *\n * .content {\n * display: grid;\n * grid-template-rows: 0fr;\n * }\n * .content[data-open='true'] {\n * grid-template-rows: 1fr;\n * }\n * `\n * ```\n */\nexport const GRID_ANIMATION_CSS = `\n\t/* Grid-based height animation with spring physics */\n\t.blackbird-grid {\n\t\tdisplay: grid;\n\t\tgrid-template-rows: 0fr;\n\t\toverflow: hidden;\n\t\ttransition: grid-template-rows ${SPRING_SMOOTH.duration}ms ${SPRING_SMOOTH.easingFallback};\n\t}\n\n\t/* Use spring easing when linear() is supported */\n\t@supports (animation-timing-function: linear(0, 1)) {\n\t\t.blackbird-grid {\n\t\t\ttransition: grid-template-rows ${SPRING_SMOOTH.duration}ms ${SPRING_SMOOTH.easing};\n\t\t}\n\t}\n\n\t.blackbird-grid[data-open='true'],\n\t.blackbird-grid.open {\n\t\tgrid-template-rows: 1fr;\n\t}\n\n\t.blackbird-grid > * {\n\t\toverflow: hidden;\n\t}\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\t.blackbird-grid {\n\t\t\ttransition: none;\n\t\t}\n\t}\n`\n"],"mappings":"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"}