@mhmo91/schmancy 0.10.42 → 0.10.43

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 +4031 -3891
  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-CVAWMdar.cjs +138 -0
  92. package/dist/date-range-CVAWMdar.cjs.map +1 -0
  93. package/dist/date-range-D2NZU5Yg.js +433 -0
  94. package/dist/date-range-D2NZU5Yg.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-DAtcPmCb.js} +173 -175
  318. package/dist/src-DAtcPmCb.js.map +1 -0
  319. package/dist/src-DuRvYagm.cjs +237 -0
  320. package/dist/src-DuRvYagm.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 +141 -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 +359 -122
  507. package/src/form/fields/date-range/date-range.ts +319 -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 +35 -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
@@ -1,5 +1,5 @@
1
- import { t as e, u as t } from "./SchmancyElement-OG71FtNv.js";
2
- import "./mixins-bCEXbwJV.js";
1
+ import { t as e, u as t } from "./SchmancyElement-Ob9yGkiG.js";
2
+ import "./mixins-q4KAL8Xr.js";
3
3
  import { customElement as n, query as r } from "lit/decorators.js";
4
4
  import { html as i } from "lit";
5
5
  var a = class extends e {
@@ -1 +1 @@
1
- {"version":3,"file":"theme-button-BD8anzsZ.js","names":[],"sources":["../src/theme-button/theme-button.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, query } from 'lit/decorators.js'\n\n@customElement('schmancy-theme-button')\nexport default class SchmancyThemeButton extends SchmancyElement {\n\t@query('#color') color!: HTMLElement\n\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<schmancy-button\n\t\t\t\t@click=${() => {\n\t\t\t\t\t// Trigger any other effects you have\n\t\t\t\t\t// $newSchmancyTheme.next(undefined)\n\n\t\t\t\t\t// Native Web Animations API usage:\n\t\t\t\t\tthis.color.animate([{ transform: 'rotate(0deg)' }, { transform: 'rotate(360deg)' }], {\n\t\t\t\t\t\tduration: 300,\n\t\t\t\t\t\t// fill: 'forwards', // Use if you want it to remain rotated at 360°\n\t\t\t\t\t\t// easing: 'ease-out', // Or another easing function\n\t\t\t\t\t})\n\t\t\t\t}}\n\t\t\t\tvariant=\"text\"\n\t\t\t>\n\t\t\t\t<schmancy-icon id=\"color\">palette</schmancy-icon>\n\t\t\t</schmancy-button>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-theme-button': SchmancyThemeButton\n\t}\n}\n"],"mappings":";;;;AAKe,IAAA,IAAA,cAAkC,EAAA;CAGhD,SAAA;EACC,OAAO,CAAI;;;GAOR,KAAK,MAAM,QAAQ,CAAC,EAAE,WAAW,eAAA,GAAkB,EAAE,WAAW,iBAAA,CAAA,GAAqB,EACpF,UAAU,IAAA,CAAA;EAAA,EAAA;;;;;;CAUf;AAAA;AAAA,EAAA,CArBC,EAAM,QAAA,CAAA,GAAQ,EAAA,WAAA,SAAA,KAAA,CAAA,GAAA,IAAA,EAAA,CAFf,EAAc,uBAAA,CAAA,GAAuB,CAAA"}
1
+ {"version":3,"file":"theme-button-Bko5ohFP.js","names":[],"sources":["../src/theme-button/theme-button.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, query } from 'lit/decorators.js'\n\n@customElement('schmancy-theme-button')\nexport default class SchmancyThemeButton extends SchmancyElement {\n\t@query('#color') color!: HTMLElement\n\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<schmancy-button\n\t\t\t\t@click=${() => {\n\t\t\t\t\t// Trigger any other effects you have\n\t\t\t\t\t// $newSchmancyTheme.next(undefined)\n\n\t\t\t\t\t// Native Web Animations API usage:\n\t\t\t\t\tthis.color.animate([{ transform: 'rotate(0deg)' }, { transform: 'rotate(360deg)' }], {\n\t\t\t\t\t\tduration: 300,\n\t\t\t\t\t\t// fill: 'forwards', // Use if you want it to remain rotated at 360°\n\t\t\t\t\t\t// easing: 'ease-out', // Or another easing function\n\t\t\t\t\t})\n\t\t\t\t}}\n\t\t\t\tvariant=\"text\"\n\t\t\t>\n\t\t\t\t<schmancy-icon id=\"color\">palette</schmancy-icon>\n\t\t\t</schmancy-button>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-theme-button': SchmancyThemeButton\n\t}\n}\n"],"mappings":";;;;AAKe,IAAA,IAAA,cAAkC,EAAA;CAGhD,SAAA;EACC,OAAO,CAAI;;;GAOR,KAAK,MAAM,QAAQ,CAAC,EAAE,WAAW,eAAA,GAAkB,EAAE,WAAW,iBAAA,CAAA,GAAqB,EACpF,UAAU,IAAA,CAAA;EAAA,EAAA;;;;;;CAUf;AAAA;AAAA,EAAA,CArBC,EAAM,QAAA,CAAA,GAAQ,EAAA,WAAA,SAAA,KAAA,CAAA,GAAA,IAAA,EAAA,CAFf,EAAc,uBAAA,CAAA,GAAuB,CAAA"}
@@ -1,4 +1,4 @@
1
- require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-PS1u0j1B.cjs`);require(`./mixins-BoMURWag.cjs`);let t=require(`lit/decorators.js`),n=require(`lit`);var r=class extends e.t{render(){return n.html`
1
+ require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-CeKrBW2j.cjs`);require(`./mixins-Cjn20BQH.cjs`);let t=require(`lit/decorators.js`),n=require(`lit`);var r=class extends e.t{render(){return n.html`
2
2
  <schmancy-button
3
3
  @click=${()=>{this.color.animate([{transform:`rotate(0deg)`},{transform:`rotate(360deg)`}],{duration:300})}}
4
4
  variant="text"
@@ -1 +1 @@
1
- {"version":3,"file":"theme-button-DlrNoCMA.cjs","names":[],"sources":["../src/theme-button/theme-button.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, query } from 'lit/decorators.js'\n\n@customElement('schmancy-theme-button')\nexport default class SchmancyThemeButton extends SchmancyElement {\n\t@query('#color') color!: HTMLElement\n\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<schmancy-button\n\t\t\t\t@click=${() => {\n\t\t\t\t\t// Trigger any other effects you have\n\t\t\t\t\t// $newSchmancyTheme.next(undefined)\n\n\t\t\t\t\t// Native Web Animations API usage:\n\t\t\t\t\tthis.color.animate([{ transform: 'rotate(0deg)' }, { transform: 'rotate(360deg)' }], {\n\t\t\t\t\t\tduration: 300,\n\t\t\t\t\t\t// fill: 'forwards', // Use if you want it to remain rotated at 360°\n\t\t\t\t\t\t// easing: 'ease-out', // Or another easing function\n\t\t\t\t\t})\n\t\t\t\t}}\n\t\t\t\tvariant=\"text\"\n\t\t\t>\n\t\t\t\t<schmancy-icon id=\"color\">palette</schmancy-icon>\n\t\t\t</schmancy-button>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-theme-button': SchmancyThemeButton\n\t}\n}\n"],"mappings":"uKAKe,IAAA,EAAA,cAAkC,EAAA,CAAA,CAGhD,QAAA,CACC,MAAO,GAAA,IAAI;;kBAOR,KAAK,MAAM,QAAQ,CAAC,CAAE,UAAW,cAAA,EAAkB,CAAE,UAAW,gBAAA,CAAA,EAAqB,CACpF,SAAU,GAAA,CAAA,CAAA,EAAA;;;;;GAUf,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OArBO,QAAA,CAAA,EAAQ,EAAA,UAAA,QAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eAFD,uBAAA,CAAA,EAAuB,CAAA"}
1
+ {"version":3,"file":"theme-button-YLY7zR1c.cjs","names":[],"sources":["../src/theme-button/theme-button.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, query } from 'lit/decorators.js'\n\n@customElement('schmancy-theme-button')\nexport default class SchmancyThemeButton extends SchmancyElement {\n\t@query('#color') color!: HTMLElement\n\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<schmancy-button\n\t\t\t\t@click=${() => {\n\t\t\t\t\t// Trigger any other effects you have\n\t\t\t\t\t// $newSchmancyTheme.next(undefined)\n\n\t\t\t\t\t// Native Web Animations API usage:\n\t\t\t\t\tthis.color.animate([{ transform: 'rotate(0deg)' }, { transform: 'rotate(360deg)' }], {\n\t\t\t\t\t\tduration: 300,\n\t\t\t\t\t\t// fill: 'forwards', // Use if you want it to remain rotated at 360°\n\t\t\t\t\t\t// easing: 'ease-out', // Or another easing function\n\t\t\t\t\t})\n\t\t\t\t}}\n\t\t\t\tvariant=\"text\"\n\t\t\t>\n\t\t\t\t<schmancy-icon id=\"color\">palette</schmancy-icon>\n\t\t\t</schmancy-button>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-theme-button': SchmancyThemeButton\n\t}\n}\n"],"mappings":"uKAKe,IAAA,EAAA,cAAkC,EAAA,CAAA,CAGhD,QAAA,CACC,MAAO,GAAA,IAAI;;kBAOR,KAAK,MAAM,QAAQ,CAAC,CAAE,UAAW,cAAA,EAAkB,CAAE,UAAW,gBAAA,CAAA,EAAqB,CACpF,SAAU,GAAA,CAAA,CAAA,EAAA;;;;;GAUf,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OArBO,QAAA,CAAA,EAAQ,EAAA,UAAA,QAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eAFD,uBAAA,CAAA,EAAuB,CAAA"}
@@ -1 +1 @@
1
- require(`./theme-button-DlrNoCMA.cjs`);
1
+ require(`./theme-button-YLY7zR1c.cjs`);
@@ -1 +1 @@
1
- import "./theme-button-BD8anzsZ.js";
1
+ import "./theme-button-Bko5ohFP.js";
package/dist/theme.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./SchmancyElement-PS1u0j1B.cjs`),t=require(`./theme.service-pjkTM209.cjs`),n=require(`./theme.interface-CSt7JUBD.cjs`),r=require(`./theme-BG0EnzYP.cjs`);exports.SchmancyGenerateMoodAudioEvent=r.n,exports.SchmancyTheme=n.t,Object.defineProperty(exports,`SchmancyThemeAudioPlayer`,{enumerable:!0,get:function(){return r.r}}),Object.defineProperty(exports,`SchmancyThemeComponent`,{enumerable:!0,get:function(){return r.a}}),Object.defineProperty(exports,`SchmancyThemeController`,{enumerable:!0,get:function(){return r.i}}),Object.defineProperty(exports,`SchmancyThemeControllerBoat`,{enumerable:!0,get:function(){return r.t}}),exports.ThemeHereIAm=t.r,exports.ThemeWhereAreYou=t.i,exports.createDarkTonalPaletteFromBaseColor=r.s,exports.createLightTonalPaletteFromBaseColor=r.c,exports.formatTheme=r.l,exports.schmancyTheme=t.t,exports.tailwindStyles=r.o,exports.theme=t.n,exports.themeContext=e.d;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./SchmancyElement-CeKrBW2j.cjs`),t=require(`./theme.service-h2fXQq7x.cjs`),n=require(`./theme.interface-B-qxDsZQ.cjs`),r=require(`./theme-BVul7lHS.cjs`);exports.SchmancyGenerateMoodAudioEvent=r.n,exports.SchmancyTheme=n.t,Object.defineProperty(exports,`SchmancyThemeAudioPlayer`,{enumerable:!0,get:function(){return r.r}}),Object.defineProperty(exports,`SchmancyThemeComponent`,{enumerable:!0,get:function(){return r.a}}),Object.defineProperty(exports,`SchmancyThemeController`,{enumerable:!0,get:function(){return r.i}}),Object.defineProperty(exports,`SchmancyThemeControllerBoat`,{enumerable:!0,get:function(){return r.t}}),exports.ThemeHereIAm=t.r,exports.ThemeWhereAreYou=t.i,exports.createDarkTonalPaletteFromBaseColor=r.s,exports.createLightTonalPaletteFromBaseColor=r.c,exports.formatTheme=r.l,exports.schmancyTheme=t.t,exports.tailwindStyles=r.o,exports.theme=t.n,exports.themeContext=e.d;
@@ -1 +1 @@
1
- {"version":3,"file":"theme.interface-CSt7JUBD.cjs","names":[],"sources":["../src/theme/theme.interface.ts"],"sourcesContent":["/**\n * Material Design 3 Theme Definition\n * Complete theme system following Material Design 3 specifications\n * @see https://m3.material.io/foundations/customization\n *\n * @internal\n */\nconst ThemeDef = {\n\tsys: {\n\t\t// M3 Color System - Complete tonal palette support\n\t\tcolor: {\n\t\t\t// Neutral colors\n\t\t\tscrim: 'var(--schmancy-sys-color-scrim)',\n\t\t\toutline: 'var(--schmancy-sys-color-outline)',\n\t\t\toutlineVariant: 'var(--schmancy-sys-color-outlineVariant)',\n\t\t\tshadow: 'var(--schmancy-sys-color-shadow)',\n\n\t\t\t// Surface colors with complete tonal values\n\t\t\tsurface: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-surface-default)',\n\t\t\t\tdim: 'var(--schmancy-sys-color-surface-dim)',\n\t\t\t\tbright: 'var(--schmancy-sys-color-surface-bright)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-surface-container)',\n\t\t\t\tcontainerLow: 'var(--schmancy-sys-color-surface-containerLow)',\n\t\t\t\tcontainerLowest: 'var(--schmancy-sys-color-surface-containerLowest)',\n\t\t\t\tcontainerHigh: 'var(--schmancy-sys-color-surface-containerHigh)',\n\t\t\t\tcontainerHighest: 'var(--schmancy-sys-color-surface-containerHighest)',\n\t\t\t\ton: 'var(--schmancy-sys-color-surface-on)',\n\t\t\t\tonVariant: 'var(--schmancy-sys-color-surface-onVariant)',\n\t\t\t\ttint: 'var(--schmancy-sys-color-surface-tint)',\n\t\t\t\t// Inverse colors\n\t\t\t\tinverse: 'var(--schmancy-sys-color-inverse-surface)',\n\t\t\t\tinverseOn: 'var(--schmancy-sys-color-inverse-onSurface)',\n\t\t\t\t// Deprecated mappings for backward compatibility\n\t\t\t\tlow: 'var(--schmancy-sys-color-surface-containerLow)',\n\t\t\t\thigh: 'var(--schmancy-sys-color-surface-containerHigh)',\n\t\t\t\thighest: 'var(--schmancy-sys-color-surface-containerHighest)',\n\t\t\t\tlowest: 'var(--schmancy-sys-color-surface-containerLowest)',\n\t\t\t},\n\n\t\t\t// Primary color roles with fixed variants\n\t\t\tprimary: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-primary-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-primary-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-primary-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-primary-onContainer)',\n\t\t\t\tfixed: 'var(--schmancy-sys-color-primary-fixed)',\n\t\t\t\tfixedDim: 'var(--schmancy-sys-color-primary-fixedDim)',\n\t\t\t\tonFixed: 'var(--schmancy-sys-color-primary-onFixed)',\n\t\t\t\tonFixedVariant: 'var(--schmancy-sys-color-primary-onFixedVariant)',\n\t\t\t\tinverse: 'var(--schmancy-sys-color-inverse-primary)',\n\t\t\t},\n\n\t\t\t// Secondary color roles with fixed variants\n\t\t\tsecondary: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-secondary-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-secondary-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-secondary-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-secondary-onContainer)',\n\t\t\t\tfixed: 'var(--schmancy-sys-color-secondary-fixed)',\n\t\t\t\tfixedDim: 'var(--schmancy-sys-color-secondary-fixedDim)',\n\t\t\t\tonFixed: 'var(--schmancy-sys-color-secondary-onFixed)',\n\t\t\t\tonFixedVariant: 'var(--schmancy-sys-color-secondary-onFixedVariant)',\n\t\t\t},\n\n\t\t\t// Tertiary color roles with fixed variants\n\t\t\ttertiary: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-tertiary-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-tertiary-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-tertiary-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-tertiary-onContainer)',\n\t\t\t\tfixed: 'var(--schmancy-sys-color-tertiary-fixed)',\n\t\t\t\tfixedDim: 'var(--schmancy-sys-color-tertiary-fixedDim)',\n\t\t\t\tonFixed: 'var(--schmancy-sys-color-tertiary-onFixed)',\n\t\t\t\tonFixedVariant: 'var(--schmancy-sys-color-tertiary-onFixedVariant)',\n\t\t\t},\n\n\t\t\t// Error color roles\n\t\t\terror: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-error-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-error-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-error-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-error-onContainer)',\n\t\t\t},\n\n\t\t\t// Extended color roles - Success\n\t\t\tsuccess: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-success-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-success-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-success-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-success-onContainer)',\n\t\t\t},\n\n\t\t\t// Extended color roles - Warning\n\t\t\twarning: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-warning-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-warning-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-warning-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-warning-onContainer)',\n\t\t\t},\n\n\t\t\t// Extended color roles - Info\n\t\t\tinfo: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-info-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-info-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-info-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-info-onContainer)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Typography System\n\t\ttypography: {\n\t\t\t// Display styles\n\t\t\tdisplay: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-display-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-display-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-display-small)',\n\t\t\t},\n\t\t\t// Headline styles\n\t\t\theadline: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-headline-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-headline-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-headline-small)',\n\t\t\t},\n\t\t\t// Title styles\n\t\t\ttitle: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-title-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-title-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-title-small)',\n\t\t\t},\n\t\t\t// Body styles\n\t\t\tbody: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-body-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-body-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-body-small)',\n\t\t\t},\n\t\t\t// Label styles\n\t\t\tlabel: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-label-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-label-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-label-small)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Shape System\n\t\tshape: {\n\t\t\tcorner: {\n\t\t\t\tnone: 'var(--schmancy-sys-shape-corner-none)',\n\t\t\t\textraSmall: 'var(--schmancy-sys-shape-corner-extraSmall)',\n\t\t\t\tsmall: 'var(--schmancy-sys-shape-corner-small)',\n\t\t\t\tmedium: 'var(--schmancy-sys-shape-corner-medium)',\n\t\t\t\tlarge: 'var(--schmancy-sys-shape-corner-large)',\n\t\t\t\textraLarge: 'var(--schmancy-sys-shape-corner-extraLarge)',\n\t\t\t\tfull: 'var(--schmancy-sys-shape-corner-full)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Elevation System with tinted shadows\n\t\televation: {\n\t\t\t0: 'var(--schmancy-sys-elevation-0)',\n\t\t\t1: 'var(--schmancy-sys-elevation-1)',\n\t\t\t2: 'var(--schmancy-sys-elevation-2)',\n\t\t\t3: 'var(--schmancy-sys-elevation-3)',\n\t\t\t4: 'var(--schmancy-sys-elevation-4)',\n\t\t\t5: 'var(--schmancy-sys-elevation-5)',\n\t\t},\n\n\t\t// M3 Motion System\n\t\tmotion: {\n\t\t\t// Easing tokens\n\t\t\teasing: {\n\t\t\t\temphasized: 'var(--schmancy-sys-motion-easing-emphasized)',\n\t\t\t\temphasizedDecelerate: 'var(--schmancy-sys-motion-easing-emphasized-decelerate)',\n\t\t\t\temphasizedAccelerate: 'var(--schmancy-sys-motion-easing-emphasized-accelerate)',\n\t\t\t\tstandard: 'var(--schmancy-sys-motion-easing-standard)',\n\t\t\t\tstandardDecelerate: 'var(--schmancy-sys-motion-easing-standard-decelerate)',\n\t\t\t\tstandardAccelerate: 'var(--schmancy-sys-motion-easing-standard-accelerate)',\n\t\t\t\tlegacy: 'var(--schmancy-sys-motion-easing-legacy)',\n\t\t\t\tlinear: 'var(--schmancy-sys-motion-easing-linear)',\n\t\t\t},\n\t\t\t// Duration tokens\n\t\t\tduration: {\n\t\t\t\tshort1: 'var(--schmancy-sys-motion-duration-short1)',\n\t\t\t\tshort2: 'var(--schmancy-sys-motion-duration-short2)',\n\t\t\t\tshort3: 'var(--schmancy-sys-motion-duration-short3)',\n\t\t\t\tshort4: 'var(--schmancy-sys-motion-duration-short4)',\n\t\t\t\tmedium1: 'var(--schmancy-sys-motion-duration-medium1)',\n\t\t\t\tmedium2: 'var(--schmancy-sys-motion-duration-medium2)',\n\t\t\t\tmedium3: 'var(--schmancy-sys-motion-duration-medium3)',\n\t\t\t\tmedium4: 'var(--schmancy-sys-motion-duration-medium4)',\n\t\t\t\tlong1: 'var(--schmancy-sys-motion-duration-long1)',\n\t\t\t\tlong2: 'var(--schmancy-sys-motion-duration-long2)',\n\t\t\t\tlong3: 'var(--schmancy-sys-motion-duration-long3)',\n\t\t\t\tlong4: 'var(--schmancy-sys-motion-duration-long4)',\n\t\t\t\textraLong1: 'var(--schmancy-sys-motion-duration-extraLong1)',\n\t\t\t\textraLong2: 'var(--schmancy-sys-motion-duration-extraLong2)',\n\t\t\t\textraLong3: 'var(--schmancy-sys-motion-duration-extraLong3)',\n\t\t\t\textraLong4: 'var(--schmancy-sys-motion-duration-extraLong4)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 State Layers\n\t\tstate: {\n\t\t\topacity: {\n\t\t\t\thover: 'var(--schmancy-sys-state-hover-opacity)',\n\t\t\t\tfocus: 'var(--schmancy-sys-state-focus-opacity)',\n\t\t\t\tpressed: 'var(--schmancy-sys-state-pressed-opacity)',\n\t\t\t\tdragged: 'var(--schmancy-sys-state-dragged-opacity)',\n\t\t\t\tdisabled: 'var(--schmancy-sys-state-disabled-opacity)',\n\t\t\t\tdisabledContainer: 'var(--schmancy-sys-state-disabled-container-opacity)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Spacing System\n\t\tspacing: {\n\t\t\t0: 'var(--schmancy-sys-spacing-0)',\n\t\t\t1: 'var(--schmancy-sys-spacing-1)',\n\t\t\t2: 'var(--schmancy-sys-spacing-2)',\n\t\t\t3: 'var(--schmancy-sys-spacing-3)',\n\t\t\t4: 'var(--schmancy-sys-spacing-4)',\n\t\t\t5: 'var(--schmancy-sys-spacing-5)',\n\t\t\t6: 'var(--schmancy-sys-spacing-6)',\n\t\t\t7: 'var(--schmancy-sys-spacing-7)',\n\t\t\t8: 'var(--schmancy-sys-spacing-8)',\n\t\t\t9: 'var(--schmancy-sys-spacing-9)',\n\t\t\t10: 'var(--schmancy-sys-spacing-10)',\n\t\t\t11: 'var(--schmancy-sys-spacing-11)',\n\t\t\t12: 'var(--schmancy-sys-spacing-12)',\n\t\t},\n\n\t\t// Legacy outline for backward compatibility\n\t\toutline: {\n\t\t\t1: 'var(--schmancy-sys-outline-1)',\n\t\t},\n\t},\n\n\t// Reference palette - complete tonal values\n\tref: {\n\t\tpalette: {\n\t\t\t// Primary tonal palette\n\t\t\tprimary: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-primary-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-primary-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-primary-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-primary-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-primary-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-primary-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-primary-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-primary-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-primary-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-primary-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-primary-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-primary-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-primary-100)',\n\t\t\t},\n\t\t\t// Secondary tonal palette\n\t\t\tsecondary: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-secondary-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-secondary-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-secondary-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-secondary-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-secondary-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-secondary-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-secondary-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-secondary-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-secondary-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-secondary-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-secondary-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-secondary-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-secondary-100)',\n\t\t\t},\n\t\t\t// Tertiary tonal palette\n\t\t\ttertiary: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-tertiary-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-tertiary-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-tertiary-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-tertiary-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-tertiary-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-tertiary-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-tertiary-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-tertiary-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-tertiary-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-tertiary-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-tertiary-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-tertiary-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-tertiary-100)',\n\t\t\t},\n\t\t\t// Neutral tonal palette\n\t\t\tneutral: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-neutral-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-neutral-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-neutral-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-neutral-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-neutral-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-neutral-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-neutral-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-neutral-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-neutral-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-neutral-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-neutral-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-neutral-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-neutral-100)',\n\t\t\t},\n\t\t\t// Neutral variant tonal palette\n\t\t\tneutralVariant: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-neutralVariant-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-neutralVariant-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-neutralVariant-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-neutralVariant-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-neutralVariant-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-neutralVariant-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-neutralVariant-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-neutralVariant-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-neutralVariant-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-neutralVariant-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-neutralVariant-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-neutralVariant-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-neutralVariant-100)',\n\t\t\t},\n\t\t\t// Error tonal palette\n\t\t\terror: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-error-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-error-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-error-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-error-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-error-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-error-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-error-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-error-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-error-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-error-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-error-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-error-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-error-100)',\n\t\t\t},\n\t\t},\n\t},\n}\nconst theme = {\n\ttheme: ThemeDef,\n}\n\n/**\n * Type definition for the Schmancy Material Design 3 theme configuration.\n * Complete theme system with colors, typography, shape, motion, and state layers.\n *\n * @typedef {Object} TSchmancyTheme\n *\n * @example\n * ```typescript\n * import type { TSchmancyTheme } from '@schmancy/theme'\n *\n * const myTheme: Partial<TSchmancyTheme> = {\n * sys: {\n * color: {\n * primary: {\n * default: '#6750A4',\n * container: '#EADDFF'\n * }\n * },\n * shape: {\n * corner: {\n * medium: '12px'\n * }\n * }\n * }\n * }\n * ```\n */\nexport type TSchmancyTheme = (typeof theme)[keyof typeof theme] & {\n\t/**\n\t * Locale for number/date formatting (BCP 47 language tag).\n\t * Defaults to navigator.language, can be overridden via schmancy-theme locale attribute.\n\t * @example \"de-DE\", \"en-US\", \"ar-SA\"\n\t */\n\tlocale: string\n}\n\n/**\n * Default Schmancy theme configuration object.\n * Provides access to all theme CSS variables through JavaScript.\n *\n * @constant {TSchmancyTheme}\n *\n * @example\n * ```typescript\n * import { SchmancyTheme } from '@schmancy/theme'\n *\n * // Access primary color variable\n * const primaryColor = SchmancyTheme.sys.color.primary.default\n * // Returns: 'var(--schmancy-sys-color-primary-default)'\n * ```\n */\nconst SchmancyTheme: TSchmancyTheme = {\n\t...ThemeDef,\n\tlocale: typeof navigator !== 'undefined' ? navigator.language : 'de-DE',\n}\n\nexport { SchmancyTheme }\n"],"mappings":"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"}
1
+ {"version":3,"file":"theme.interface-B-qxDsZQ.cjs","names":[],"sources":["../src/theme/theme.interface.ts"],"sourcesContent":["/**\n * Material Design 3 Theme Definition\n * Complete theme system following Material Design 3 specifications\n * @see https://m3.material.io/foundations/customization\n *\n * @internal\n */\nconst ThemeDef = {\n\tsys: {\n\t\t// M3 Color System - Complete tonal palette support\n\t\tcolor: {\n\t\t\t// Neutral colors\n\t\t\tscrim: 'var(--schmancy-sys-color-scrim)',\n\t\t\toutline: 'var(--schmancy-sys-color-outline)',\n\t\t\toutlineVariant: 'var(--schmancy-sys-color-outlineVariant)',\n\t\t\tshadow: 'var(--schmancy-sys-color-shadow)',\n\n\t\t\t// Surface colors with complete tonal values\n\t\t\tsurface: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-surface-default)',\n\t\t\t\tdim: 'var(--schmancy-sys-color-surface-dim)',\n\t\t\t\tbright: 'var(--schmancy-sys-color-surface-bright)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-surface-container)',\n\t\t\t\tcontainerLow: 'var(--schmancy-sys-color-surface-containerLow)',\n\t\t\t\tcontainerLowest: 'var(--schmancy-sys-color-surface-containerLowest)',\n\t\t\t\tcontainerHigh: 'var(--schmancy-sys-color-surface-containerHigh)',\n\t\t\t\tcontainerHighest: 'var(--schmancy-sys-color-surface-containerHighest)',\n\t\t\t\ton: 'var(--schmancy-sys-color-surface-on)',\n\t\t\t\tonVariant: 'var(--schmancy-sys-color-surface-onVariant)',\n\t\t\t\ttint: 'var(--schmancy-sys-color-surface-tint)',\n\t\t\t\t// Inverse colors\n\t\t\t\tinverse: 'var(--schmancy-sys-color-inverse-surface)',\n\t\t\t\tinverseOn: 'var(--schmancy-sys-color-inverse-onSurface)',\n\t\t\t\t// Deprecated mappings for backward compatibility\n\t\t\t\tlow: 'var(--schmancy-sys-color-surface-containerLow)',\n\t\t\t\thigh: 'var(--schmancy-sys-color-surface-containerHigh)',\n\t\t\t\thighest: 'var(--schmancy-sys-color-surface-containerHighest)',\n\t\t\t\tlowest: 'var(--schmancy-sys-color-surface-containerLowest)',\n\t\t\t},\n\n\t\t\t// Primary color roles with fixed variants\n\t\t\tprimary: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-primary-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-primary-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-primary-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-primary-onContainer)',\n\t\t\t\tfixed: 'var(--schmancy-sys-color-primary-fixed)',\n\t\t\t\tfixedDim: 'var(--schmancy-sys-color-primary-fixedDim)',\n\t\t\t\tonFixed: 'var(--schmancy-sys-color-primary-onFixed)',\n\t\t\t\tonFixedVariant: 'var(--schmancy-sys-color-primary-onFixedVariant)',\n\t\t\t\tinverse: 'var(--schmancy-sys-color-inverse-primary)',\n\t\t\t},\n\n\t\t\t// Secondary color roles with fixed variants\n\t\t\tsecondary: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-secondary-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-secondary-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-secondary-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-secondary-onContainer)',\n\t\t\t\tfixed: 'var(--schmancy-sys-color-secondary-fixed)',\n\t\t\t\tfixedDim: 'var(--schmancy-sys-color-secondary-fixedDim)',\n\t\t\t\tonFixed: 'var(--schmancy-sys-color-secondary-onFixed)',\n\t\t\t\tonFixedVariant: 'var(--schmancy-sys-color-secondary-onFixedVariant)',\n\t\t\t},\n\n\t\t\t// Tertiary color roles with fixed variants\n\t\t\ttertiary: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-tertiary-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-tertiary-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-tertiary-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-tertiary-onContainer)',\n\t\t\t\tfixed: 'var(--schmancy-sys-color-tertiary-fixed)',\n\t\t\t\tfixedDim: 'var(--schmancy-sys-color-tertiary-fixedDim)',\n\t\t\t\tonFixed: 'var(--schmancy-sys-color-tertiary-onFixed)',\n\t\t\t\tonFixedVariant: 'var(--schmancy-sys-color-tertiary-onFixedVariant)',\n\t\t\t},\n\n\t\t\t// Error color roles\n\t\t\terror: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-error-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-error-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-error-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-error-onContainer)',\n\t\t\t},\n\n\t\t\t// Extended color roles - Success\n\t\t\tsuccess: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-success-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-success-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-success-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-success-onContainer)',\n\t\t\t},\n\n\t\t\t// Extended color roles - Warning\n\t\t\twarning: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-warning-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-warning-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-warning-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-warning-onContainer)',\n\t\t\t},\n\n\t\t\t// Extended color roles - Info\n\t\t\tinfo: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-info-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-info-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-info-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-info-onContainer)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Typography System\n\t\ttypography: {\n\t\t\t// Display styles\n\t\t\tdisplay: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-display-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-display-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-display-small)',\n\t\t\t},\n\t\t\t// Headline styles\n\t\t\theadline: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-headline-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-headline-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-headline-small)',\n\t\t\t},\n\t\t\t// Title styles\n\t\t\ttitle: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-title-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-title-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-title-small)',\n\t\t\t},\n\t\t\t// Body styles\n\t\t\tbody: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-body-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-body-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-body-small)',\n\t\t\t},\n\t\t\t// Label styles\n\t\t\tlabel: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-label-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-label-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-label-small)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Shape System\n\t\tshape: {\n\t\t\tcorner: {\n\t\t\t\tnone: 'var(--schmancy-sys-shape-corner-none)',\n\t\t\t\textraSmall: 'var(--schmancy-sys-shape-corner-extraSmall)',\n\t\t\t\tsmall: 'var(--schmancy-sys-shape-corner-small)',\n\t\t\t\tmedium: 'var(--schmancy-sys-shape-corner-medium)',\n\t\t\t\tlarge: 'var(--schmancy-sys-shape-corner-large)',\n\t\t\t\textraLarge: 'var(--schmancy-sys-shape-corner-extraLarge)',\n\t\t\t\tfull: 'var(--schmancy-sys-shape-corner-full)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Elevation System with tinted shadows\n\t\televation: {\n\t\t\t0: 'var(--schmancy-sys-elevation-0)',\n\t\t\t1: 'var(--schmancy-sys-elevation-1)',\n\t\t\t2: 'var(--schmancy-sys-elevation-2)',\n\t\t\t3: 'var(--schmancy-sys-elevation-3)',\n\t\t\t4: 'var(--schmancy-sys-elevation-4)',\n\t\t\t5: 'var(--schmancy-sys-elevation-5)',\n\t\t},\n\n\t\t// M3 Motion System\n\t\tmotion: {\n\t\t\t// Easing tokens\n\t\t\teasing: {\n\t\t\t\temphasized: 'var(--schmancy-sys-motion-easing-emphasized)',\n\t\t\t\temphasizedDecelerate: 'var(--schmancy-sys-motion-easing-emphasized-decelerate)',\n\t\t\t\temphasizedAccelerate: 'var(--schmancy-sys-motion-easing-emphasized-accelerate)',\n\t\t\t\tstandard: 'var(--schmancy-sys-motion-easing-standard)',\n\t\t\t\tstandardDecelerate: 'var(--schmancy-sys-motion-easing-standard-decelerate)',\n\t\t\t\tstandardAccelerate: 'var(--schmancy-sys-motion-easing-standard-accelerate)',\n\t\t\t\tlegacy: 'var(--schmancy-sys-motion-easing-legacy)',\n\t\t\t\tlinear: 'var(--schmancy-sys-motion-easing-linear)',\n\t\t\t},\n\t\t\t// Duration tokens\n\t\t\tduration: {\n\t\t\t\tshort1: 'var(--schmancy-sys-motion-duration-short1)',\n\t\t\t\tshort2: 'var(--schmancy-sys-motion-duration-short2)',\n\t\t\t\tshort3: 'var(--schmancy-sys-motion-duration-short3)',\n\t\t\t\tshort4: 'var(--schmancy-sys-motion-duration-short4)',\n\t\t\t\tmedium1: 'var(--schmancy-sys-motion-duration-medium1)',\n\t\t\t\tmedium2: 'var(--schmancy-sys-motion-duration-medium2)',\n\t\t\t\tmedium3: 'var(--schmancy-sys-motion-duration-medium3)',\n\t\t\t\tmedium4: 'var(--schmancy-sys-motion-duration-medium4)',\n\t\t\t\tlong1: 'var(--schmancy-sys-motion-duration-long1)',\n\t\t\t\tlong2: 'var(--schmancy-sys-motion-duration-long2)',\n\t\t\t\tlong3: 'var(--schmancy-sys-motion-duration-long3)',\n\t\t\t\tlong4: 'var(--schmancy-sys-motion-duration-long4)',\n\t\t\t\textraLong1: 'var(--schmancy-sys-motion-duration-extraLong1)',\n\t\t\t\textraLong2: 'var(--schmancy-sys-motion-duration-extraLong2)',\n\t\t\t\textraLong3: 'var(--schmancy-sys-motion-duration-extraLong3)',\n\t\t\t\textraLong4: 'var(--schmancy-sys-motion-duration-extraLong4)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 State Layers\n\t\tstate: {\n\t\t\topacity: {\n\t\t\t\thover: 'var(--schmancy-sys-state-hover-opacity)',\n\t\t\t\tfocus: 'var(--schmancy-sys-state-focus-opacity)',\n\t\t\t\tpressed: 'var(--schmancy-sys-state-pressed-opacity)',\n\t\t\t\tdragged: 'var(--schmancy-sys-state-dragged-opacity)',\n\t\t\t\tdisabled: 'var(--schmancy-sys-state-disabled-opacity)',\n\t\t\t\tdisabledContainer: 'var(--schmancy-sys-state-disabled-container-opacity)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Spacing System\n\t\tspacing: {\n\t\t\t0: 'var(--schmancy-sys-spacing-0)',\n\t\t\t1: 'var(--schmancy-sys-spacing-1)',\n\t\t\t2: 'var(--schmancy-sys-spacing-2)',\n\t\t\t3: 'var(--schmancy-sys-spacing-3)',\n\t\t\t4: 'var(--schmancy-sys-spacing-4)',\n\t\t\t5: 'var(--schmancy-sys-spacing-5)',\n\t\t\t6: 'var(--schmancy-sys-spacing-6)',\n\t\t\t7: 'var(--schmancy-sys-spacing-7)',\n\t\t\t8: 'var(--schmancy-sys-spacing-8)',\n\t\t\t9: 'var(--schmancy-sys-spacing-9)',\n\t\t\t10: 'var(--schmancy-sys-spacing-10)',\n\t\t\t11: 'var(--schmancy-sys-spacing-11)',\n\t\t\t12: 'var(--schmancy-sys-spacing-12)',\n\t\t},\n\n\t\t// Legacy outline for backward compatibility\n\t\toutline: {\n\t\t\t1: 'var(--schmancy-sys-outline-1)',\n\t\t},\n\t},\n\n\t// Reference palette - complete tonal values\n\tref: {\n\t\tpalette: {\n\t\t\t// Primary tonal palette\n\t\t\tprimary: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-primary-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-primary-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-primary-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-primary-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-primary-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-primary-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-primary-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-primary-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-primary-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-primary-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-primary-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-primary-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-primary-100)',\n\t\t\t},\n\t\t\t// Secondary tonal palette\n\t\t\tsecondary: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-secondary-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-secondary-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-secondary-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-secondary-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-secondary-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-secondary-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-secondary-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-secondary-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-secondary-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-secondary-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-secondary-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-secondary-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-secondary-100)',\n\t\t\t},\n\t\t\t// Tertiary tonal palette\n\t\t\ttertiary: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-tertiary-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-tertiary-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-tertiary-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-tertiary-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-tertiary-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-tertiary-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-tertiary-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-tertiary-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-tertiary-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-tertiary-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-tertiary-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-tertiary-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-tertiary-100)',\n\t\t\t},\n\t\t\t// Neutral tonal palette\n\t\t\tneutral: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-neutral-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-neutral-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-neutral-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-neutral-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-neutral-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-neutral-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-neutral-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-neutral-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-neutral-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-neutral-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-neutral-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-neutral-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-neutral-100)',\n\t\t\t},\n\t\t\t// Neutral variant tonal palette\n\t\t\tneutralVariant: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-neutralVariant-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-neutralVariant-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-neutralVariant-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-neutralVariant-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-neutralVariant-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-neutralVariant-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-neutralVariant-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-neutralVariant-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-neutralVariant-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-neutralVariant-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-neutralVariant-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-neutralVariant-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-neutralVariant-100)',\n\t\t\t},\n\t\t\t// Error tonal palette\n\t\t\terror: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-error-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-error-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-error-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-error-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-error-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-error-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-error-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-error-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-error-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-error-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-error-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-error-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-error-100)',\n\t\t\t},\n\t\t},\n\t},\n}\nconst theme = {\n\ttheme: ThemeDef,\n}\n\n/**\n * Type definition for the Schmancy Material Design 3 theme configuration.\n * Complete theme system with colors, typography, shape, motion, and state layers.\n *\n * @typedef {Object} TSchmancyTheme\n *\n * @example\n * ```typescript\n * import type { TSchmancyTheme } from '@schmancy/theme'\n *\n * const myTheme: Partial<TSchmancyTheme> = {\n * sys: {\n * color: {\n * primary: {\n * default: '#6750A4',\n * container: '#EADDFF'\n * }\n * },\n * shape: {\n * corner: {\n * medium: '12px'\n * }\n * }\n * }\n * }\n * ```\n */\nexport type TSchmancyTheme = (typeof theme)[keyof typeof theme] & {\n\t/**\n\t * Locale for number/date formatting (BCP 47 language tag).\n\t * Defaults to navigator.language, can be overridden via schmancy-theme locale attribute.\n\t * @example \"de-DE\", \"en-US\", \"ar-SA\"\n\t */\n\tlocale: string\n}\n\n/**\n * Default Schmancy theme configuration object.\n * Provides access to all theme CSS variables through JavaScript.\n *\n * @constant {TSchmancyTheme}\n *\n * @example\n * ```typescript\n * import { SchmancyTheme } from '@schmancy/theme'\n *\n * // Access primary color variable\n * const primaryColor = SchmancyTheme.sys.color.primary.default\n * // Returns: 'var(--schmancy-sys-color-primary-default)'\n * ```\n */\nconst SchmancyTheme: TSchmancyTheme = {\n\t...ThemeDef,\n\tlocale: typeof navigator !== 'undefined' ? navigator.language : 'de-DE',\n}\n\nexport { SchmancyTheme }\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"theme.interface-odQEpZZH.js","names":[],"sources":["../src/theme/theme.interface.ts"],"sourcesContent":["/**\n * Material Design 3 Theme Definition\n * Complete theme system following Material Design 3 specifications\n * @see https://m3.material.io/foundations/customization\n *\n * @internal\n */\nconst ThemeDef = {\n\tsys: {\n\t\t// M3 Color System - Complete tonal palette support\n\t\tcolor: {\n\t\t\t// Neutral colors\n\t\t\tscrim: 'var(--schmancy-sys-color-scrim)',\n\t\t\toutline: 'var(--schmancy-sys-color-outline)',\n\t\t\toutlineVariant: 'var(--schmancy-sys-color-outlineVariant)',\n\t\t\tshadow: 'var(--schmancy-sys-color-shadow)',\n\n\t\t\t// Surface colors with complete tonal values\n\t\t\tsurface: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-surface-default)',\n\t\t\t\tdim: 'var(--schmancy-sys-color-surface-dim)',\n\t\t\t\tbright: 'var(--schmancy-sys-color-surface-bright)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-surface-container)',\n\t\t\t\tcontainerLow: 'var(--schmancy-sys-color-surface-containerLow)',\n\t\t\t\tcontainerLowest: 'var(--schmancy-sys-color-surface-containerLowest)',\n\t\t\t\tcontainerHigh: 'var(--schmancy-sys-color-surface-containerHigh)',\n\t\t\t\tcontainerHighest: 'var(--schmancy-sys-color-surface-containerHighest)',\n\t\t\t\ton: 'var(--schmancy-sys-color-surface-on)',\n\t\t\t\tonVariant: 'var(--schmancy-sys-color-surface-onVariant)',\n\t\t\t\ttint: 'var(--schmancy-sys-color-surface-tint)',\n\t\t\t\t// Inverse colors\n\t\t\t\tinverse: 'var(--schmancy-sys-color-inverse-surface)',\n\t\t\t\tinverseOn: 'var(--schmancy-sys-color-inverse-onSurface)',\n\t\t\t\t// Deprecated mappings for backward compatibility\n\t\t\t\tlow: 'var(--schmancy-sys-color-surface-containerLow)',\n\t\t\t\thigh: 'var(--schmancy-sys-color-surface-containerHigh)',\n\t\t\t\thighest: 'var(--schmancy-sys-color-surface-containerHighest)',\n\t\t\t\tlowest: 'var(--schmancy-sys-color-surface-containerLowest)',\n\t\t\t},\n\n\t\t\t// Primary color roles with fixed variants\n\t\t\tprimary: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-primary-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-primary-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-primary-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-primary-onContainer)',\n\t\t\t\tfixed: 'var(--schmancy-sys-color-primary-fixed)',\n\t\t\t\tfixedDim: 'var(--schmancy-sys-color-primary-fixedDim)',\n\t\t\t\tonFixed: 'var(--schmancy-sys-color-primary-onFixed)',\n\t\t\t\tonFixedVariant: 'var(--schmancy-sys-color-primary-onFixedVariant)',\n\t\t\t\tinverse: 'var(--schmancy-sys-color-inverse-primary)',\n\t\t\t},\n\n\t\t\t// Secondary color roles with fixed variants\n\t\t\tsecondary: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-secondary-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-secondary-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-secondary-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-secondary-onContainer)',\n\t\t\t\tfixed: 'var(--schmancy-sys-color-secondary-fixed)',\n\t\t\t\tfixedDim: 'var(--schmancy-sys-color-secondary-fixedDim)',\n\t\t\t\tonFixed: 'var(--schmancy-sys-color-secondary-onFixed)',\n\t\t\t\tonFixedVariant: 'var(--schmancy-sys-color-secondary-onFixedVariant)',\n\t\t\t},\n\n\t\t\t// Tertiary color roles with fixed variants\n\t\t\ttertiary: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-tertiary-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-tertiary-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-tertiary-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-tertiary-onContainer)',\n\t\t\t\tfixed: 'var(--schmancy-sys-color-tertiary-fixed)',\n\t\t\t\tfixedDim: 'var(--schmancy-sys-color-tertiary-fixedDim)',\n\t\t\t\tonFixed: 'var(--schmancy-sys-color-tertiary-onFixed)',\n\t\t\t\tonFixedVariant: 'var(--schmancy-sys-color-tertiary-onFixedVariant)',\n\t\t\t},\n\n\t\t\t// Error color roles\n\t\t\terror: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-error-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-error-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-error-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-error-onContainer)',\n\t\t\t},\n\n\t\t\t// Extended color roles - Success\n\t\t\tsuccess: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-success-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-success-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-success-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-success-onContainer)',\n\t\t\t},\n\n\t\t\t// Extended color roles - Warning\n\t\t\twarning: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-warning-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-warning-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-warning-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-warning-onContainer)',\n\t\t\t},\n\n\t\t\t// Extended color roles - Info\n\t\t\tinfo: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-info-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-info-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-info-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-info-onContainer)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Typography System\n\t\ttypography: {\n\t\t\t// Display styles\n\t\t\tdisplay: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-display-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-display-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-display-small)',\n\t\t\t},\n\t\t\t// Headline styles\n\t\t\theadline: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-headline-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-headline-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-headline-small)',\n\t\t\t},\n\t\t\t// Title styles\n\t\t\ttitle: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-title-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-title-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-title-small)',\n\t\t\t},\n\t\t\t// Body styles\n\t\t\tbody: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-body-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-body-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-body-small)',\n\t\t\t},\n\t\t\t// Label styles\n\t\t\tlabel: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-label-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-label-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-label-small)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Shape System\n\t\tshape: {\n\t\t\tcorner: {\n\t\t\t\tnone: 'var(--schmancy-sys-shape-corner-none)',\n\t\t\t\textraSmall: 'var(--schmancy-sys-shape-corner-extraSmall)',\n\t\t\t\tsmall: 'var(--schmancy-sys-shape-corner-small)',\n\t\t\t\tmedium: 'var(--schmancy-sys-shape-corner-medium)',\n\t\t\t\tlarge: 'var(--schmancy-sys-shape-corner-large)',\n\t\t\t\textraLarge: 'var(--schmancy-sys-shape-corner-extraLarge)',\n\t\t\t\tfull: 'var(--schmancy-sys-shape-corner-full)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Elevation System with tinted shadows\n\t\televation: {\n\t\t\t0: 'var(--schmancy-sys-elevation-0)',\n\t\t\t1: 'var(--schmancy-sys-elevation-1)',\n\t\t\t2: 'var(--schmancy-sys-elevation-2)',\n\t\t\t3: 'var(--schmancy-sys-elevation-3)',\n\t\t\t4: 'var(--schmancy-sys-elevation-4)',\n\t\t\t5: 'var(--schmancy-sys-elevation-5)',\n\t\t},\n\n\t\t// M3 Motion System\n\t\tmotion: {\n\t\t\t// Easing tokens\n\t\t\teasing: {\n\t\t\t\temphasized: 'var(--schmancy-sys-motion-easing-emphasized)',\n\t\t\t\temphasizedDecelerate: 'var(--schmancy-sys-motion-easing-emphasized-decelerate)',\n\t\t\t\temphasizedAccelerate: 'var(--schmancy-sys-motion-easing-emphasized-accelerate)',\n\t\t\t\tstandard: 'var(--schmancy-sys-motion-easing-standard)',\n\t\t\t\tstandardDecelerate: 'var(--schmancy-sys-motion-easing-standard-decelerate)',\n\t\t\t\tstandardAccelerate: 'var(--schmancy-sys-motion-easing-standard-accelerate)',\n\t\t\t\tlegacy: 'var(--schmancy-sys-motion-easing-legacy)',\n\t\t\t\tlinear: 'var(--schmancy-sys-motion-easing-linear)',\n\t\t\t},\n\t\t\t// Duration tokens\n\t\t\tduration: {\n\t\t\t\tshort1: 'var(--schmancy-sys-motion-duration-short1)',\n\t\t\t\tshort2: 'var(--schmancy-sys-motion-duration-short2)',\n\t\t\t\tshort3: 'var(--schmancy-sys-motion-duration-short3)',\n\t\t\t\tshort4: 'var(--schmancy-sys-motion-duration-short4)',\n\t\t\t\tmedium1: 'var(--schmancy-sys-motion-duration-medium1)',\n\t\t\t\tmedium2: 'var(--schmancy-sys-motion-duration-medium2)',\n\t\t\t\tmedium3: 'var(--schmancy-sys-motion-duration-medium3)',\n\t\t\t\tmedium4: 'var(--schmancy-sys-motion-duration-medium4)',\n\t\t\t\tlong1: 'var(--schmancy-sys-motion-duration-long1)',\n\t\t\t\tlong2: 'var(--schmancy-sys-motion-duration-long2)',\n\t\t\t\tlong3: 'var(--schmancy-sys-motion-duration-long3)',\n\t\t\t\tlong4: 'var(--schmancy-sys-motion-duration-long4)',\n\t\t\t\textraLong1: 'var(--schmancy-sys-motion-duration-extraLong1)',\n\t\t\t\textraLong2: 'var(--schmancy-sys-motion-duration-extraLong2)',\n\t\t\t\textraLong3: 'var(--schmancy-sys-motion-duration-extraLong3)',\n\t\t\t\textraLong4: 'var(--schmancy-sys-motion-duration-extraLong4)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 State Layers\n\t\tstate: {\n\t\t\topacity: {\n\t\t\t\thover: 'var(--schmancy-sys-state-hover-opacity)',\n\t\t\t\tfocus: 'var(--schmancy-sys-state-focus-opacity)',\n\t\t\t\tpressed: 'var(--schmancy-sys-state-pressed-opacity)',\n\t\t\t\tdragged: 'var(--schmancy-sys-state-dragged-opacity)',\n\t\t\t\tdisabled: 'var(--schmancy-sys-state-disabled-opacity)',\n\t\t\t\tdisabledContainer: 'var(--schmancy-sys-state-disabled-container-opacity)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Spacing System\n\t\tspacing: {\n\t\t\t0: 'var(--schmancy-sys-spacing-0)',\n\t\t\t1: 'var(--schmancy-sys-spacing-1)',\n\t\t\t2: 'var(--schmancy-sys-spacing-2)',\n\t\t\t3: 'var(--schmancy-sys-spacing-3)',\n\t\t\t4: 'var(--schmancy-sys-spacing-4)',\n\t\t\t5: 'var(--schmancy-sys-spacing-5)',\n\t\t\t6: 'var(--schmancy-sys-spacing-6)',\n\t\t\t7: 'var(--schmancy-sys-spacing-7)',\n\t\t\t8: 'var(--schmancy-sys-spacing-8)',\n\t\t\t9: 'var(--schmancy-sys-spacing-9)',\n\t\t\t10: 'var(--schmancy-sys-spacing-10)',\n\t\t\t11: 'var(--schmancy-sys-spacing-11)',\n\t\t\t12: 'var(--schmancy-sys-spacing-12)',\n\t\t},\n\n\t\t// Legacy outline for backward compatibility\n\t\toutline: {\n\t\t\t1: 'var(--schmancy-sys-outline-1)',\n\t\t},\n\t},\n\n\t// Reference palette - complete tonal values\n\tref: {\n\t\tpalette: {\n\t\t\t// Primary tonal palette\n\t\t\tprimary: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-primary-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-primary-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-primary-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-primary-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-primary-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-primary-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-primary-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-primary-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-primary-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-primary-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-primary-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-primary-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-primary-100)',\n\t\t\t},\n\t\t\t// Secondary tonal palette\n\t\t\tsecondary: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-secondary-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-secondary-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-secondary-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-secondary-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-secondary-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-secondary-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-secondary-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-secondary-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-secondary-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-secondary-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-secondary-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-secondary-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-secondary-100)',\n\t\t\t},\n\t\t\t// Tertiary tonal palette\n\t\t\ttertiary: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-tertiary-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-tertiary-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-tertiary-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-tertiary-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-tertiary-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-tertiary-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-tertiary-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-tertiary-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-tertiary-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-tertiary-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-tertiary-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-tertiary-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-tertiary-100)',\n\t\t\t},\n\t\t\t// Neutral tonal palette\n\t\t\tneutral: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-neutral-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-neutral-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-neutral-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-neutral-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-neutral-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-neutral-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-neutral-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-neutral-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-neutral-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-neutral-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-neutral-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-neutral-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-neutral-100)',\n\t\t\t},\n\t\t\t// Neutral variant tonal palette\n\t\t\tneutralVariant: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-neutralVariant-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-neutralVariant-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-neutralVariant-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-neutralVariant-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-neutralVariant-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-neutralVariant-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-neutralVariant-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-neutralVariant-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-neutralVariant-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-neutralVariant-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-neutralVariant-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-neutralVariant-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-neutralVariant-100)',\n\t\t\t},\n\t\t\t// Error tonal palette\n\t\t\terror: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-error-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-error-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-error-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-error-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-error-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-error-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-error-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-error-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-error-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-error-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-error-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-error-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-error-100)',\n\t\t\t},\n\t\t},\n\t},\n}\nconst theme = {\n\ttheme: ThemeDef,\n}\n\n/**\n * Type definition for the Schmancy Material Design 3 theme configuration.\n * Complete theme system with colors, typography, shape, motion, and state layers.\n *\n * @typedef {Object} TSchmancyTheme\n *\n * @example\n * ```typescript\n * import type { TSchmancyTheme } from '@schmancy/theme'\n *\n * const myTheme: Partial<TSchmancyTheme> = {\n * sys: {\n * color: {\n * primary: {\n * default: '#6750A4',\n * container: '#EADDFF'\n * }\n * },\n * shape: {\n * corner: {\n * medium: '12px'\n * }\n * }\n * }\n * }\n * ```\n */\nexport type TSchmancyTheme = (typeof theme)[keyof typeof theme] & {\n\t/**\n\t * Locale for number/date formatting (BCP 47 language tag).\n\t * Defaults to navigator.language, can be overridden via schmancy-theme locale attribute.\n\t * @example \"de-DE\", \"en-US\", \"ar-SA\"\n\t */\n\tlocale: string\n}\n\n/**\n * Default Schmancy theme configuration object.\n * Provides access to all theme CSS variables through JavaScript.\n *\n * @constant {TSchmancyTheme}\n *\n * @example\n * ```typescript\n * import { SchmancyTheme } from '@schmancy/theme'\n *\n * // Access primary color variable\n * const primaryColor = SchmancyTheme.sys.color.primary.default\n * // Returns: 'var(--schmancy-sys-color-primary-default)'\n * ```\n */\nconst SchmancyTheme: TSchmancyTheme = {\n\t...ThemeDef,\n\tlocale: typeof navigator !== 'undefined' ? navigator.language : 'de-DE',\n}\n\nexport { SchmancyTheme }\n"],"mappings":"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"}
1
+ {"version":3,"file":"theme.interface-B7caS5cg.js","names":[],"sources":["../src/theme/theme.interface.ts"],"sourcesContent":["/**\n * Material Design 3 Theme Definition\n * Complete theme system following Material Design 3 specifications\n * @see https://m3.material.io/foundations/customization\n *\n * @internal\n */\nconst ThemeDef = {\n\tsys: {\n\t\t// M3 Color System - Complete tonal palette support\n\t\tcolor: {\n\t\t\t// Neutral colors\n\t\t\tscrim: 'var(--schmancy-sys-color-scrim)',\n\t\t\toutline: 'var(--schmancy-sys-color-outline)',\n\t\t\toutlineVariant: 'var(--schmancy-sys-color-outlineVariant)',\n\t\t\tshadow: 'var(--schmancy-sys-color-shadow)',\n\n\t\t\t// Surface colors with complete tonal values\n\t\t\tsurface: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-surface-default)',\n\t\t\t\tdim: 'var(--schmancy-sys-color-surface-dim)',\n\t\t\t\tbright: 'var(--schmancy-sys-color-surface-bright)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-surface-container)',\n\t\t\t\tcontainerLow: 'var(--schmancy-sys-color-surface-containerLow)',\n\t\t\t\tcontainerLowest: 'var(--schmancy-sys-color-surface-containerLowest)',\n\t\t\t\tcontainerHigh: 'var(--schmancy-sys-color-surface-containerHigh)',\n\t\t\t\tcontainerHighest: 'var(--schmancy-sys-color-surface-containerHighest)',\n\t\t\t\ton: 'var(--schmancy-sys-color-surface-on)',\n\t\t\t\tonVariant: 'var(--schmancy-sys-color-surface-onVariant)',\n\t\t\t\ttint: 'var(--schmancy-sys-color-surface-tint)',\n\t\t\t\t// Inverse colors\n\t\t\t\tinverse: 'var(--schmancy-sys-color-inverse-surface)',\n\t\t\t\tinverseOn: 'var(--schmancy-sys-color-inverse-onSurface)',\n\t\t\t\t// Deprecated mappings for backward compatibility\n\t\t\t\tlow: 'var(--schmancy-sys-color-surface-containerLow)',\n\t\t\t\thigh: 'var(--schmancy-sys-color-surface-containerHigh)',\n\t\t\t\thighest: 'var(--schmancy-sys-color-surface-containerHighest)',\n\t\t\t\tlowest: 'var(--schmancy-sys-color-surface-containerLowest)',\n\t\t\t},\n\n\t\t\t// Primary color roles with fixed variants\n\t\t\tprimary: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-primary-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-primary-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-primary-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-primary-onContainer)',\n\t\t\t\tfixed: 'var(--schmancy-sys-color-primary-fixed)',\n\t\t\t\tfixedDim: 'var(--schmancy-sys-color-primary-fixedDim)',\n\t\t\t\tonFixed: 'var(--schmancy-sys-color-primary-onFixed)',\n\t\t\t\tonFixedVariant: 'var(--schmancy-sys-color-primary-onFixedVariant)',\n\t\t\t\tinverse: 'var(--schmancy-sys-color-inverse-primary)',\n\t\t\t},\n\n\t\t\t// Secondary color roles with fixed variants\n\t\t\tsecondary: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-secondary-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-secondary-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-secondary-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-secondary-onContainer)',\n\t\t\t\tfixed: 'var(--schmancy-sys-color-secondary-fixed)',\n\t\t\t\tfixedDim: 'var(--schmancy-sys-color-secondary-fixedDim)',\n\t\t\t\tonFixed: 'var(--schmancy-sys-color-secondary-onFixed)',\n\t\t\t\tonFixedVariant: 'var(--schmancy-sys-color-secondary-onFixedVariant)',\n\t\t\t},\n\n\t\t\t// Tertiary color roles with fixed variants\n\t\t\ttertiary: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-tertiary-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-tertiary-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-tertiary-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-tertiary-onContainer)',\n\t\t\t\tfixed: 'var(--schmancy-sys-color-tertiary-fixed)',\n\t\t\t\tfixedDim: 'var(--schmancy-sys-color-tertiary-fixedDim)',\n\t\t\t\tonFixed: 'var(--schmancy-sys-color-tertiary-onFixed)',\n\t\t\t\tonFixedVariant: 'var(--schmancy-sys-color-tertiary-onFixedVariant)',\n\t\t\t},\n\n\t\t\t// Error color roles\n\t\t\terror: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-error-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-error-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-error-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-error-onContainer)',\n\t\t\t},\n\n\t\t\t// Extended color roles - Success\n\t\t\tsuccess: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-success-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-success-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-success-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-success-onContainer)',\n\t\t\t},\n\n\t\t\t// Extended color roles - Warning\n\t\t\twarning: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-warning-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-warning-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-warning-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-warning-onContainer)',\n\t\t\t},\n\n\t\t\t// Extended color roles - Info\n\t\t\tinfo: {\n\t\t\t\tdefault: 'var(--schmancy-sys-color-info-default)',\n\t\t\t\ton: 'var(--schmancy-sys-color-info-on)',\n\t\t\t\tcontainer: 'var(--schmancy-sys-color-info-container)',\n\t\t\t\tonContainer: 'var(--schmancy-sys-color-info-onContainer)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Typography System\n\t\ttypography: {\n\t\t\t// Display styles\n\t\t\tdisplay: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-display-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-display-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-display-small)',\n\t\t\t},\n\t\t\t// Headline styles\n\t\t\theadline: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-headline-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-headline-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-headline-small)',\n\t\t\t},\n\t\t\t// Title styles\n\t\t\ttitle: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-title-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-title-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-title-small)',\n\t\t\t},\n\t\t\t// Body styles\n\t\t\tbody: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-body-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-body-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-body-small)',\n\t\t\t},\n\t\t\t// Label styles\n\t\t\tlabel: {\n\t\t\t\tlarge: 'var(--schmancy-sys-typescale-label-large)',\n\t\t\t\tmedium: 'var(--schmancy-sys-typescale-label-medium)',\n\t\t\t\tsmall: 'var(--schmancy-sys-typescale-label-small)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Shape System\n\t\tshape: {\n\t\t\tcorner: {\n\t\t\t\tnone: 'var(--schmancy-sys-shape-corner-none)',\n\t\t\t\textraSmall: 'var(--schmancy-sys-shape-corner-extraSmall)',\n\t\t\t\tsmall: 'var(--schmancy-sys-shape-corner-small)',\n\t\t\t\tmedium: 'var(--schmancy-sys-shape-corner-medium)',\n\t\t\t\tlarge: 'var(--schmancy-sys-shape-corner-large)',\n\t\t\t\textraLarge: 'var(--schmancy-sys-shape-corner-extraLarge)',\n\t\t\t\tfull: 'var(--schmancy-sys-shape-corner-full)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Elevation System with tinted shadows\n\t\televation: {\n\t\t\t0: 'var(--schmancy-sys-elevation-0)',\n\t\t\t1: 'var(--schmancy-sys-elevation-1)',\n\t\t\t2: 'var(--schmancy-sys-elevation-2)',\n\t\t\t3: 'var(--schmancy-sys-elevation-3)',\n\t\t\t4: 'var(--schmancy-sys-elevation-4)',\n\t\t\t5: 'var(--schmancy-sys-elevation-5)',\n\t\t},\n\n\t\t// M3 Motion System\n\t\tmotion: {\n\t\t\t// Easing tokens\n\t\t\teasing: {\n\t\t\t\temphasized: 'var(--schmancy-sys-motion-easing-emphasized)',\n\t\t\t\temphasizedDecelerate: 'var(--schmancy-sys-motion-easing-emphasized-decelerate)',\n\t\t\t\temphasizedAccelerate: 'var(--schmancy-sys-motion-easing-emphasized-accelerate)',\n\t\t\t\tstandard: 'var(--schmancy-sys-motion-easing-standard)',\n\t\t\t\tstandardDecelerate: 'var(--schmancy-sys-motion-easing-standard-decelerate)',\n\t\t\t\tstandardAccelerate: 'var(--schmancy-sys-motion-easing-standard-accelerate)',\n\t\t\t\tlegacy: 'var(--schmancy-sys-motion-easing-legacy)',\n\t\t\t\tlinear: 'var(--schmancy-sys-motion-easing-linear)',\n\t\t\t},\n\t\t\t// Duration tokens\n\t\t\tduration: {\n\t\t\t\tshort1: 'var(--schmancy-sys-motion-duration-short1)',\n\t\t\t\tshort2: 'var(--schmancy-sys-motion-duration-short2)',\n\t\t\t\tshort3: 'var(--schmancy-sys-motion-duration-short3)',\n\t\t\t\tshort4: 'var(--schmancy-sys-motion-duration-short4)',\n\t\t\t\tmedium1: 'var(--schmancy-sys-motion-duration-medium1)',\n\t\t\t\tmedium2: 'var(--schmancy-sys-motion-duration-medium2)',\n\t\t\t\tmedium3: 'var(--schmancy-sys-motion-duration-medium3)',\n\t\t\t\tmedium4: 'var(--schmancy-sys-motion-duration-medium4)',\n\t\t\t\tlong1: 'var(--schmancy-sys-motion-duration-long1)',\n\t\t\t\tlong2: 'var(--schmancy-sys-motion-duration-long2)',\n\t\t\t\tlong3: 'var(--schmancy-sys-motion-duration-long3)',\n\t\t\t\tlong4: 'var(--schmancy-sys-motion-duration-long4)',\n\t\t\t\textraLong1: 'var(--schmancy-sys-motion-duration-extraLong1)',\n\t\t\t\textraLong2: 'var(--schmancy-sys-motion-duration-extraLong2)',\n\t\t\t\textraLong3: 'var(--schmancy-sys-motion-duration-extraLong3)',\n\t\t\t\textraLong4: 'var(--schmancy-sys-motion-duration-extraLong4)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 State Layers\n\t\tstate: {\n\t\t\topacity: {\n\t\t\t\thover: 'var(--schmancy-sys-state-hover-opacity)',\n\t\t\t\tfocus: 'var(--schmancy-sys-state-focus-opacity)',\n\t\t\t\tpressed: 'var(--schmancy-sys-state-pressed-opacity)',\n\t\t\t\tdragged: 'var(--schmancy-sys-state-dragged-opacity)',\n\t\t\t\tdisabled: 'var(--schmancy-sys-state-disabled-opacity)',\n\t\t\t\tdisabledContainer: 'var(--schmancy-sys-state-disabled-container-opacity)',\n\t\t\t},\n\t\t},\n\n\t\t// M3 Spacing System\n\t\tspacing: {\n\t\t\t0: 'var(--schmancy-sys-spacing-0)',\n\t\t\t1: 'var(--schmancy-sys-spacing-1)',\n\t\t\t2: 'var(--schmancy-sys-spacing-2)',\n\t\t\t3: 'var(--schmancy-sys-spacing-3)',\n\t\t\t4: 'var(--schmancy-sys-spacing-4)',\n\t\t\t5: 'var(--schmancy-sys-spacing-5)',\n\t\t\t6: 'var(--schmancy-sys-spacing-6)',\n\t\t\t7: 'var(--schmancy-sys-spacing-7)',\n\t\t\t8: 'var(--schmancy-sys-spacing-8)',\n\t\t\t9: 'var(--schmancy-sys-spacing-9)',\n\t\t\t10: 'var(--schmancy-sys-spacing-10)',\n\t\t\t11: 'var(--schmancy-sys-spacing-11)',\n\t\t\t12: 'var(--schmancy-sys-spacing-12)',\n\t\t},\n\n\t\t// Legacy outline for backward compatibility\n\t\toutline: {\n\t\t\t1: 'var(--schmancy-sys-outline-1)',\n\t\t},\n\t},\n\n\t// Reference palette - complete tonal values\n\tref: {\n\t\tpalette: {\n\t\t\t// Primary tonal palette\n\t\t\tprimary: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-primary-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-primary-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-primary-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-primary-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-primary-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-primary-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-primary-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-primary-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-primary-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-primary-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-primary-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-primary-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-primary-100)',\n\t\t\t},\n\t\t\t// Secondary tonal palette\n\t\t\tsecondary: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-secondary-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-secondary-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-secondary-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-secondary-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-secondary-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-secondary-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-secondary-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-secondary-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-secondary-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-secondary-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-secondary-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-secondary-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-secondary-100)',\n\t\t\t},\n\t\t\t// Tertiary tonal palette\n\t\t\ttertiary: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-tertiary-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-tertiary-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-tertiary-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-tertiary-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-tertiary-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-tertiary-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-tertiary-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-tertiary-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-tertiary-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-tertiary-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-tertiary-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-tertiary-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-tertiary-100)',\n\t\t\t},\n\t\t\t// Neutral tonal palette\n\t\t\tneutral: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-neutral-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-neutral-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-neutral-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-neutral-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-neutral-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-neutral-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-neutral-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-neutral-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-neutral-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-neutral-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-neutral-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-neutral-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-neutral-100)',\n\t\t\t},\n\t\t\t// Neutral variant tonal palette\n\t\t\tneutralVariant: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-neutralVariant-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-neutralVariant-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-neutralVariant-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-neutralVariant-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-neutralVariant-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-neutralVariant-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-neutralVariant-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-neutralVariant-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-neutralVariant-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-neutralVariant-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-neutralVariant-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-neutralVariant-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-neutralVariant-100)',\n\t\t\t},\n\t\t\t// Error tonal palette\n\t\t\terror: {\n\t\t\t\t0: 'var(--schmancy-ref-palette-error-0)',\n\t\t\t\t10: 'var(--schmancy-ref-palette-error-10)',\n\t\t\t\t20: 'var(--schmancy-ref-palette-error-20)',\n\t\t\t\t30: 'var(--schmancy-ref-palette-error-30)',\n\t\t\t\t40: 'var(--schmancy-ref-palette-error-40)',\n\t\t\t\t50: 'var(--schmancy-ref-palette-error-50)',\n\t\t\t\t60: 'var(--schmancy-ref-palette-error-60)',\n\t\t\t\t70: 'var(--schmancy-ref-palette-error-70)',\n\t\t\t\t80: 'var(--schmancy-ref-palette-error-80)',\n\t\t\t\t90: 'var(--schmancy-ref-palette-error-90)',\n\t\t\t\t95: 'var(--schmancy-ref-palette-error-95)',\n\t\t\t\t99: 'var(--schmancy-ref-palette-error-99)',\n\t\t\t\t100: 'var(--schmancy-ref-palette-error-100)',\n\t\t\t},\n\t\t},\n\t},\n}\nconst theme = {\n\ttheme: ThemeDef,\n}\n\n/**\n * Type definition for the Schmancy Material Design 3 theme configuration.\n * Complete theme system with colors, typography, shape, motion, and state layers.\n *\n * @typedef {Object} TSchmancyTheme\n *\n * @example\n * ```typescript\n * import type { TSchmancyTheme } from '@schmancy/theme'\n *\n * const myTheme: Partial<TSchmancyTheme> = {\n * sys: {\n * color: {\n * primary: {\n * default: '#6750A4',\n * container: '#EADDFF'\n * }\n * },\n * shape: {\n * corner: {\n * medium: '12px'\n * }\n * }\n * }\n * }\n * ```\n */\nexport type TSchmancyTheme = (typeof theme)[keyof typeof theme] & {\n\t/**\n\t * Locale for number/date formatting (BCP 47 language tag).\n\t * Defaults to navigator.language, can be overridden via schmancy-theme locale attribute.\n\t * @example \"de-DE\", \"en-US\", \"ar-SA\"\n\t */\n\tlocale: string\n}\n\n/**\n * Default Schmancy theme configuration object.\n * Provides access to all theme CSS variables through JavaScript.\n *\n * @constant {TSchmancyTheme}\n *\n * @example\n * ```typescript\n * import { SchmancyTheme } from '@schmancy/theme'\n *\n * // Access primary color variable\n * const primaryColor = SchmancyTheme.sys.color.primary.default\n * // Returns: 'var(--schmancy-sys-color-primary-default)'\n * ```\n */\nconst SchmancyTheme: TSchmancyTheme = {\n\t...ThemeDef,\n\tlocale: typeof navigator !== 'undefined' ? navigator.language : 'de-DE',\n}\n\nexport { SchmancyTheme }\n"],"mappings":"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"}
package/dist/theme.js CHANGED
@@ -1,5 +1,5 @@
1
- import { d as e } from "./SchmancyElement-OG71FtNv.js";
2
- import { i as t, n, r, t as i } from "./theme.service-Dv_55nfE.js";
3
- import { t as a } from "./theme.interface-odQEpZZH.js";
4
- import { a as o, c as s, i as c, l, n as u, o as d, r as f, s as p, t as m } from "./theme-DwQBl6sr.js";
1
+ import { d as e } from "./SchmancyElement-Ob9yGkiG.js";
2
+ import { i as t, n, r, t as i } from "./theme.service-D94nm7Bf.js";
3
+ import { t as a } from "./theme.interface-B7caS5cg.js";
4
+ import { a as o, c as s, i as c, l, n as u, o as d, r as f, s as p, t as m } from "./theme-Dvm5J8nh.js";
5
5
  export { u as SchmancyGenerateMoodAudioEvent, a as SchmancyTheme, f as SchmancyThemeAudioPlayer, o as SchmancyThemeComponent, c as SchmancyThemeController, m as SchmancyThemeControllerBoat, r as ThemeHereIAm, t as ThemeWhereAreYou, p as createDarkTonalPaletteFromBaseColor, s as createLightTonalPaletteFromBaseColor, l as formatTheme, i as schmancyTheme, d as tailwindStyles, n as theme, e as themeContext };
@@ -1,4 +1,4 @@
1
- import { s as e } from "./state-DMd_FUeA.js";
1
+ import { s as e } from "./state-DBA_gzJO.js";
2
2
  import { BehaviorSubject as t, Observable as n, defaultIfEmpty as r, distinctUntilChanged as i, fromEvent as a, map as o, of as s, shareReplay as c, switchMap as l, takeUntil as u, tap as d, timer as f } from "rxjs";
3
3
  var p = "theme-where-are-you", m = "theme-here-i-am", h = e("schmancy/theme").local({
4
4
  scheme: "auto",
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.service-D94nm7Bf.js","names":["#theme$","#themeComponent$","#fullscreen$","#bottomOffset$"],"sources":["../src/theme/theme.events.ts","../src/theme/theme.service.ts"],"sourcesContent":["/**\n * Theme discovery event system.\n *\n * These events facilitate communication between theme components and consumers,\n * allowing components to discover the nearest theme provider in the DOM hierarchy.\n */\n\n/**\n * Event dispatched by components to discover the nearest theme provider.\n * Theme components listen for this event and respond with ThemeHereIAmEvent.\n *\n * @event ThemeWhereAreYouEvent\n * @type {CustomEvent<void>}\n *\n * @example\n * ```typescript\n * // Dispatch discovery request\n * window.dispatchEvent(\n * new CustomEvent('theme-where-are-you', {\n * bubbles: true,\n * composed: true\n * })\n * )\n * ```\n */\nexport type ThemeWhereAreYouEvent = CustomEvent<void>\n\n/**\n * Event name constant for theme discovery request.\n * @const {string}\n */\nexport const ThemeWhereAreYou = 'theme-where-are-you'\n\n/**\n * Event dispatched by theme components in response to discovery requests.\n * Contains reference to the theme component element.\n *\n * @event ThemeHereIAmEvent\n * @type {CustomEvent<{theme: HTMLElement}>}\n * @property {HTMLElement} detail.theme - The theme component element\n *\n * @example\n * ```typescript\n * // Listen for theme response\n * window.addEventListener('theme-here-i-am', (event: ThemeHereIAmEvent) => {\n * const themeComponent = event.detail.theme\n * console.log('Found theme component:', themeComponent)\n * })\n * ```\n */\nexport type ThemeHereIAmEvent = CustomEvent<{\n\ttheme: HTMLElement\n}>\n\n/**\n * Event name constant for theme discovery response.\n * @const {string}\n */\nexport const ThemeHereIAm = 'theme-here-i-am'\n","import {\n\tBehaviorSubject,\n\tObservable,\n\tfromEvent,\n\ttimer,\n\tmap,\n\ttakeUntil,\n\tdefaultIfEmpty,\n\tdistinctUntilChanged,\n\tshareReplay,\n\ttap,\n\tswitchMap,\n\tof,\n} from 'rxjs'\nimport { ThemeHereIAm, ThemeHereIAmEvent, ThemeWhereAreYou } from './theme.events'\nimport type { SchmancyThemeComponent } from './theme.component'\nimport type { TSchmancyTheme } from './theme.interface'\nimport { state } from '../state'\n\ninterface ThemeSettings {\n\tscheme: 'dark' | 'light' | 'auto'\n\tcolor: string\n}\n\n// Theme settings — persists to localStorage under namespace `schmancy/theme`.\nconst ThemeContext = state<ThemeSettings>('schmancy/theme').local({\n\tscheme: 'auto',\n\tcolor: '#6200ee',\n})\n\n/**\n * Theme Service - Provides centralized theme management for Schmancy components.\n *\n * This service acts as a singleton interface to interact with the theme system,\n * providing reactive observables for theme state and methods to control theming.\n *\n * @example\n * ```typescript\n * import { theme } from '@schmancy/theme'\n *\n * // Subscribe to theme changes\n * theme.scheme$.subscribe(scheme => {\n * console.log('Current scheme:', scheme) // 'light' | 'dark' | 'auto'\n * })\n *\n * // Get current values synchronously\n * const currentScheme = theme.scheme\n * const currentColor = theme.color\n *\n * // Toggle between light and dark mode\n * theme.toggleScheme()\n *\n * // Set specific scheme\n * theme.setScheme('dark')\n *\n * // Check if dark mode is active\n * theme.isDarkMode().subscribe(isDark => {\n * console.log('Is dark mode:', isDark)\n * })\n * ```\n */\nclass ThemeService {\n\tprivate static instance: ThemeService\n\n\t// Observable properties for theme values\n\t#theme$ = new BehaviorSubject<Partial<TSchmancyTheme>>({})\n\t#themeComponent$ = new BehaviorSubject<SchmancyThemeComponent | null>(null)\n\t#fullscreen$ = new BehaviorSubject<boolean>(false)\n\t#bottomOffset$ = new BehaviorSubject<number>(0)\n\n\t// Public observables derived from context\n\tpublic readonly scheme$ = ThemeContext.$.pipe(\n\t\tmap(settings => settings.scheme),\n\t\tdistinctUntilChanged(),\n\t\tshareReplay(1),\n\t)\n\n\tpublic readonly color$ = ThemeContext.$.pipe(\n\t\tmap(settings => settings.color),\n\t\tdistinctUntilChanged(),\n\t\tshareReplay(1),\n\t)\n\n\tpublic readonly theme$ = this.#theme$.asObservable().pipe(\n\t\tdistinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n\t\tshareReplay(1),\n\t)\n\n\tpublic readonly themeComponent$ = this.#themeComponent$.asObservable().pipe(distinctUntilChanged(), shareReplay(1))\n\n\tpublic readonly fullscreen$ = this.#fullscreen$.asObservable().pipe(distinctUntilChanged(), shareReplay(1))\n\n\tpublic readonly bottomOffset$ = this.#bottomOffset$.asObservable().pipe(distinctUntilChanged(), shareReplay(1))\n\n\t// Getters for synchronous access to current values\n\tget scheme(): 'dark' | 'light' | 'auto' {\n\t\treturn ThemeContext.value.scheme\n\t}\n\n\tget color(): string {\n\t\treturn ThemeContext.value.color\n\t}\n\n\tget theme(): Partial<TSchmancyTheme> {\n\t\treturn this.#theme$.getValue()\n\t}\n\n\tget themeComponent(): SchmancyThemeComponent | null {\n\t\treturn this.#themeComponent$.getValue()\n\t}\n\n\tget fullscreen(): boolean {\n\t\treturn this.#fullscreen$.getValue()\n\t}\n\n\tget bottomOffset(): number {\n\t\treturn this.#bottomOffset$.getValue()\n\t}\n\n\t// Computed observable for actual scheme (resolving 'auto')\n\tpublic readonly resolvedScheme$ = this.scheme$.pipe(\n\t\tswitchMap(scheme => {\n\t\t\tif (scheme === 'auto') {\n\t\t\t\t// Listen to system preference changes\n\t\t\t\tconst mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n\t\t\t\treturn new Observable<'dark' | 'light'>(subscriber => {\n\t\t\t\t\tconst handler = (e: MediaQueryListEvent) => {\n\t\t\t\t\t\tsubscriber.next(e.matches ? 'dark' : 'light')\n\t\t\t\t\t}\n\t\t\t\t\tmediaQuery.addEventListener('change', handler)\n\n\t\t\t\t\t// Emit initial value\n\t\t\t\t\tsubscriber.next(mediaQuery.matches ? 'dark' : 'light')\n\n\t\t\t\t\t// Cleanup\n\t\t\t\t\treturn () => mediaQuery.removeEventListener('change', handler)\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn of(scheme as 'dark' | 'light')\n\t\t}),\n\t\tdistinctUntilChanged(),\n\t\tshareReplay(1),\n\t)\n\n\tconstructor() {\n\t\tthis.discoverTheme()\n\t}\n\n\t/**\n\t * Discover the nearest theme component in the DOM.\n\t * This method can be called to refresh the theme discovery process.\n\t *\n\t * @returns {Observable<SchmancyThemeComponent | null>} Observable that emits the discovered theme component or null\n\t *\n\t * @example\n\t * ```typescript\n\t * theme.discoverTheme().subscribe(component => {\n\t * if (component) {\n\t * console.log('Theme component found:', component)\n\t * } else {\n\t * console.log('No theme component found')\n\t * }\n\t * })\n\t * ```\n\t */\n\tpublic discoverTheme(): Observable<SchmancyThemeComponent | null> {\n\t\t// Dispatch discovery event and wait for response\n\t\treturn fromEvent<ThemeHereIAmEvent>(window, ThemeHereIAm)\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(timer(100)), // Wait up to 100ms for response\n\t\t\t\tmap(e => e.detail.theme as SchmancyThemeComponent),\n\t\t\t\tdefaultIfEmpty(null),\n\t\t\t\ttap(themeComponent => {\n\t\t\t\t\tif (themeComponent) {\n\t\t\t\t\t\tthis.registerThemeComponent(themeComponent)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.pipe(\n\t\t\t\ttap(() => {\n\t\t\t\t\t// Trigger theme discovery\n\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\tnew CustomEvent(ThemeWhereAreYou, {\n\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tswitchMap(() =>\n\t\t\t\t\tfromEvent<ThemeHereIAmEvent>(window, ThemeHereIAm).pipe(\n\t\t\t\t\t\ttakeUntil(timer(100)),\n\t\t\t\t\t\tmap(e => e.detail.theme as SchmancyThemeComponent),\n\t\t\t\t\t\tdefaultIfEmpty(null),\n\t\t\t\t\t\ttap(themeComponent => {\n\t\t\t\t\t\t\tif (themeComponent) {\n\t\t\t\t\t\t\t\tthis.registerThemeComponent(themeComponent)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t)\n\t}\n\n\t/**\n\t * Register a theme component and subscribe to its changes.\n\t * This is typically called internally by theme components when they mount or update.\n\t *\n\t * @param {SchmancyThemeComponent} component - The theme component to register\n\t *\n\t * @internal\n\t */\n\tpublic registerThemeComponent(component: SchmancyThemeComponent): void {\n\t\tthis.#themeComponent$.next(component)\n\n\t\t// Update values from the component\n\t\tThemeContext.set({ scheme: component.scheme, color: component.color })\n\t\tthis.#theme$.next(component.theme)\n\t}\n\n\t/**\n\t * Update theme values. Usually called internally by theme components.\n\t *\n\t * @param {Object} values - Theme values to update\n\t * @param {'dark' | 'light' | 'auto'} [values.scheme] - Color scheme to set\n\t * @param {string} [values.color] - Primary color in hex format\n\t * @param {Partial<TSchmancyTheme>} [values.theme] - Theme configuration object\n\t *\n\t * @internal\n\t */\n\tpublic updateTheme(values: {\n\t\tscheme?: 'dark' | 'light' | 'auto'\n\t\tcolor?: string\n\t\ttheme?: Partial<TSchmancyTheme>\n\t}): void {\n\t\tconst updates: Partial<ThemeSettings> = {}\n\t\tif (values.scheme !== undefined) {\n\t\t\tupdates.scheme = values.scheme\n\t\t}\n\t\tif (values.color !== undefined) {\n\t\t\tupdates.color = values.color\n\t\t}\n\t\tif (Object.keys(updates).length > 0) {\n\t\t\tThemeContext.set(updates)\n\t\t}\n\t\tif (values.theme !== undefined) {\n\t\t\tthis.#theme$.next(values.theme)\n\t\t}\n\t}\n\n\t/**\n\t * Set the color scheme for the application.\n\t *\n\t * @param {'dark' | 'light' | 'auto'} scheme - The color scheme to set\n\t *\n\t * @example\n\t * ```typescript\n\t * // Set to dark mode\n\t * theme.setScheme('dark')\n\t *\n\t * // Set to auto (follows system preference)\n\t * theme.setScheme('auto')\n\t * ```\n\t */\n\tpublic setScheme(scheme: 'dark' | 'light' | 'auto'): void {\n\t\tconst component = this.themeComponent\n\t\tif (component) {\n\t\t\tcomponent.scheme = scheme\n\t\t\tThemeContext.set({ scheme })\n\t\t} else {\n\t\t\tconsole.warn('No theme component found. Scheme change may not persist.')\n\t\t\tThemeContext.set({ scheme })\n\t\t}\n\t}\n\n\t/**\n\t * Set the primary color for the theme.\n\t *\n\t * @param {string} color - Primary color in hex format (e.g., '#6200ee')\n\t *\n\t * @example\n\t * ```typescript\n\t * // Set primary color to purple\n\t * theme.setColor('#6200ee')\n\t *\n\t * // Set primary color to blue\n\t * theme.setColor('#2196f3')\n\t * ```\n\t */\n\tpublic setColor(color: string): void {\n\t\tconst component = this.themeComponent\n\t\tif (component) {\n\t\t\tcomponent.color = color\n\t\t\tThemeContext.set({ color })\n\t\t} else {\n\t\t\tconsole.warn('No theme component found. Color change may not persist.')\n\t\t\tThemeContext.set({ color })\n\t\t}\n\t}\n\n\t/**\n\t * Check if dark mode is currently active.\n\t * This resolves 'auto' scheme to the actual value based on system preference.\n\t *\n\t * @returns {Observable<boolean>} Observable that emits true if dark mode is active, false otherwise\n\t *\n\t * @example\n\t * ```typescript\n\t * theme.isDarkMode().subscribe(isDark => {\n\t * if (isDark) {\n\t * console.log('Dark mode is active')\n\t * } else {\n\t * console.log('Light mode is active')\n\t * }\n\t * })\n\t * ```\n\t */\n\tpublic isDarkMode(): Observable<boolean> {\n\t\treturn this.resolvedScheme$.pipe(map(scheme => scheme === 'dark'))\n\t}\n\n\t/**\n\t * Toggle between light and dark mode.\n\t * If currently in 'auto' mode, defaults to 'light'.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Toggle theme on button click\n\t * button.addEventListener('click', () => {\n\t * theme.toggleScheme()\n\t * })\n\t * ```\n\t */\n\tpublic toggleScheme(): void {\n\t\tconst currentScheme = this.scheme\n\t\tconst newScheme = currentScheme === 'dark' ? 'light' : currentScheme === 'light' ? 'dark' : 'light' // If 'auto', default to 'light'\n\t\tthis.setScheme(newScheme)\n\t}\n\n\t/**\n\t * Get the current value of a CSS variable from the theme.\n\t *\n\t * @param {string} variableName - Name of the CSS variable (without '--schmancy-' prefix)\n\t * @returns {string} The CSS variable value or empty string if not found\n\t *\n\t * @example\n\t * ```typescript\n\t * // Get primary color variable\n\t * const primaryColor = theme.getCSSVariable('color-primary')\n\t *\n\t * // Get surface color\n\t * const surfaceColor = theme.getCSSVariable('color-surface')\n\t * ```\n\t */\n\tpublic getCSSVariable(variableName: string): string {\n\t\tconst component = this.themeComponent\n\t\tif (component) {\n\t\t\tconst host = component.root ? document.body : (component.shadowRoot?.host as HTMLElement)\n\t\t\tif (host) {\n\t\t\t\treturn getComputedStyle(host).getPropertyValue(`--schmancy-${variableName}`).trim()\n\t\t\t}\n\t\t}\n\t\treturn ''\n\t}\n\n\t/**\n\t * Subscribe to changes of a specific CSS variable.\n\t *\n\t * @param {string} variableName - Name of the CSS variable to watch (without '--schmancy-' prefix)\n\t * @returns {Observable<string>} Observable that emits the CSS variable value when it changes\n\t *\n\t * @example\n\t * ```typescript\n\t * // Watch for primary color changes\n\t * theme.watchCSSVariable('color-primary').subscribe(color => {\n\t * console.log('Primary color changed to:', color)\n\t * })\n\t *\n\t * // Watch for surface color changes\n\t * theme.watchCSSVariable('color-surface').subscribe(color => {\n\t * console.log('Surface color changed to:', color)\n\t * })\n\t * ```\n\t */\n\tpublic watchCSSVariable(variableName: string): Observable<string> {\n\t\treturn this.theme$.pipe(\n\t\t\tmap(() => this.getCSSVariable(variableName)),\n\t\t\tdistinctUntilChanged(),\n\t\t)\n\t}\n\n\t/**\n\t * Set the fullscreen state for the application.\n\t * This emits a custom event that navigation components can listen to.\n\t *\n\t * @param {boolean} value - Whether fullscreen mode is active\n\t *\n\t * @example\n\t * ```typescript\n\t * // Enter fullscreen mode\n\t * theme.setFullscreen(true)\n\t *\n\t * // Exit fullscreen mode\n\t * theme.setFullscreen(false)\n\t * ```\n\t */\n\tpublic setFullscreen(value: boolean): void {\n\t\tthis.#fullscreen$.next(value)\n\n\t\t// Emit custom event for components to listen to\n\t\twindow.dispatchEvent(\n\t\t\tnew CustomEvent('fullscreen', {\n\t\t\t\tdetail: value,\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\t/**\n\t * Toggle fullscreen mode.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Toggle fullscreen mode on button click\n\t * button.addEventListener('click', () => {\n\t * theme.toggleFullscreen()\n\t * })\n\t * ```\n\t */\n\tpublic toggleFullscreen(): void {\n\t\tthis.setFullscreen(!this.fullscreen)\n\t}\n\n\t/**\n\t * Set the bottom offset for viewport calculations.\n\t * Used by navigation bars to inform fullHeight directive of reserved space.\n\t *\n\t * @param {number} value - Bottom offset in pixels\n\t *\n\t * @example\n\t * ```typescript\n\t * // Set bottom offset when nav bar is visible\n\t * theme.setBottomOffset(80)\n\t *\n\t * // Clear bottom offset when nav bar is hidden\n\t * theme.setBottomOffset(0)\n\t * ```\n\t */\n\tpublic setBottomOffset(value: number): void {\n\t\tthis.#bottomOffset$.next(value)\n\t}\n\n\t/**\n\t * Convenience method to update theme state including fullscreen.\n\t * Can be called with next() like syntax for familiarity.\n\t *\n\t * @param {Object} values - Theme values to update\n\t * @param {boolean} [values.fullscreen] - Fullscreen state\n\t * @param {'dark' | 'light' | 'auto'} [values.scheme] - Color scheme\n\t * @param {string} [values.color] - Primary color\n\t *\n\t * @example\n\t * ```typescript\n\t * // Set fullscreen mode\n\t * theme.next({ fullscreen: true })\n\t *\n\t * // Update multiple values\n\t * theme.next({\n\t * fullscreen: true,\n\t * scheme: 'dark'\n\t * })\n\t * ```\n\t */\n\tpublic next(values: { fullscreen?: boolean; scheme?: 'dark' | 'light' | 'auto'; color?: string }): void {\n\t\tif (values.fullscreen !== undefined) {\n\t\t\tthis.setFullscreen(values.fullscreen)\n\t\t}\n\t\tif (values.scheme !== undefined) {\n\t\t\tthis.setScheme(values.scheme)\n\t\t}\n\t\tif (values.color !== undefined) {\n\t\t\tthis.setColor(values.color)\n\t\t}\n\t}\n\n\t/**\n\t * Get the singleton instance of ThemeService.\n\t *\n\t * @returns {ThemeService} The singleton ThemeService instance\n\t *\n\t * @internal\n\t */\n\tstatic getInstance(): ThemeService {\n\t\tif (!ThemeService.instance) {\n\t\t\tThemeService.instance = new ThemeService()\n\t\t}\n\t\treturn ThemeService.instance\n\t}\n}\n\n/**\n * Theme singleton. Reads and mutates the active theme (scheme, source color,\n * locale); persists the user's scheme choice. Components subscribe via\n * `theme.theme$` for changes.\n *\n * @service\n * @summary Theme service — active scheme, source color, locale.\n * @method next({ scheme?, source?, locale? }) - Update theme state.\n * @method theme$ - Observable<TSchmancyTheme>; emits on every theme change.\n * @method toggle() - Toggle between light and dark schemes.\n */\nexport const theme = ThemeService.getInstance()\nexport const schmancyTheme = theme // Alias for convenience\nexport default theme\n"],"mappings":"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"}
@@ -1 +1 @@
1
- require(`./chunk-CncqDLb2.cjs`);const e=require(`./state-CumAEPQH.cjs`);let t=require(`rxjs`);var n=`theme-where-are-you`,r=`theme-here-i-am`,i=e.a(`schmancy/theme`).local({scheme:`auto`,color:`#6200ee`}),a=class e{#e;#t;#n;#r;get scheme(){return i.value.scheme}get color(){return i.value.color}get theme(){return this.#e.getValue()}get themeComponent(){return this.#t.getValue()}get fullscreen(){return this.#n.getValue()}get bottomOffset(){return this.#r.getValue()}constructor(){this.#e=new t.BehaviorSubject({}),this.#t=new t.BehaviorSubject(null),this.#n=new t.BehaviorSubject(!1),this.#r=new t.BehaviorSubject(0),this.scheme$=i.$.pipe((0,t.map)(e=>e.scheme),(0,t.distinctUntilChanged)(),(0,t.shareReplay)(1)),this.color$=i.$.pipe((0,t.map)(e=>e.color),(0,t.distinctUntilChanged)(),(0,t.shareReplay)(1)),this.theme$=this.#e.asObservable().pipe((0,t.distinctUntilChanged)((e,t)=>JSON.stringify(e)===JSON.stringify(t)),(0,t.shareReplay)(1)),this.themeComponent$=this.#t.asObservable().pipe((0,t.distinctUntilChanged)(),(0,t.shareReplay)(1)),this.fullscreen$=this.#n.asObservable().pipe((0,t.distinctUntilChanged)(),(0,t.shareReplay)(1)),this.bottomOffset$=this.#r.asObservable().pipe((0,t.distinctUntilChanged)(),(0,t.shareReplay)(1)),this.resolvedScheme$=this.scheme$.pipe((0,t.switchMap)(e=>{if(e===`auto`){let e=window.matchMedia(`(prefers-color-scheme: dark)`);return new t.Observable(t=>{let n=e=>{t.next(e.matches?`dark`:`light`)};return e.addEventListener(`change`,n),t.next(e.matches?`dark`:`light`),()=>e.removeEventListener(`change`,n)})}return(0,t.of)(e)}),(0,t.distinctUntilChanged)(),(0,t.shareReplay)(1)),this.discoverTheme()}discoverTheme(){return(0,t.fromEvent)(window,r).pipe((0,t.takeUntil)((0,t.timer)(100)),(0,t.map)(e=>e.detail.theme),(0,t.defaultIfEmpty)(null),(0,t.tap)(e=>{e&&this.registerThemeComponent(e)})).pipe((0,t.tap)(()=>{window.dispatchEvent(new CustomEvent(n,{bubbles:!0,composed:!0}))}),(0,t.switchMap)(()=>(0,t.fromEvent)(window,r).pipe((0,t.takeUntil)((0,t.timer)(100)),(0,t.map)(e=>e.detail.theme),(0,t.defaultIfEmpty)(null),(0,t.tap)(e=>{e&&this.registerThemeComponent(e)}))))}registerThemeComponent(e){this.#t.next(e),i.set({scheme:e.scheme,color:e.color}),this.#e.next(e.theme)}updateTheme(e){let t={};e.scheme!==void 0&&(t.scheme=e.scheme),e.color!==void 0&&(t.color=e.color),Object.keys(t).length>0&&i.set(t),e.theme!==void 0&&this.#e.next(e.theme)}setScheme(e){let t=this.themeComponent;t&&(t.scheme=e),i.set({scheme:e})}setColor(e){let t=this.themeComponent;t&&(t.color=e),i.set({color:e})}isDarkMode(){return this.resolvedScheme$.pipe((0,t.map)(e=>e===`dark`))}toggleScheme(){let e=this.scheme,t=e===`dark`?`light`:e===`light`?`dark`:`light`;this.setScheme(t)}getCSSVariable(e){let t=this.themeComponent;if(t){let n=t.root?document.body:t.shadowRoot?.host;if(n)return getComputedStyle(n).getPropertyValue(`--schmancy-${e}`).trim()}return``}watchCSSVariable(e){return this.theme$.pipe((0,t.map)(()=>this.getCSSVariable(e)),(0,t.distinctUntilChanged)())}setFullscreen(e){this.#n.next(e),window.dispatchEvent(new CustomEvent(`fullscreen`,{detail:e,bubbles:!0,composed:!0}))}toggleFullscreen(){this.setFullscreen(!this.fullscreen)}setBottomOffset(e){this.#r.next(e)}next(e){e.fullscreen!==void 0&&this.setFullscreen(e.fullscreen),e.scheme!==void 0&&this.setScheme(e.scheme),e.color!==void 0&&this.setColor(e.color)}static getInstance(){return e.instance||=new e,e.instance}}.getInstance(),o=a;Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}});
1
+ require(`./chunk-CncqDLb2.cjs`);const e=require(`./state-BWQiqN6I.cjs`);let t=require(`rxjs`);var n=`theme-where-are-you`,r=`theme-here-i-am`,i=e.a(`schmancy/theme`).local({scheme:`auto`,color:`#6200ee`}),a=class e{#e;#t;#n;#r;get scheme(){return i.value.scheme}get color(){return i.value.color}get theme(){return this.#e.getValue()}get themeComponent(){return this.#t.getValue()}get fullscreen(){return this.#n.getValue()}get bottomOffset(){return this.#r.getValue()}constructor(){this.#e=new t.BehaviorSubject({}),this.#t=new t.BehaviorSubject(null),this.#n=new t.BehaviorSubject(!1),this.#r=new t.BehaviorSubject(0),this.scheme$=i.$.pipe((0,t.map)(e=>e.scheme),(0,t.distinctUntilChanged)(),(0,t.shareReplay)(1)),this.color$=i.$.pipe((0,t.map)(e=>e.color),(0,t.distinctUntilChanged)(),(0,t.shareReplay)(1)),this.theme$=this.#e.asObservable().pipe((0,t.distinctUntilChanged)((e,t)=>JSON.stringify(e)===JSON.stringify(t)),(0,t.shareReplay)(1)),this.themeComponent$=this.#t.asObservable().pipe((0,t.distinctUntilChanged)(),(0,t.shareReplay)(1)),this.fullscreen$=this.#n.asObservable().pipe((0,t.distinctUntilChanged)(),(0,t.shareReplay)(1)),this.bottomOffset$=this.#r.asObservable().pipe((0,t.distinctUntilChanged)(),(0,t.shareReplay)(1)),this.resolvedScheme$=this.scheme$.pipe((0,t.switchMap)(e=>{if(e===`auto`){let e=window.matchMedia(`(prefers-color-scheme: dark)`);return new t.Observable(t=>{let n=e=>{t.next(e.matches?`dark`:`light`)};return e.addEventListener(`change`,n),t.next(e.matches?`dark`:`light`),()=>e.removeEventListener(`change`,n)})}return(0,t.of)(e)}),(0,t.distinctUntilChanged)(),(0,t.shareReplay)(1)),this.discoverTheme()}discoverTheme(){return(0,t.fromEvent)(window,r).pipe((0,t.takeUntil)((0,t.timer)(100)),(0,t.map)(e=>e.detail.theme),(0,t.defaultIfEmpty)(null),(0,t.tap)(e=>{e&&this.registerThemeComponent(e)})).pipe((0,t.tap)(()=>{window.dispatchEvent(new CustomEvent(n,{bubbles:!0,composed:!0}))}),(0,t.switchMap)(()=>(0,t.fromEvent)(window,r).pipe((0,t.takeUntil)((0,t.timer)(100)),(0,t.map)(e=>e.detail.theme),(0,t.defaultIfEmpty)(null),(0,t.tap)(e=>{e&&this.registerThemeComponent(e)}))))}registerThemeComponent(e){this.#t.next(e),i.set({scheme:e.scheme,color:e.color}),this.#e.next(e.theme)}updateTheme(e){let t={};e.scheme!==void 0&&(t.scheme=e.scheme),e.color!==void 0&&(t.color=e.color),Object.keys(t).length>0&&i.set(t),e.theme!==void 0&&this.#e.next(e.theme)}setScheme(e){let t=this.themeComponent;t&&(t.scheme=e),i.set({scheme:e})}setColor(e){let t=this.themeComponent;t&&(t.color=e),i.set({color:e})}isDarkMode(){return this.resolvedScheme$.pipe((0,t.map)(e=>e===`dark`))}toggleScheme(){let e=this.scheme,t=e===`dark`?`light`:e===`light`?`dark`:`light`;this.setScheme(t)}getCSSVariable(e){let t=this.themeComponent;if(t){let n=t.root?document.body:t.shadowRoot?.host;if(n)return getComputedStyle(n).getPropertyValue(`--schmancy-${e}`).trim()}return``}watchCSSVariable(e){return this.theme$.pipe((0,t.map)(()=>this.getCSSVariable(e)),(0,t.distinctUntilChanged)())}setFullscreen(e){this.#n.next(e),window.dispatchEvent(new CustomEvent(`fullscreen`,{detail:e,bubbles:!0,composed:!0}))}toggleFullscreen(){this.setFullscreen(!this.fullscreen)}setBottomOffset(e){this.#r.next(e)}next(e){e.fullscreen!==void 0&&this.setFullscreen(e.fullscreen),e.scheme!==void 0&&this.setScheme(e.scheme),e.color!==void 0&&this.setColor(e.color)}static getInstance(){return e.instance||=new e,e.instance}}.getInstance(),o=a;Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}});
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.service-h2fXQq7x.cjs","names":["#theme$","#themeComponent$","#fullscreen$","#bottomOffset$"],"sources":["../src/theme/theme.events.ts","../src/theme/theme.service.ts"],"sourcesContent":["/**\n * Theme discovery event system.\n *\n * These events facilitate communication between theme components and consumers,\n * allowing components to discover the nearest theme provider in the DOM hierarchy.\n */\n\n/**\n * Event dispatched by components to discover the nearest theme provider.\n * Theme components listen for this event and respond with ThemeHereIAmEvent.\n *\n * @event ThemeWhereAreYouEvent\n * @type {CustomEvent<void>}\n *\n * @example\n * ```typescript\n * // Dispatch discovery request\n * window.dispatchEvent(\n * new CustomEvent('theme-where-are-you', {\n * bubbles: true,\n * composed: true\n * })\n * )\n * ```\n */\nexport type ThemeWhereAreYouEvent = CustomEvent<void>\n\n/**\n * Event name constant for theme discovery request.\n * @const {string}\n */\nexport const ThemeWhereAreYou = 'theme-where-are-you'\n\n/**\n * Event dispatched by theme components in response to discovery requests.\n * Contains reference to the theme component element.\n *\n * @event ThemeHereIAmEvent\n * @type {CustomEvent<{theme: HTMLElement}>}\n * @property {HTMLElement} detail.theme - The theme component element\n *\n * @example\n * ```typescript\n * // Listen for theme response\n * window.addEventListener('theme-here-i-am', (event: ThemeHereIAmEvent) => {\n * const themeComponent = event.detail.theme\n * console.log('Found theme component:', themeComponent)\n * })\n * ```\n */\nexport type ThemeHereIAmEvent = CustomEvent<{\n\ttheme: HTMLElement\n}>\n\n/**\n * Event name constant for theme discovery response.\n * @const {string}\n */\nexport const ThemeHereIAm = 'theme-here-i-am'\n","import {\n\tBehaviorSubject,\n\tObservable,\n\tfromEvent,\n\ttimer,\n\tmap,\n\ttakeUntil,\n\tdefaultIfEmpty,\n\tdistinctUntilChanged,\n\tshareReplay,\n\ttap,\n\tswitchMap,\n\tof,\n} from 'rxjs'\nimport { ThemeHereIAm, ThemeHereIAmEvent, ThemeWhereAreYou } from './theme.events'\nimport type { SchmancyThemeComponent } from './theme.component'\nimport type { TSchmancyTheme } from './theme.interface'\nimport { state } from '../state'\n\ninterface ThemeSettings {\n\tscheme: 'dark' | 'light' | 'auto'\n\tcolor: string\n}\n\n// Theme settings — persists to localStorage under namespace `schmancy/theme`.\nconst ThemeContext = state<ThemeSettings>('schmancy/theme').local({\n\tscheme: 'auto',\n\tcolor: '#6200ee',\n})\n\n/**\n * Theme Service - Provides centralized theme management for Schmancy components.\n *\n * This service acts as a singleton interface to interact with the theme system,\n * providing reactive observables for theme state and methods to control theming.\n *\n * @example\n * ```typescript\n * import { theme } from '@schmancy/theme'\n *\n * // Subscribe to theme changes\n * theme.scheme$.subscribe(scheme => {\n * console.log('Current scheme:', scheme) // 'light' | 'dark' | 'auto'\n * })\n *\n * // Get current values synchronously\n * const currentScheme = theme.scheme\n * const currentColor = theme.color\n *\n * // Toggle between light and dark mode\n * theme.toggleScheme()\n *\n * // Set specific scheme\n * theme.setScheme('dark')\n *\n * // Check if dark mode is active\n * theme.isDarkMode().subscribe(isDark => {\n * console.log('Is dark mode:', isDark)\n * })\n * ```\n */\nclass ThemeService {\n\tprivate static instance: ThemeService\n\n\t// Observable properties for theme values\n\t#theme$ = new BehaviorSubject<Partial<TSchmancyTheme>>({})\n\t#themeComponent$ = new BehaviorSubject<SchmancyThemeComponent | null>(null)\n\t#fullscreen$ = new BehaviorSubject<boolean>(false)\n\t#bottomOffset$ = new BehaviorSubject<number>(0)\n\n\t// Public observables derived from context\n\tpublic readonly scheme$ = ThemeContext.$.pipe(\n\t\tmap(settings => settings.scheme),\n\t\tdistinctUntilChanged(),\n\t\tshareReplay(1),\n\t)\n\n\tpublic readonly color$ = ThemeContext.$.pipe(\n\t\tmap(settings => settings.color),\n\t\tdistinctUntilChanged(),\n\t\tshareReplay(1),\n\t)\n\n\tpublic readonly theme$ = this.#theme$.asObservable().pipe(\n\t\tdistinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n\t\tshareReplay(1),\n\t)\n\n\tpublic readonly themeComponent$ = this.#themeComponent$.asObservable().pipe(distinctUntilChanged(), shareReplay(1))\n\n\tpublic readonly fullscreen$ = this.#fullscreen$.asObservable().pipe(distinctUntilChanged(), shareReplay(1))\n\n\tpublic readonly bottomOffset$ = this.#bottomOffset$.asObservable().pipe(distinctUntilChanged(), shareReplay(1))\n\n\t// Getters for synchronous access to current values\n\tget scheme(): 'dark' | 'light' | 'auto' {\n\t\treturn ThemeContext.value.scheme\n\t}\n\n\tget color(): string {\n\t\treturn ThemeContext.value.color\n\t}\n\n\tget theme(): Partial<TSchmancyTheme> {\n\t\treturn this.#theme$.getValue()\n\t}\n\n\tget themeComponent(): SchmancyThemeComponent | null {\n\t\treturn this.#themeComponent$.getValue()\n\t}\n\n\tget fullscreen(): boolean {\n\t\treturn this.#fullscreen$.getValue()\n\t}\n\n\tget bottomOffset(): number {\n\t\treturn this.#bottomOffset$.getValue()\n\t}\n\n\t// Computed observable for actual scheme (resolving 'auto')\n\tpublic readonly resolvedScheme$ = this.scheme$.pipe(\n\t\tswitchMap(scheme => {\n\t\t\tif (scheme === 'auto') {\n\t\t\t\t// Listen to system preference changes\n\t\t\t\tconst mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n\t\t\t\treturn new Observable<'dark' | 'light'>(subscriber => {\n\t\t\t\t\tconst handler = (e: MediaQueryListEvent) => {\n\t\t\t\t\t\tsubscriber.next(e.matches ? 'dark' : 'light')\n\t\t\t\t\t}\n\t\t\t\t\tmediaQuery.addEventListener('change', handler)\n\n\t\t\t\t\t// Emit initial value\n\t\t\t\t\tsubscriber.next(mediaQuery.matches ? 'dark' : 'light')\n\n\t\t\t\t\t// Cleanup\n\t\t\t\t\treturn () => mediaQuery.removeEventListener('change', handler)\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn of(scheme as 'dark' | 'light')\n\t\t}),\n\t\tdistinctUntilChanged(),\n\t\tshareReplay(1),\n\t)\n\n\tconstructor() {\n\t\tthis.discoverTheme()\n\t}\n\n\t/**\n\t * Discover the nearest theme component in the DOM.\n\t * This method can be called to refresh the theme discovery process.\n\t *\n\t * @returns {Observable<SchmancyThemeComponent | null>} Observable that emits the discovered theme component or null\n\t *\n\t * @example\n\t * ```typescript\n\t * theme.discoverTheme().subscribe(component => {\n\t * if (component) {\n\t * console.log('Theme component found:', component)\n\t * } else {\n\t * console.log('No theme component found')\n\t * }\n\t * })\n\t * ```\n\t */\n\tpublic discoverTheme(): Observable<SchmancyThemeComponent | null> {\n\t\t// Dispatch discovery event and wait for response\n\t\treturn fromEvent<ThemeHereIAmEvent>(window, ThemeHereIAm)\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(timer(100)), // Wait up to 100ms for response\n\t\t\t\tmap(e => e.detail.theme as SchmancyThemeComponent),\n\t\t\t\tdefaultIfEmpty(null),\n\t\t\t\ttap(themeComponent => {\n\t\t\t\t\tif (themeComponent) {\n\t\t\t\t\t\tthis.registerThemeComponent(themeComponent)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.pipe(\n\t\t\t\ttap(() => {\n\t\t\t\t\t// Trigger theme discovery\n\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\tnew CustomEvent(ThemeWhereAreYou, {\n\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tswitchMap(() =>\n\t\t\t\t\tfromEvent<ThemeHereIAmEvent>(window, ThemeHereIAm).pipe(\n\t\t\t\t\t\ttakeUntil(timer(100)),\n\t\t\t\t\t\tmap(e => e.detail.theme as SchmancyThemeComponent),\n\t\t\t\t\t\tdefaultIfEmpty(null),\n\t\t\t\t\t\ttap(themeComponent => {\n\t\t\t\t\t\t\tif (themeComponent) {\n\t\t\t\t\t\t\t\tthis.registerThemeComponent(themeComponent)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t)\n\t}\n\n\t/**\n\t * Register a theme component and subscribe to its changes.\n\t * This is typically called internally by theme components when they mount or update.\n\t *\n\t * @param {SchmancyThemeComponent} component - The theme component to register\n\t *\n\t * @internal\n\t */\n\tpublic registerThemeComponent(component: SchmancyThemeComponent): void {\n\t\tthis.#themeComponent$.next(component)\n\n\t\t// Update values from the component\n\t\tThemeContext.set({ scheme: component.scheme, color: component.color })\n\t\tthis.#theme$.next(component.theme)\n\t}\n\n\t/**\n\t * Update theme values. Usually called internally by theme components.\n\t *\n\t * @param {Object} values - Theme values to update\n\t * @param {'dark' | 'light' | 'auto'} [values.scheme] - Color scheme to set\n\t * @param {string} [values.color] - Primary color in hex format\n\t * @param {Partial<TSchmancyTheme>} [values.theme] - Theme configuration object\n\t *\n\t * @internal\n\t */\n\tpublic updateTheme(values: {\n\t\tscheme?: 'dark' | 'light' | 'auto'\n\t\tcolor?: string\n\t\ttheme?: Partial<TSchmancyTheme>\n\t}): void {\n\t\tconst updates: Partial<ThemeSettings> = {}\n\t\tif (values.scheme !== undefined) {\n\t\t\tupdates.scheme = values.scheme\n\t\t}\n\t\tif (values.color !== undefined) {\n\t\t\tupdates.color = values.color\n\t\t}\n\t\tif (Object.keys(updates).length > 0) {\n\t\t\tThemeContext.set(updates)\n\t\t}\n\t\tif (values.theme !== undefined) {\n\t\t\tthis.#theme$.next(values.theme)\n\t\t}\n\t}\n\n\t/**\n\t * Set the color scheme for the application.\n\t *\n\t * @param {'dark' | 'light' | 'auto'} scheme - The color scheme to set\n\t *\n\t * @example\n\t * ```typescript\n\t * // Set to dark mode\n\t * theme.setScheme('dark')\n\t *\n\t * // Set to auto (follows system preference)\n\t * theme.setScheme('auto')\n\t * ```\n\t */\n\tpublic setScheme(scheme: 'dark' | 'light' | 'auto'): void {\n\t\tconst component = this.themeComponent\n\t\tif (component) {\n\t\t\tcomponent.scheme = scheme\n\t\t\tThemeContext.set({ scheme })\n\t\t} else {\n\t\t\tconsole.warn('No theme component found. Scheme change may not persist.')\n\t\t\tThemeContext.set({ scheme })\n\t\t}\n\t}\n\n\t/**\n\t * Set the primary color for the theme.\n\t *\n\t * @param {string} color - Primary color in hex format (e.g., '#6200ee')\n\t *\n\t * @example\n\t * ```typescript\n\t * // Set primary color to purple\n\t * theme.setColor('#6200ee')\n\t *\n\t * // Set primary color to blue\n\t * theme.setColor('#2196f3')\n\t * ```\n\t */\n\tpublic setColor(color: string): void {\n\t\tconst component = this.themeComponent\n\t\tif (component) {\n\t\t\tcomponent.color = color\n\t\t\tThemeContext.set({ color })\n\t\t} else {\n\t\t\tconsole.warn('No theme component found. Color change may not persist.')\n\t\t\tThemeContext.set({ color })\n\t\t}\n\t}\n\n\t/**\n\t * Check if dark mode is currently active.\n\t * This resolves 'auto' scheme to the actual value based on system preference.\n\t *\n\t * @returns {Observable<boolean>} Observable that emits true if dark mode is active, false otherwise\n\t *\n\t * @example\n\t * ```typescript\n\t * theme.isDarkMode().subscribe(isDark => {\n\t * if (isDark) {\n\t * console.log('Dark mode is active')\n\t * } else {\n\t * console.log('Light mode is active')\n\t * }\n\t * })\n\t * ```\n\t */\n\tpublic isDarkMode(): Observable<boolean> {\n\t\treturn this.resolvedScheme$.pipe(map(scheme => scheme === 'dark'))\n\t}\n\n\t/**\n\t * Toggle between light and dark mode.\n\t * If currently in 'auto' mode, defaults to 'light'.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Toggle theme on button click\n\t * button.addEventListener('click', () => {\n\t * theme.toggleScheme()\n\t * })\n\t * ```\n\t */\n\tpublic toggleScheme(): void {\n\t\tconst currentScheme = this.scheme\n\t\tconst newScheme = currentScheme === 'dark' ? 'light' : currentScheme === 'light' ? 'dark' : 'light' // If 'auto', default to 'light'\n\t\tthis.setScheme(newScheme)\n\t}\n\n\t/**\n\t * Get the current value of a CSS variable from the theme.\n\t *\n\t * @param {string} variableName - Name of the CSS variable (without '--schmancy-' prefix)\n\t * @returns {string} The CSS variable value or empty string if not found\n\t *\n\t * @example\n\t * ```typescript\n\t * // Get primary color variable\n\t * const primaryColor = theme.getCSSVariable('color-primary')\n\t *\n\t * // Get surface color\n\t * const surfaceColor = theme.getCSSVariable('color-surface')\n\t * ```\n\t */\n\tpublic getCSSVariable(variableName: string): string {\n\t\tconst component = this.themeComponent\n\t\tif (component) {\n\t\t\tconst host = component.root ? document.body : (component.shadowRoot?.host as HTMLElement)\n\t\t\tif (host) {\n\t\t\t\treturn getComputedStyle(host).getPropertyValue(`--schmancy-${variableName}`).trim()\n\t\t\t}\n\t\t}\n\t\treturn ''\n\t}\n\n\t/**\n\t * Subscribe to changes of a specific CSS variable.\n\t *\n\t * @param {string} variableName - Name of the CSS variable to watch (without '--schmancy-' prefix)\n\t * @returns {Observable<string>} Observable that emits the CSS variable value when it changes\n\t *\n\t * @example\n\t * ```typescript\n\t * // Watch for primary color changes\n\t * theme.watchCSSVariable('color-primary').subscribe(color => {\n\t * console.log('Primary color changed to:', color)\n\t * })\n\t *\n\t * // Watch for surface color changes\n\t * theme.watchCSSVariable('color-surface').subscribe(color => {\n\t * console.log('Surface color changed to:', color)\n\t * })\n\t * ```\n\t */\n\tpublic watchCSSVariable(variableName: string): Observable<string> {\n\t\treturn this.theme$.pipe(\n\t\t\tmap(() => this.getCSSVariable(variableName)),\n\t\t\tdistinctUntilChanged(),\n\t\t)\n\t}\n\n\t/**\n\t * Set the fullscreen state for the application.\n\t * This emits a custom event that navigation components can listen to.\n\t *\n\t * @param {boolean} value - Whether fullscreen mode is active\n\t *\n\t * @example\n\t * ```typescript\n\t * // Enter fullscreen mode\n\t * theme.setFullscreen(true)\n\t *\n\t * // Exit fullscreen mode\n\t * theme.setFullscreen(false)\n\t * ```\n\t */\n\tpublic setFullscreen(value: boolean): void {\n\t\tthis.#fullscreen$.next(value)\n\n\t\t// Emit custom event for components to listen to\n\t\twindow.dispatchEvent(\n\t\t\tnew CustomEvent('fullscreen', {\n\t\t\t\tdetail: value,\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\t/**\n\t * Toggle fullscreen mode.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Toggle fullscreen mode on button click\n\t * button.addEventListener('click', () => {\n\t * theme.toggleFullscreen()\n\t * })\n\t * ```\n\t */\n\tpublic toggleFullscreen(): void {\n\t\tthis.setFullscreen(!this.fullscreen)\n\t}\n\n\t/**\n\t * Set the bottom offset for viewport calculations.\n\t * Used by navigation bars to inform fullHeight directive of reserved space.\n\t *\n\t * @param {number} value - Bottom offset in pixels\n\t *\n\t * @example\n\t * ```typescript\n\t * // Set bottom offset when nav bar is visible\n\t * theme.setBottomOffset(80)\n\t *\n\t * // Clear bottom offset when nav bar is hidden\n\t * theme.setBottomOffset(0)\n\t * ```\n\t */\n\tpublic setBottomOffset(value: number): void {\n\t\tthis.#bottomOffset$.next(value)\n\t}\n\n\t/**\n\t * Convenience method to update theme state including fullscreen.\n\t * Can be called with next() like syntax for familiarity.\n\t *\n\t * @param {Object} values - Theme values to update\n\t * @param {boolean} [values.fullscreen] - Fullscreen state\n\t * @param {'dark' | 'light' | 'auto'} [values.scheme] - Color scheme\n\t * @param {string} [values.color] - Primary color\n\t *\n\t * @example\n\t * ```typescript\n\t * // Set fullscreen mode\n\t * theme.next({ fullscreen: true })\n\t *\n\t * // Update multiple values\n\t * theme.next({\n\t * fullscreen: true,\n\t * scheme: 'dark'\n\t * })\n\t * ```\n\t */\n\tpublic next(values: { fullscreen?: boolean; scheme?: 'dark' | 'light' | 'auto'; color?: string }): void {\n\t\tif (values.fullscreen !== undefined) {\n\t\t\tthis.setFullscreen(values.fullscreen)\n\t\t}\n\t\tif (values.scheme !== undefined) {\n\t\t\tthis.setScheme(values.scheme)\n\t\t}\n\t\tif (values.color !== undefined) {\n\t\t\tthis.setColor(values.color)\n\t\t}\n\t}\n\n\t/**\n\t * Get the singleton instance of ThemeService.\n\t *\n\t * @returns {ThemeService} The singleton ThemeService instance\n\t *\n\t * @internal\n\t */\n\tstatic getInstance(): ThemeService {\n\t\tif (!ThemeService.instance) {\n\t\t\tThemeService.instance = new ThemeService()\n\t\t}\n\t\treturn ThemeService.instance\n\t}\n}\n\n/**\n * Theme singleton. Reads and mutates the active theme (scheme, source color,\n * locale); persists the user's scheme choice. Components subscribe via\n * `theme.theme$` for changes.\n *\n * @service\n * @summary Theme service — active scheme, source color, locale.\n * @method next({ scheme?, source?, locale? }) - Update theme state.\n * @method theme$ - Observable<TSchmancyTheme>; emits on every theme change.\n * @method toggle() - Toggle between light and dark schemes.\n */\nexport const theme = ThemeService.getInstance()\nexport const schmancyTheme = theme // Alias for convenience\nexport default theme\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.cjs","names":[],"sources":["../src/tooltip/tooltip.directive.ts"],"sourcesContent":["import { arrow, autoUpdate, computePosition, flip, offset, Placement, shift, Strategy } from '@floating-ui/dom'\nimport { Directive, directive, ElementPart, ElementPartInfo, PartType } from 'lit/directive.js'\nimport { fromEvent, Subscription } from 'rxjs'\n\n// Store tooltip data for elements\nconst tooltipMap = new WeakMap<\n\tElement,\n\t{\n\t\ttooltipElement: HTMLElement\n\t\tarrowElement?: HTMLElement\n\t\tcleanup?: () => void\n\t\tshowTimeout?: number\n\t\tsubscriptions?: Subscription[]\n\t}\n>()\n\nclass TooltipDirective extends Directive {\n\tconstructor(partInfo: ElementPartInfo) {\n\t\tsuper(partInfo)\n\t\tif (partInfo.type !== PartType.ELEMENT) {\n\t\t\tthrow new Error('The tooltip directive can only be used on elements')\n\t\t}\n\t}\n\n\trender(\n\t\ttext: string,\n\t\toptions: {\n\t\t\tposition?: 'top' | 'right' | 'bottom' | 'left'\n\t\t\tdelay?: number\n\t\t\tshowArrow?: boolean\n\t\t} = {},\n\t) {\n\t\treturn { text, options }\n\t}\n\n\tupdate(part: ElementPart, [text, options = {}]: [string, any]) {\n\t\tconst element = part.element as HTMLElement\n\t\tconst position = options?.position || 'top'\n\t\tconst delay = options?.delay || 300\n\t\tconst showArrow = options?.showArrow !== false // Default to true\n\n\t\t// Get or create tooltip data\n\t\tlet tooltipData = tooltipMap.get(element)\n\n\t\tif (!tooltipData) {\n\t\t\t// Create tooltip element\n\t\t\tconst tooltipElement = document.createElement('div')\n\t\t\ttooltipElement.className = 'schmancy-tooltip'\n\n\t\t\t// Apply styles\n\t\t\tObject.assign(tooltipElement.style, {\n\t\t\t\tposition: 'absolute',\n\t\t\t\tzIndex: '10000',\n\t\t\t\tbackgroundColor: 'var(--schmancy-sys-color-surface-highest, #333)',\n\t\t\t\tcolor: 'var(--schmancy-sys-color-surface-on, white)',\n\t\t\t\tpadding: '8px 12px',\n\t\t\t\tborderRadius: '4px',\n\t\t\t\tfontSize: '14px',\n\t\t\t\tfontWeight: 'normal',\n\t\t\t\tmaxWidth: '300px',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\topacity: '0',\n\t\t\t\ttransition: 'opacity 150ms ease',\n\t\t\t\tboxShadow: 'var(--schmancy-sys-elevation-2)',\n\t\t\t\ttextAlign: 'center',\n\t\t\t\t// Important: start with visibility hidden to avoid flash\n\t\t\t\tvisibility: 'hidden',\n\t\t\t})\n\n\t\t\t// Create arrow element if needed\n\t\t\tlet arrowElement: HTMLElement | undefined\n\t\t\tif (showArrow) {\n\t\t\t\tarrowElement = document.createElement('div')\n\t\t\t\tarrowElement.className = 'schmancy-tooltip-arrow'\n\t\t\t\tObject.assign(arrowElement.style, {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\twidth: '8px',\n\t\t\t\t\theight: '8px',\n\t\t\t\t\tbackground: 'inherit',\n\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\t// We'll rotate this to create an arrow\n\t\t\t\t\ttransform: 'rotate(45deg)',\n\t\t\t\t})\n\t\t\t\ttooltipElement.appendChild(arrowElement)\n\t\t\t}\n\n\t\t\t// Set ARIA attributes\n\t\t\ttooltipElement.setAttribute('role', 'tooltip')\n\n\t\t\t// Generate unique ID\n\t\t\tconst tooltipId = `tooltip-${Math.random().toString(36).slice(2, 9)}`\n\t\t\ttooltipElement.id = tooltipId\n\t\t\telement.setAttribute('aria-describedby', tooltipId)\n\n\t\t\t// Add to document\n\t\t\tdocument.body.appendChild(tooltipElement)\n\n\t\t\t// Create tooltip data\n\t\t\ttooltipData = {\n\t\t\t\ttooltipElement,\n\t\t\t\tarrowElement,\n\t\t\t}\n\n\t\t\ttooltipMap.set(element, tooltipData)\n\n\t\t\t// Define show handler\n\t\t\tconst showTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.showTimeout = window.setTimeout(() => {\n\t\t\t\t\t// Set content\n\t\t\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t\t\t// Add arrow back if it was removed\n\t\t\t\t\tif (showArrow && tooltipData.arrowElement && !tooltipData.tooltipElement.contains(tooltipData.arrowElement)) {\n\t\t\t\t\t\ttooltipData.tooltipElement.appendChild(tooltipData.arrowElement)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Make sure element is visible first\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'visible'\n\n\t\t\t\t\t// Clean up existing positioning\n\t\t\t\t\tif (tooltipData.cleanup) {\n\t\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set up positioning\n\t\t\t\t\ttooltipData.cleanup = autoUpdate(element, tooltipData.tooltipElement, () =>\n\t\t\t\t\t\tupdatePosition(element, tooltipData, position, showArrow),\n\t\t\t\t\t)\n\n\t\t\t\t\t// Make opacity 1 after positioning is set up\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\ttooltipData.tooltipElement.style.opacity = '1'\n\t\t\t\t\t})\n\t\t\t\t}, delay)\n\t\t\t}\n\n\t\t\t// Define hide handler\n\t\t\tconst hideTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.tooltipElement.style.opacity = '0'\n\n\t\t\t\t// Set visibility to hidden after fade out\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'hidden'\n\t\t\t\t}, 150) // Match transition time\n\n\t\t\t\t// Clean up positioning\n\t\t\t\tif (tooltipData?.cleanup) {\n\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\ttooltipData.cleanup = undefined\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add event listeners using fromEvent\n\t\t\tconst subscriptions = [\n\t\t\t\tfromEvent(element, 'mouseenter').subscribe(showTooltip),\n\t\t\t\tfromEvent(element, 'focus').subscribe(showTooltip),\n\t\t\t\tfromEvent(element, 'mouseleave').subscribe(hideTooltip),\n\t\t\t\tfromEvent(element, 'blur').subscribe(hideTooltip),\n\t\t\t\tfromEvent<KeyboardEvent>(document, 'keydown').subscribe((e: KeyboardEvent) => {\n\t\t\t\t\tif (e.key === 'Escape' && tooltipData?.tooltipElement.style.opacity === '1') {\n\t\t\t\t\t\thideTooltip()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t]\n\n\t\t\t// Store subscriptions for cleanup\n\t\t\ttooltipData.subscriptions = subscriptions\n\t\t} else {\n\t\t\t// Update content for existing tooltip\n\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t// Update arrow visibility if needed\n\t\t\tif (tooltipData.arrowElement) {\n\t\t\t\ttooltipData.arrowElement.style.visibility = showArrow ? 'visible' : 'hidden'\n\t\t\t}\n\t\t}\n\n\t\treturn { text, options }\n\t}\n\n\tdisconnected(part: ElementPart) {\n\t\tconst element = part.element\n\t\tconst tooltipData = tooltipMap.get(element)\n\n\t\tif (tooltipData) {\n\t\t\t// Clean up subscriptions\n\t\t\tif (tooltipData.subscriptions) {\n\t\t\t\ttooltipData.subscriptions.forEach(subscription => subscription.unsubscribe())\n\t\t\t}\n\n\t\t\t// Clean up timeouts and positioning\n\t\t\tif (tooltipData.showTimeout) {\n\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t}\n\n\t\t\tif (tooltipData.cleanup) {\n\t\t\t\ttooltipData.cleanup()\n\t\t\t}\n\n\t\t\t// Remove tooltip element\n\t\t\tif (document.body.contains(tooltipData.tooltipElement)) {\n\t\t\t\tdocument.body.removeChild(tooltipData.tooltipElement)\n\t\t\t}\n\n\t\t\t// Remove ARIA attributes\n\t\t\tif (element.hasAttribute('aria-describedby')) {\n\t\t\t\telement.removeAttribute('aria-describedby')\n\t\t\t}\n\n\t\t\t// Remove from WeakMap\n\t\t\ttooltipMap.delete(element)\n\t\t}\n\t}\n}\n\n// Separate positioning function for clarity and reuse\nasync function updatePosition(element: HTMLElement, tooltipData: any, position: string, showArrow: boolean) {\n\t// Use floating-ui to compute position\n\tconst middleware = [\n\t\toffset(8), // Distance from the element\n\t\tflip({\n\t\t\tfallbackPlacements: ['top', 'right', 'bottom', 'left'].filter(p => p !== position) as Placement[],\n\t\t\tpadding: 5, // How far from the edges before flipping\n\t\t}),\n\t\tshift({ padding: 5 }), // Keep it within viewport bounds\n\t]\n\n\t// Add arrow middleware if needed\n\tif (showArrow && tooltipData.arrowElement) {\n\t\tmiddleware.push(arrow({ element: tooltipData.arrowElement }))\n\t}\n\n\tconst { x, y, placement, middlewareData } = await computePosition(element, tooltipData.tooltipElement, {\n\t\tplacement: position as Placement,\n\t\tmiddleware,\n\t\tstrategy: 'fixed' as Strategy, // Fixed positioning works better across contexts\n\t})\n\n\t// Apply position\n\tObject.assign(tooltipData.tooltipElement.style, {\n\t\tleft: `${x}px`,\n\t\ttop: `${y}px`,\n\t\tposition: 'fixed',\n\t})\n\n\t// Position the arrow if it exists\n\tif (showArrow && tooltipData.arrowElement && middlewareData.arrow) {\n\t\tconst { x: arrowX, y: arrowY } = middlewareData.arrow\n\n\t\t// Determine which side the arrow should be on based on placement\n\t\tconst staticSide =\n\t\t\t{\n\t\t\t\ttop: 'bottom',\n\t\t\t\tright: 'left',\n\t\t\t\tbottom: 'top',\n\t\t\t\tleft: 'right',\n\t\t\t}[placement.split('-')[0]] || 'bottom'\n\n\t\t// Position the arrow\n\t\tObject.assign(tooltipData.arrowElement.style, {\n\t\t\tleft: arrowX != null ? `${arrowX}px` : '',\n\t\t\ttop: arrowY != null ? `${arrowY}px` : '',\n\t\t\t[staticSide]: '-4px', // Position the arrow on the correct side\n\t\t\tvisibility: 'visible',\n\t\t})\n\t}\n}\n\nexport const tooltip = directive(TooltipDirective)\n"],"mappings":"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"}
1
+ {"version":3,"file":"tooltip.cjs","names":[],"sources":["../src/tooltip/tooltip.directive.ts"],"sourcesContent":["import { arrow, autoUpdate, computePosition, flip, offset, Placement, shift, Strategy } from '@floating-ui/dom'\nimport { Directive, directive, ElementPart, ElementPartInfo, PartType } from 'lit/directive.js'\nimport { fromEvent, Subscription } from 'rxjs'\n\n// Store tooltip data for elements\nconst tooltipMap = new WeakMap<\n\tElement,\n\t{\n\t\ttooltipElement: HTMLElement\n\t\tarrowElement?: HTMLElement\n\t\tcleanup?: () => void\n\t\tshowTimeout?: number\n\t\tsubscriptions?: Subscription[]\n\t}\n>()\n\nclass TooltipDirective extends Directive {\n\tconstructor(partInfo: ElementPartInfo) {\n\t\tsuper(partInfo)\n\t\tif (partInfo.type !== PartType.ELEMENT) {\n\t\t\tthrow new Error('The tooltip directive can only be used on elements')\n\t\t}\n\t}\n\n\trender(\n\t\ttext: string,\n\t\toptions: {\n\t\t\tposition?: 'top' | 'right' | 'bottom' | 'left'\n\t\t\tdelay?: number\n\t\t\tshowArrow?: boolean\n\t\t} = {},\n\t) {\n\t\treturn { text, options }\n\t}\n\n\tupdate(part: ElementPart, [text, options = {}]: [string, any]) {\n\t\tconst element = part.element as HTMLElement\n\t\tconst position = options?.position || 'top'\n\t\tconst delay = options?.delay || 300\n\t\tconst showArrow = options?.showArrow !== false // Default to true\n\n\t\t// Get or create tooltip data\n\t\tlet tooltipData = tooltipMap.get(element)\n\n\t\tif (!tooltipData) {\n\t\t\t// Create tooltip element\n\t\t\tconst tooltipElement = document.createElement('div')\n\t\t\ttooltipElement.className = 'schmancy-tooltip'\n\n\t\t\t// Apply styles\n\t\t\tObject.assign(tooltipElement.style, {\n\t\t\t\tposition: 'absolute',\n\t\t\t\tzIndex: '10000',\n\t\t\t\tbackgroundColor: 'var(--schmancy-sys-color-surface-highest, #333)',\n\t\t\t\tcolor: 'var(--schmancy-sys-color-surface-on, white)',\n\t\t\t\tpadding: '8px 12px',\n\t\t\t\tborderRadius: '4px',\n\t\t\t\tfontSize: '14px',\n\t\t\t\tfontWeight: 'normal',\n\t\t\t\tmaxWidth: '300px',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\topacity: '0',\n\t\t\t\ttransition: 'opacity 150ms ease',\n\t\t\t\tboxShadow: 'var(--schmancy-sys-elevation-2)',\n\t\t\t\ttextAlign: 'center',\n\t\t\t\t// Important: start with visibility hidden to avoid flash\n\t\t\t\tvisibility: 'hidden',\n\t\t\t})\n\n\t\t\t// Create arrow element if needed\n\t\t\tlet arrowElement: HTMLElement | undefined\n\t\t\tif (showArrow) {\n\t\t\t\tarrowElement = document.createElement('div')\n\t\t\t\tarrowElement.className = 'schmancy-tooltip-arrow'\n\t\t\t\tObject.assign(arrowElement.style, {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\twidth: '8px',\n\t\t\t\t\theight: '8px',\n\t\t\t\t\tbackground: 'inherit',\n\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\t// We'll rotate this to create an arrow\n\t\t\t\t\ttransform: 'rotate(45deg)',\n\t\t\t\t})\n\t\t\t\ttooltipElement.appendChild(arrowElement)\n\t\t\t}\n\n\t\t\t// Set ARIA attributes\n\t\t\ttooltipElement.setAttribute('role', 'tooltip')\n\n\t\t\t// Generate unique ID\n\t\t\tconst tooltipId = `tooltip-${Math.random().toString(36).slice(2, 9)}`\n\t\t\ttooltipElement.id = tooltipId\n\t\t\telement.setAttribute('aria-describedby', tooltipId)\n\n\t\t\t// Add to document\n\t\t\tdocument.body.appendChild(tooltipElement)\n\n\t\t\t// Create tooltip data\n\t\t\ttooltipData = {\n\t\t\t\ttooltipElement,\n\t\t\t\tarrowElement,\n\t\t\t}\n\n\t\t\ttooltipMap.set(element, tooltipData)\n\n\t\t\t// Define show handler\n\t\t\tconst showTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.showTimeout = window.setTimeout(() => {\n\t\t\t\t\t// Set content\n\t\t\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t\t\t// Add arrow back if it was removed\n\t\t\t\t\tif (showArrow && tooltipData.arrowElement && !tooltipData.tooltipElement.contains(tooltipData.arrowElement)) {\n\t\t\t\t\t\ttooltipData.tooltipElement.appendChild(tooltipData.arrowElement)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Make sure element is visible first\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'visible'\n\n\t\t\t\t\t// Clean up existing positioning\n\t\t\t\t\tif (tooltipData.cleanup) {\n\t\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set up positioning\n\t\t\t\t\ttooltipData.cleanup = autoUpdate(element, tooltipData.tooltipElement, () =>\n\t\t\t\t\t\tupdatePosition(element, tooltipData, position, showArrow),\n\t\t\t\t\t)\n\n\t\t\t\t\t// Make opacity 1 after positioning is set up\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\ttooltipData.tooltipElement.style.opacity = '1'\n\t\t\t\t\t})\n\t\t\t\t}, delay)\n\t\t\t}\n\n\t\t\t// Define hide handler\n\t\t\tconst hideTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.tooltipElement.style.opacity = '0'\n\n\t\t\t\t// Set visibility to hidden after fade out\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'hidden'\n\t\t\t\t}, 150) // Match transition time\n\n\t\t\t\t// Clean up positioning\n\t\t\t\tif (tooltipData?.cleanup) {\n\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\ttooltipData.cleanup = undefined\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add event listeners using fromEvent\n\t\t\tconst subscriptions = [\n\t\t\t\tfromEvent(element, 'mouseenter').subscribe(showTooltip),\n\t\t\t\tfromEvent(element, 'focus').subscribe(showTooltip),\n\t\t\t\tfromEvent(element, 'mouseleave').subscribe(hideTooltip),\n\t\t\t\tfromEvent(element, 'blur').subscribe(hideTooltip),\n\t\t\t\tfromEvent<KeyboardEvent>(document, 'keydown').subscribe((e: KeyboardEvent) => {\n\t\t\t\t\tif (e.key === 'Escape' && tooltipData?.tooltipElement.style.opacity === '1') {\n\t\t\t\t\t\thideTooltip()\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t]\n\n\t\t\t// Store subscriptions for cleanup\n\t\t\ttooltipData.subscriptions = subscriptions\n\t\t} else {\n\t\t\t// Update content for existing tooltip\n\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t// Update arrow visibility if needed\n\t\t\tif (tooltipData.arrowElement) {\n\t\t\t\ttooltipData.arrowElement.style.visibility = showArrow ? 'visible' : 'hidden'\n\t\t\t}\n\t\t}\n\n\t\treturn { text, options }\n\t}\n\n\tdisconnected(part: ElementPart) {\n\t\tconst element = part.element\n\t\tconst tooltipData = tooltipMap.get(element)\n\n\t\tif (tooltipData) {\n\t\t\t// Clean up subscriptions\n\t\t\tif (tooltipData.subscriptions) {\n\t\t\t\ttooltipData.subscriptions.forEach(subscription => subscription.unsubscribe())\n\t\t\t}\n\n\t\t\t// Clean up timeouts and positioning\n\t\t\tif (tooltipData.showTimeout) {\n\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t}\n\n\t\t\tif (tooltipData.cleanup) {\n\t\t\t\ttooltipData.cleanup()\n\t\t\t}\n\n\t\t\t// Remove tooltip element\n\t\t\tif (document.body.contains(tooltipData.tooltipElement)) {\n\t\t\t\tdocument.body.removeChild(tooltipData.tooltipElement)\n\t\t\t}\n\n\t\t\t// Remove ARIA attributes\n\t\t\tif (element.hasAttribute('aria-describedby')) {\n\t\t\t\telement.removeAttribute('aria-describedby')\n\t\t\t}\n\n\t\t\t// Remove from WeakMap\n\t\t\ttooltipMap.delete(element)\n\t\t}\n\t}\n}\n\n// Separate positioning function for clarity and reuse\nasync function updatePosition(element: HTMLElement, tooltipData: any, position: string, showArrow: boolean) {\n\t// Use floating-ui to compute position\n\tconst middleware = [\n\t\toffset(8), // Distance from the element\n\t\tflip({\n\t\t\tfallbackPlacements: ['top', 'right', 'bottom', 'left'].filter(p => p !== position) as Placement[],\n\t\t\tpadding: 5, // How far from the edges before flipping\n\t\t}),\n\t\tshift({ padding: 5 }), // Keep it within viewport bounds\n\t]\n\n\t// Add arrow middleware if needed\n\tif (showArrow && tooltipData.arrowElement) {\n\t\tmiddleware.push(arrow({ element: tooltipData.arrowElement }))\n\t}\n\n\tconst { x, y, placement, middlewareData } = await computePosition(element, tooltipData.tooltipElement, {\n\t\tplacement: position as Placement,\n\t\tmiddleware,\n\t\tstrategy: 'fixed' as Strategy, // Fixed positioning works better across contexts\n\t})\n\n\t// Apply position\n\tObject.assign(tooltipData.tooltipElement.style, {\n\t\tleft: `${x}px`,\n\t\ttop: `${y}px`,\n\t\tposition: 'fixed',\n\t})\n\n\t// Position the arrow if it exists\n\tif (showArrow && tooltipData.arrowElement && middlewareData.arrow) {\n\t\tconst { x: arrowX, y: arrowY } = middlewareData.arrow\n\n\t\t// Determine which side the arrow should be on based on placement\n\t\tconst staticSide =\n\t\t\t{\n\t\t\t\ttop: 'bottom',\n\t\t\t\tright: 'left',\n\t\t\t\tbottom: 'top',\n\t\t\t\tleft: 'right',\n\t\t\t}[placement.split('-')[0]] || 'bottom'\n\n\t\t// Position the arrow\n\t\tObject.assign(tooltipData.arrowElement.style, {\n\t\t\tleft: arrowX != null ? `${arrowX}px` : '',\n\t\t\ttop: arrowY != null ? `${arrowY}px` : '',\n\t\t\t[staticSide]: '-4px', // Position the arrow on the correct side\n\t\t\tvisibility: 'visible',\n\t\t})\n\t}\n}\n\nexport const tooltip = directive(TooltipDirective)\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","names":[],"sources":["../src/tooltip/tooltip.directive.ts"],"sourcesContent":["import { arrow, autoUpdate, computePosition, flip, offset, Placement, shift, Strategy } from '@floating-ui/dom'\nimport { Directive, directive, ElementPart, ElementPartInfo, PartType } from 'lit/directive.js'\nimport { fromEvent, Subscription } from 'rxjs'\n\n// Store tooltip data for elements\nconst tooltipMap = new WeakMap<\n\tElement,\n\t{\n\t\ttooltipElement: HTMLElement\n\t\tarrowElement?: HTMLElement\n\t\tcleanup?: () => void\n\t\tshowTimeout?: number\n\t\tsubscriptions?: Subscription[]\n\t}\n>()\n\nclass TooltipDirective extends Directive {\n\tconstructor(partInfo: ElementPartInfo) {\n\t\tsuper(partInfo)\n\t\tif (partInfo.type !== PartType.ELEMENT) {\n\t\t\tthrow new Error('The tooltip directive can only be used on elements')\n\t\t}\n\t}\n\n\trender(\n\t\ttext: string,\n\t\toptions: {\n\t\t\tposition?: 'top' | 'right' | 'bottom' | 'left'\n\t\t\tdelay?: number\n\t\t\tshowArrow?: boolean\n\t\t} = {},\n\t) {\n\t\treturn { text, options }\n\t}\n\n\tupdate(part: ElementPart, [text, options = {}]: [string, any]) {\n\t\tconst element = part.element as HTMLElement\n\t\tconst position = options?.position || 'top'\n\t\tconst delay = options?.delay || 300\n\t\tconst showArrow = options?.showArrow !== false // Default to true\n\n\t\t// Get or create tooltip data\n\t\tlet tooltipData = tooltipMap.get(element)\n\n\t\tif (!tooltipData) {\n\t\t\t// Create tooltip element\n\t\t\tconst tooltipElement = document.createElement('div')\n\t\t\ttooltipElement.className = 'schmancy-tooltip'\n\n\t\t\t// Apply styles\n\t\t\tObject.assign(tooltipElement.style, {\n\t\t\t\tposition: 'absolute',\n\t\t\t\tzIndex: '10000',\n\t\t\t\tbackgroundColor: 'var(--schmancy-sys-color-surface-highest, #333)',\n\t\t\t\tcolor: 'var(--schmancy-sys-color-surface-on, white)',\n\t\t\t\tpadding: '8px 12px',\n\t\t\t\tborderRadius: '4px',\n\t\t\t\tfontSize: '14px',\n\t\t\t\tfontWeight: 'normal',\n\t\t\t\tmaxWidth: '300px',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\topacity: '0',\n\t\t\t\ttransition: 'opacity 150ms ease',\n\t\t\t\tboxShadow: 'var(--schmancy-sys-elevation-2)',\n\t\t\t\ttextAlign: 'center',\n\t\t\t\t// Important: start with visibility hidden to avoid flash\n\t\t\t\tvisibility: 'hidden',\n\t\t\t})\n\n\t\t\t// Create arrow element if needed\n\t\t\tlet arrowElement: HTMLElement | undefined\n\t\t\tif (showArrow) {\n\t\t\t\tarrowElement = document.createElement('div')\n\t\t\t\tarrowElement.className = 'schmancy-tooltip-arrow'\n\t\t\t\tObject.assign(arrowElement.style, {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\twidth: '8px',\n\t\t\t\t\theight: '8px',\n\t\t\t\t\tbackground: 'inherit',\n\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\t// We'll rotate this to create an arrow\n\t\t\t\t\ttransform: 'rotate(45deg)',\n\t\t\t\t})\n\t\t\t\ttooltipElement.appendChild(arrowElement)\n\t\t\t}\n\n\t\t\t// Set ARIA attributes\n\t\t\ttooltipElement.setAttribute('role', 'tooltip')\n\n\t\t\t// Generate unique ID\n\t\t\tconst tooltipId = `tooltip-${Math.random().toString(36).slice(2, 9)}`\n\t\t\ttooltipElement.id = tooltipId\n\t\t\telement.setAttribute('aria-describedby', tooltipId)\n\n\t\t\t// Add to document\n\t\t\tdocument.body.appendChild(tooltipElement)\n\n\t\t\t// Create tooltip data\n\t\t\ttooltipData = {\n\t\t\t\ttooltipElement,\n\t\t\t\tarrowElement,\n\t\t\t}\n\n\t\t\ttooltipMap.set(element, tooltipData)\n\n\t\t\t// Define show handler\n\t\t\tconst showTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.showTimeout = window.setTimeout(() => {\n\t\t\t\t\t// Set content\n\t\t\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t\t\t// Add arrow back if it was removed\n\t\t\t\t\tif (showArrow && tooltipData.arrowElement && !tooltipData.tooltipElement.contains(tooltipData.arrowElement)) {\n\t\t\t\t\t\ttooltipData.tooltipElement.appendChild(tooltipData.arrowElement)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Make sure element is visible first\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'visible'\n\n\t\t\t\t\t// Clean up existing positioning\n\t\t\t\t\tif (tooltipData.cleanup) {\n\t\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set up positioning\n\t\t\t\t\ttooltipData.cleanup = autoUpdate(element, tooltipData.tooltipElement, () =>\n\t\t\t\t\t\tupdatePosition(element, tooltipData, position, showArrow),\n\t\t\t\t\t)\n\n\t\t\t\t\t// Make opacity 1 after positioning is set up\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\ttooltipData.tooltipElement.style.opacity = '1'\n\t\t\t\t\t})\n\t\t\t\t}, delay)\n\t\t\t}\n\n\t\t\t// Define hide handler\n\t\t\tconst hideTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.tooltipElement.style.opacity = '0'\n\n\t\t\t\t// Set visibility to hidden after fade out\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'hidden'\n\t\t\t\t}, 150) // Match transition time\n\n\t\t\t\t// Clean up positioning\n\t\t\t\tif (tooltipData?.cleanup) {\n\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\ttooltipData.cleanup = undefined\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add event listeners using fromEvent\n\t\t\tconst subscriptions = [\n\t\t\t\tfromEvent(element, 'mouseenter').subscribe(showTooltip),\n\t\t\t\tfromEvent(element, 'focus').subscribe(showTooltip),\n\t\t\t\tfromEvent(element, 'mouseleave').subscribe(hideTooltip),\n\t\t\t\tfromEvent(element, 'blur').subscribe(hideTooltip),\n\t\t\t\tfromEvent<KeyboardEvent>(document, 'keydown').subscribe((e: KeyboardEvent) => {\n\t\t\t\t\tif (e.key === 'Escape' && tooltipData?.tooltipElement.style.opacity === '1') {\n\t\t\t\t\t\thideTooltip()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t]\n\n\t\t\t// Store subscriptions for cleanup\n\t\t\ttooltipData.subscriptions = subscriptions\n\t\t} else {\n\t\t\t// Update content for existing tooltip\n\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t// Update arrow visibility if needed\n\t\t\tif (tooltipData.arrowElement) {\n\t\t\t\ttooltipData.arrowElement.style.visibility = showArrow ? 'visible' : 'hidden'\n\t\t\t}\n\t\t}\n\n\t\treturn { text, options }\n\t}\n\n\tdisconnected(part: ElementPart) {\n\t\tconst element = part.element\n\t\tconst tooltipData = tooltipMap.get(element)\n\n\t\tif (tooltipData) {\n\t\t\t// Clean up subscriptions\n\t\t\tif (tooltipData.subscriptions) {\n\t\t\t\ttooltipData.subscriptions.forEach(subscription => subscription.unsubscribe())\n\t\t\t}\n\n\t\t\t// Clean up timeouts and positioning\n\t\t\tif (tooltipData.showTimeout) {\n\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t}\n\n\t\t\tif (tooltipData.cleanup) {\n\t\t\t\ttooltipData.cleanup()\n\t\t\t}\n\n\t\t\t// Remove tooltip element\n\t\t\tif (document.body.contains(tooltipData.tooltipElement)) {\n\t\t\t\tdocument.body.removeChild(tooltipData.tooltipElement)\n\t\t\t}\n\n\t\t\t// Remove ARIA attributes\n\t\t\tif (element.hasAttribute('aria-describedby')) {\n\t\t\t\telement.removeAttribute('aria-describedby')\n\t\t\t}\n\n\t\t\t// Remove from WeakMap\n\t\t\ttooltipMap.delete(element)\n\t\t}\n\t}\n}\n\n// Separate positioning function for clarity and reuse\nasync function updatePosition(element: HTMLElement, tooltipData: any, position: string, showArrow: boolean) {\n\t// Use floating-ui to compute position\n\tconst middleware = [\n\t\toffset(8), // Distance from the element\n\t\tflip({\n\t\t\tfallbackPlacements: ['top', 'right', 'bottom', 'left'].filter(p => p !== position) as Placement[],\n\t\t\tpadding: 5, // How far from the edges before flipping\n\t\t}),\n\t\tshift({ padding: 5 }), // Keep it within viewport bounds\n\t]\n\n\t// Add arrow middleware if needed\n\tif (showArrow && tooltipData.arrowElement) {\n\t\tmiddleware.push(arrow({ element: tooltipData.arrowElement }))\n\t}\n\n\tconst { x, y, placement, middlewareData } = await computePosition(element, tooltipData.tooltipElement, {\n\t\tplacement: position as Placement,\n\t\tmiddleware,\n\t\tstrategy: 'fixed' as Strategy, // Fixed positioning works better across contexts\n\t})\n\n\t// Apply position\n\tObject.assign(tooltipData.tooltipElement.style, {\n\t\tleft: `${x}px`,\n\t\ttop: `${y}px`,\n\t\tposition: 'fixed',\n\t})\n\n\t// Position the arrow if it exists\n\tif (showArrow && tooltipData.arrowElement && middlewareData.arrow) {\n\t\tconst { x: arrowX, y: arrowY } = middlewareData.arrow\n\n\t\t// Determine which side the arrow should be on based on placement\n\t\tconst staticSide =\n\t\t\t{\n\t\t\t\ttop: 'bottom',\n\t\t\t\tright: 'left',\n\t\t\t\tbottom: 'top',\n\t\t\t\tleft: 'right',\n\t\t\t}[placement.split('-')[0]] || 'bottom'\n\n\t\t// Position the arrow\n\t\tObject.assign(tooltipData.arrowElement.style, {\n\t\t\tleft: arrowX != null ? `${arrowX}px` : '',\n\t\t\ttop: arrowY != null ? `${arrowY}px` : '',\n\t\t\t[staticSide]: '-4px', // Position the arrow on the correct side\n\t\t\tvisibility: 'visible',\n\t\t})\n\t}\n}\n\nexport const tooltip = directive(TooltipDirective)\n"],"mappings":"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"}
1
+ {"version":3,"file":"tooltip.js","names":[],"sources":["../src/tooltip/tooltip.directive.ts"],"sourcesContent":["import { arrow, autoUpdate, computePosition, flip, offset, Placement, shift, Strategy } from '@floating-ui/dom'\nimport { Directive, directive, ElementPart, ElementPartInfo, PartType } from 'lit/directive.js'\nimport { fromEvent, Subscription } from 'rxjs'\n\n// Store tooltip data for elements\nconst tooltipMap = new WeakMap<\n\tElement,\n\t{\n\t\ttooltipElement: HTMLElement\n\t\tarrowElement?: HTMLElement\n\t\tcleanup?: () => void\n\t\tshowTimeout?: number\n\t\tsubscriptions?: Subscription[]\n\t}\n>()\n\nclass TooltipDirective extends Directive {\n\tconstructor(partInfo: ElementPartInfo) {\n\t\tsuper(partInfo)\n\t\tif (partInfo.type !== PartType.ELEMENT) {\n\t\t\tthrow new Error('The tooltip directive can only be used on elements')\n\t\t}\n\t}\n\n\trender(\n\t\ttext: string,\n\t\toptions: {\n\t\t\tposition?: 'top' | 'right' | 'bottom' | 'left'\n\t\t\tdelay?: number\n\t\t\tshowArrow?: boolean\n\t\t} = {},\n\t) {\n\t\treturn { text, options }\n\t}\n\n\tupdate(part: ElementPart, [text, options = {}]: [string, any]) {\n\t\tconst element = part.element as HTMLElement\n\t\tconst position = options?.position || 'top'\n\t\tconst delay = options?.delay || 300\n\t\tconst showArrow = options?.showArrow !== false // Default to true\n\n\t\t// Get or create tooltip data\n\t\tlet tooltipData = tooltipMap.get(element)\n\n\t\tif (!tooltipData) {\n\t\t\t// Create tooltip element\n\t\t\tconst tooltipElement = document.createElement('div')\n\t\t\ttooltipElement.className = 'schmancy-tooltip'\n\n\t\t\t// Apply styles\n\t\t\tObject.assign(tooltipElement.style, {\n\t\t\t\tposition: 'absolute',\n\t\t\t\tzIndex: '10000',\n\t\t\t\tbackgroundColor: 'var(--schmancy-sys-color-surface-highest, #333)',\n\t\t\t\tcolor: 'var(--schmancy-sys-color-surface-on, white)',\n\t\t\t\tpadding: '8px 12px',\n\t\t\t\tborderRadius: '4px',\n\t\t\t\tfontSize: '14px',\n\t\t\t\tfontWeight: 'normal',\n\t\t\t\tmaxWidth: '300px',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\topacity: '0',\n\t\t\t\ttransition: 'opacity 150ms ease',\n\t\t\t\tboxShadow: 'var(--schmancy-sys-elevation-2)',\n\t\t\t\ttextAlign: 'center',\n\t\t\t\t// Important: start with visibility hidden to avoid flash\n\t\t\t\tvisibility: 'hidden',\n\t\t\t})\n\n\t\t\t// Create arrow element if needed\n\t\t\tlet arrowElement: HTMLElement | undefined\n\t\t\tif (showArrow) {\n\t\t\t\tarrowElement = document.createElement('div')\n\t\t\t\tarrowElement.className = 'schmancy-tooltip-arrow'\n\t\t\t\tObject.assign(arrowElement.style, {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\twidth: '8px',\n\t\t\t\t\theight: '8px',\n\t\t\t\t\tbackground: 'inherit',\n\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\t// We'll rotate this to create an arrow\n\t\t\t\t\ttransform: 'rotate(45deg)',\n\t\t\t\t})\n\t\t\t\ttooltipElement.appendChild(arrowElement)\n\t\t\t}\n\n\t\t\t// Set ARIA attributes\n\t\t\ttooltipElement.setAttribute('role', 'tooltip')\n\n\t\t\t// Generate unique ID\n\t\t\tconst tooltipId = `tooltip-${Math.random().toString(36).slice(2, 9)}`\n\t\t\ttooltipElement.id = tooltipId\n\t\t\telement.setAttribute('aria-describedby', tooltipId)\n\n\t\t\t// Add to document\n\t\t\tdocument.body.appendChild(tooltipElement)\n\n\t\t\t// Create tooltip data\n\t\t\ttooltipData = {\n\t\t\t\ttooltipElement,\n\t\t\t\tarrowElement,\n\t\t\t}\n\n\t\t\ttooltipMap.set(element, tooltipData)\n\n\t\t\t// Define show handler\n\t\t\tconst showTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.showTimeout = window.setTimeout(() => {\n\t\t\t\t\t// Set content\n\t\t\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t\t\t// Add arrow back if it was removed\n\t\t\t\t\tif (showArrow && tooltipData.arrowElement && !tooltipData.tooltipElement.contains(tooltipData.arrowElement)) {\n\t\t\t\t\t\ttooltipData.tooltipElement.appendChild(tooltipData.arrowElement)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Make sure element is visible first\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'visible'\n\n\t\t\t\t\t// Clean up existing positioning\n\t\t\t\t\tif (tooltipData.cleanup) {\n\t\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set up positioning\n\t\t\t\t\ttooltipData.cleanup = autoUpdate(element, tooltipData.tooltipElement, () =>\n\t\t\t\t\t\tupdatePosition(element, tooltipData, position, showArrow),\n\t\t\t\t\t)\n\n\t\t\t\t\t// Make opacity 1 after positioning is set up\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\ttooltipData.tooltipElement.style.opacity = '1'\n\t\t\t\t\t})\n\t\t\t\t}, delay)\n\t\t\t}\n\n\t\t\t// Define hide handler\n\t\t\tconst hideTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.tooltipElement.style.opacity = '0'\n\n\t\t\t\t// Set visibility to hidden after fade out\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'hidden'\n\t\t\t\t}, 150) // Match transition time\n\n\t\t\t\t// Clean up positioning\n\t\t\t\tif (tooltipData?.cleanup) {\n\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\ttooltipData.cleanup = undefined\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add event listeners using fromEvent\n\t\t\tconst subscriptions = [\n\t\t\t\tfromEvent(element, 'mouseenter').subscribe(showTooltip),\n\t\t\t\tfromEvent(element, 'focus').subscribe(showTooltip),\n\t\t\t\tfromEvent(element, 'mouseleave').subscribe(hideTooltip),\n\t\t\t\tfromEvent(element, 'blur').subscribe(hideTooltip),\n\t\t\t\tfromEvent<KeyboardEvent>(document, 'keydown').subscribe((e: KeyboardEvent) => {\n\t\t\t\t\tif (e.key === 'Escape' && tooltipData?.tooltipElement.style.opacity === '1') {\n\t\t\t\t\t\thideTooltip()\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t]\n\n\t\t\t// Store subscriptions for cleanup\n\t\t\ttooltipData.subscriptions = subscriptions\n\t\t} else {\n\t\t\t// Update content for existing tooltip\n\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t// Update arrow visibility if needed\n\t\t\tif (tooltipData.arrowElement) {\n\t\t\t\ttooltipData.arrowElement.style.visibility = showArrow ? 'visible' : 'hidden'\n\t\t\t}\n\t\t}\n\n\t\treturn { text, options }\n\t}\n\n\tdisconnected(part: ElementPart) {\n\t\tconst element = part.element\n\t\tconst tooltipData = tooltipMap.get(element)\n\n\t\tif (tooltipData) {\n\t\t\t// Clean up subscriptions\n\t\t\tif (tooltipData.subscriptions) {\n\t\t\t\ttooltipData.subscriptions.forEach(subscription => subscription.unsubscribe())\n\t\t\t}\n\n\t\t\t// Clean up timeouts and positioning\n\t\t\tif (tooltipData.showTimeout) {\n\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t}\n\n\t\t\tif (tooltipData.cleanup) {\n\t\t\t\ttooltipData.cleanup()\n\t\t\t}\n\n\t\t\t// Remove tooltip element\n\t\t\tif (document.body.contains(tooltipData.tooltipElement)) {\n\t\t\t\tdocument.body.removeChild(tooltipData.tooltipElement)\n\t\t\t}\n\n\t\t\t// Remove ARIA attributes\n\t\t\tif (element.hasAttribute('aria-describedby')) {\n\t\t\t\telement.removeAttribute('aria-describedby')\n\t\t\t}\n\n\t\t\t// Remove from WeakMap\n\t\t\ttooltipMap.delete(element)\n\t\t}\n\t}\n}\n\n// Separate positioning function for clarity and reuse\nasync function updatePosition(element: HTMLElement, tooltipData: any, position: string, showArrow: boolean) {\n\t// Use floating-ui to compute position\n\tconst middleware = [\n\t\toffset(8), // Distance from the element\n\t\tflip({\n\t\t\tfallbackPlacements: ['top', 'right', 'bottom', 'left'].filter(p => p !== position) as Placement[],\n\t\t\tpadding: 5, // How far from the edges before flipping\n\t\t}),\n\t\tshift({ padding: 5 }), // Keep it within viewport bounds\n\t]\n\n\t// Add arrow middleware if needed\n\tif (showArrow && tooltipData.arrowElement) {\n\t\tmiddleware.push(arrow({ element: tooltipData.arrowElement }))\n\t}\n\n\tconst { x, y, placement, middlewareData } = await computePosition(element, tooltipData.tooltipElement, {\n\t\tplacement: position as Placement,\n\t\tmiddleware,\n\t\tstrategy: 'fixed' as Strategy, // Fixed positioning works better across contexts\n\t})\n\n\t// Apply position\n\tObject.assign(tooltipData.tooltipElement.style, {\n\t\tleft: `${x}px`,\n\t\ttop: `${y}px`,\n\t\tposition: 'fixed',\n\t})\n\n\t// Position the arrow if it exists\n\tif (showArrow && tooltipData.arrowElement && middlewareData.arrow) {\n\t\tconst { x: arrowX, y: arrowY } = middlewareData.arrow\n\n\t\t// Determine which side the arrow should be on based on placement\n\t\tconst staticSide =\n\t\t\t{\n\t\t\t\ttop: 'bottom',\n\t\t\t\tright: 'left',\n\t\t\t\tbottom: 'top',\n\t\t\t\tleft: 'right',\n\t\t\t}[placement.split('-')[0]] || 'bottom'\n\n\t\t// Position the arrow\n\t\tObject.assign(tooltipData.arrowElement.style, {\n\t\t\tleft: arrowX != null ? `${arrowX}px` : '',\n\t\t\ttop: arrowY != null ? `${arrowY}px` : '',\n\t\t\t[staticSide]: '-4px', // Position the arrow on the correct side\n\t\t\tvisibility: 'visible',\n\t\t})\n\t}\n}\n\nexport const tooltip = directive(TooltipDirective)\n"],"mappings":"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"}
package/dist/tree.cjs CHANGED
@@ -1,17 +1,17 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-PS1u0j1B.cjs`);require(`./mixins-BoMURWag.cjs`);let t=require(`rxjs`),n=require(`lit/decorators.js`),r=require(`lit`);var i=class extends e.t{constructor(...e){super(...e),this.open=!1,this.a11yId=`schmancy-tree-${Math.random().toString(36).slice(2,10)}`,this.internals=(()=>{try{return this.attachInternals()}catch{return}})()}static{this.styles=[r.css`
2
- :host {
3
- display: block;
4
- position: relative;
5
- background-color: initial;
6
- }
7
- ::slotted([slot='root']) {
8
- width: 100%;
9
- text-align: left;
10
- }
11
- ::slotted([slot='root'] + *) {
12
- margin-top: 0.5rem;
13
- }
14
- `]}get contentId(){return`${this.a11yId}-content`}updated(e){super.updated?.(e),e.has(`open`)&&(this.open?this.internals?.states.add(`open`):this.internals?.states.delete(`open`))}firstUpdated(){this.open||(this.defaultSlot.hidden=!0),(0,t.merge)((0,t.fromEvent)(this.toggler,`click`).pipe((0,t.takeUntil)(this.disconnecting),(0,t.tap)(e=>{e.preventDefault(),e.stopPropagation(),this.dispatchEvent(new CustomEvent(`toggle`,{bubbles:!1,composed:!0}))})),(0,t.fromEvent)(this.chevron,`click`)).pipe((0,t.switchMap)(()=>{let e=this.open?180:0,n=this.open?0:180,r=this.chevron.animate([{transform:`rotate(${e}deg)`},{transform:`rotate(${n}deg)`}],{duration:150,easing:`ease-in`,fill:`forwards`});this.open||(this.defaultSlot.hidden=!1);let i=+!!this.open,a=+!this.open,o=this.defaultSlot.animate([{opacity:i},{opacity:a}],{duration:150,easing:`ease-out`,fill:`forwards`});return o.onfinish=()=>{this.open?this.defaultSlot.hidden=!0:(this.defaultSlot.style.height=`auto`,this.defaultSlot.style.opacity=`1`)},(0,t.zip)((0,t.fromEvent)(r,`finish`),(0,t.fromEvent)(o,`finish`)).pipe((0,t.takeUntil)(this.disconnecting))}),(0,t.tap)(()=>{this.open=!this.open}),(0,t.takeUntil)(this.disconnecting)).subscribe()}render(){return r.html`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-CeKrBW2j.cjs`);require(`./mixins-Cjn20BQH.cjs`);let t=require(`rxjs`),n=require(`lit/decorators.js`),r=require(`lit`);var i=class extends e.t{constructor(...e){super(...e),this.open=!1,this.a11yId=`schmancy-tree-${Math.random().toString(36).slice(2,10)}`,this.internals=(()=>{try{return this.attachInternals()}catch{return}})()}static{this.styles=[r.css`
2
+ :host {
3
+ display: block;
4
+ position: relative;
5
+ background-color: initial;
6
+ }
7
+ ::slotted([slot='root']) {
8
+ width: 100%;
9
+ text-align: left;
10
+ }
11
+ ::slotted([slot='root'] + *) {
12
+ margin-top: 0.5rem;
13
+ }
14
+ `]}get contentId(){return`${this.a11yId}-content`}updated(e){super.updated?.(e),e.has(`open`)&&(this.open?this.internals?.states.add(`open`):this.internals?.states.delete(`open`))}firstUpdated(){this.open||(this.defaultSlot.hidden=!0),(0,t.merge)((0,t.fromEvent)(this.toggler,`click`).pipe((0,t.takeUntil)(this.disconnecting),(0,t.tap)(e=>{e.preventDefault(),e.stopPropagation(),this.dispatchEvent(new CustomEvent(`toggle`,{bubbles:!1,composed:!0}))})),(0,t.fromEvent)(this.chevron,`click`)).pipe((0,t.switchMap)(()=>{let e=this.open?180:0,n=this.open?0:180,r=this.chevron.animate([{transform:`rotate(${e}deg)`},{transform:`rotate(${n}deg)`}],{duration:150,easing:`ease-in`,fill:`forwards`});this.open||(this.defaultSlot.hidden=!1);let i=+!!this.open,a=+!this.open,o=this.defaultSlot.animate([{opacity:i},{opacity:a}],{duration:150,easing:`ease-out`,fill:`forwards`});return o.onfinish=()=>{this.open?this.defaultSlot.hidden=!0:(this.defaultSlot.style.height=`auto`,this.defaultSlot.style.opacity=`1`)},(0,t.zip)((0,t.fromEvent)(r,`finish`),(0,t.fromEvent)(o,`finish`)).pipe((0,t.takeUntil)(this.disconnecting))}),(0,t.tap)(()=>{this.open=!this.open}),(0,t.takeUntil)(this.disconnecting)).subscribe()}render(){return r.html`
15
15
  <div class="flex content-center items-center justify-between">
16
16
  <!-- Root toggler content -->
17
17
  <slot id="toggler" name="root"></slot>